СПОСОБ КОДИРОВАНИЯ КОЭФФИЦИЕНТОВ, КОДЕР, ДЕКОДЕР И КОМПЬЮТЕРНЫЙ НОСИТЕЛЬ ДАННЫХ Российский патент 2024 года по МПК H04N19/46 H04N19/91 H04N19/13 H04N19/176 

Описание патента на изобретение RU2831992C2

Область техники, к которой относится изобретение

[1] Варианты осуществления настоящего изобретения относятся к области технологии кодирования видео, и в частности к способу кодирования коэффициентов, кодеру, декодеру и компьютерному носителю данных.

Предпосылки создания изобретения

[2] Области, связанные с компьютерным зрением, привлекают все больше внимания, поскольку люди требуют более высокого качества отображения видео. В последние годы технологии обработки изображений успешно применяют во всех сферах жизни. В процессе кодирования видеоизображения на стороне кодирования данные изображения, подлежащие кодированию, преобразуют и квантуют, а затем подвергают кодированию сжатия с помощью элемента кодирования энтропии, а битовый поток, сгенерированный из кодирования энтропии, будет передан на сторону декодирования. На стороне декодирования битовый поток анализируют, а затем выполняют обратное квантование и обратное преобразование, так что исходные входные данные изображения могут быть восстановлены.

[3] В настоящее время по сравнению с кодированием видео с низкой битовой глубиной, низким качеством и низкой битовой скоростью (называемым «обычным видео»), кодирование видео с высокой битовой глубиной, высоким качеством и высокой битовой скоростью (называемым «видео с тройной высокой четкостью») обычно требует кодирования большего количества больших коэффициентов. В этом случае использование существующих соответствующих решений для видео с тройной высокой четкостью может привести к большому потреблению ресурсов и нерациональному их использованию и даже повлиять на скорость и пропускную способность кодирования.

Сущность изобретения

[4] В вариантах осуществления настоящего изобретения предоставлены способ кодирования коэффициентов, кодер, декодер и компьютерный носитель данных, которые могут повысить пропускную способность и скорость кодирования при кодировании коэффициентов, одновременно повышая эффективность сжатия в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь.

[5] Технические решения вариантов осуществления настоящего изобретения могут быть достигнуты следующим образом.

[6] В первом аспекте в вариантах осуществления настоящего изобретения предусмотрен способ декодирования коэффициентов, который применяют к декодеру и который включает следующее. Анализируют битовый поток с получением флага, относящегося к видео. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, битовый поток анализируют с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента. Когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока, положение последнего значимого коэффициента определяют путем вычисления с использованием информации о координате последнего значимого коэффициента. Согласно заданному порядку сканирования все коэффициенты перед положением последнего значимого коэффициента декодируют для определения коэффициентов текущего блока.

[7] Во втором аспекте в вариантах осуществления настоящего изобретения предусмотрен способ кодирования коэффициентов, который применяют к кодеру и который включает следующее. Определяют флаг, относящийся к видео, и положение последнего значимого коэффициента. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, определяют флаг обратного положения последнего значимого коэффициента. Информацию о координате последнего значимого коэффициента определяют согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента кодируют согласно заданному порядку сканирования, а битовую информацию, полученную с помощью кодирования, флаг, относящийся к видео, и информацию о координате последнего значимого коэффициента передают в битовый поток.

[8] В третьем аспекте в вариантах осуществления настоящего изобретения предусмотрен кодер. Кодер содержит первый узел определения и узел кодирования. Первый узел определения выполнен с возможностью определения флага, относящегося к видео, и положения последнего значимого коэффициента и определения флага обратного положения последнего значимого коэффициента, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию. Первый узел определения дополнительно выполнен с возможностью определения информации о координате последнего значимого коэффициента согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента. Узел кодирования выполнен с возможностью кодирования всех коэффициентов перед положением последнего значимого коэффициента согласно заданному порядку сканирования и передачи битовой информации, полученной с помощью кодирования, флага, относящегося к видео, и информации о координате последнего значимого коэффициента в битовый поток.

[9] В четвертом аспекте в вариантах осуществления настоящего изобретения предусмотрен кодер. Кодер содержит первое запоминающее устройство и первый процессор. Первое запоминающее устройство выполнено с возможностью хранения компьютерной программы, выполняемой первым процессором. Первый процессор выполнен с возможностью выполнения способа второго аспекта при выполнении компьютерной программы.

[10] В пятом аспекте в вариантах осуществления настоящего изобретения предусмотрен декодер. Декодер содержит узел анализа и второй узел определения. Узел анализа выполнен с возможностью анализа битового потока с получением флага, относящегося к видео, и анализа битового потока с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию. Второй узел определения выполнен с возможностью определения положения последнего значимого коэффициента путем вычисления с помощью информации о координате последнего значимого коэффициента, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока. Узел анализа дополнительно выполнен с возможностью декодирования согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.

[11] В шестом аспекте в вариантах осуществления настоящего изобретения предусмотрен декодер. Декодер содержит второе запоминающее устройство и второй процессор. Второе запоминающее устройство выполнено с возможностью хранения компьютерной программы, выполняемой вторым процессором. Второй процессор выполнен с возможностью выполнения способа по первому аспекту при выполнении компьютерной программы.

[12] В седьмом аспекте в вариантах осуществления настоящего изобретения предусмотрен компьютерный носитель данных. Компьютерный носитель данных хранит компьютерную программу, которая при выполнении реализует способ по первому аспекту или способ по второму аспекту.

[13] В вариантах осуществления настоящего изобретения предоставлены способ кодирования коэффициентов, кодер, декодер и компьютерный носитель данных. В кодере определяют флаг, относящийся к видео, и положение последнего значимого коэффициента. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, определяют флаг обратного положения последнего значимого коэффициента. Информацию о координате последнего значимого коэффициента определяют согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента кодируют согласно заданному порядку сканирования, а битовую информацию, полученную с помощью кодирования, флаг, относящийся к видео, и информацию о координате последнего значимого коэффициента передают в битовый поток. В декодере анализируют битовый поток с получением флага, относящегося к видео. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, битовый поток анализируют с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента. Когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока, положение последнего значимого коэффициента определяют путем вычисления с использованием информации о координате последнего значимого коэффициента. Согласно заданному порядку сканирования все коэффициенты перед положением последнего значимого коэффициента декодируют для определения коэффициентов текущего блока. Таким образом, в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, таких как элементы синтаксиса о положении последнего значимого коэффициента, флаги кодированного подблока и т. д., или дополнительное выполнение преобразования координаты в случае, когда значения координат последнего значимого коэффициента слишком велики, может быть уменьшено потребление ресурсов, вызванное кодированием в битовом потоке, и, таким образом, может быть улучшена пропускная способность и скорость кодирования коэффициентов. В дополнение эффективность сжатия также может быть повышена, поскольку уменьшенные или устраненные элементы синтаксиса оказывают меньшее влияние на кодирование видео при высокой битовой глубине, высокой битовой скорости, высоком качестве или сжатии без потерь.

Краткое описание графических материалов

[14] На фиг. 1 представлено схематическое изображение применения структуры кодирования, представленной в известном уровне техники.

[15] На фиг. 2 представлено схематическое изображение, иллюстрирующее соотношение положения между текущим коэффициентом и соседними коэффициентами, представленными в известном уровне техники.

[16] На фиг. 3 представлена схематическая блок-схема процесса арифметического декодирования для двоичного числа, представленного в известном уровне техники.

[17] На фиг. 4 представлена схематическая блок-схема процесса арифметического декодирования для двоичного решения, представленного в известном уровне техники.

[18] На фиг. 5 представлена схематическая блок-схема перенормировки движка арифметического декодирования, представленного в известном уровне техники.

[19] На фиг. 6 представлена схематическая блок-схема процесса обходного декодирования, представленного в известном уровне техники.

[20] На фиг. 7 представлено схематическое изображение, иллюстрирующее соотношение положения между областью, которая может иметь значимые коэффициенты, и областью нулевого вывода, представленной в известном уровне техники.

[21] На фиг. 8A представлено схематическое изображение состава системы кодера, представленного в вариантах осуществления настоящего изобретения.

[22] На фиг. 8B представлено схематическое изображение состава системы декодера, представленного в вариантах осуществления настоящего изобретения.

[23] На фиг. 9 представлена схематическая блок-схема способа декодирования коэффициента, предоставленного в вариантах осуществления настоящего изобретения.

[24] На фиг. 10A представлено схематическое изображение положения последнего значимого коэффициента относительно верхнего левого угла текущего блока, представленного в вариантах осуществления настоящего изобретения.

[25] На фиг. 10B представлено схематическое изображение положения последнего значимого коэффициента относительно нижнего правого угла текущего блока, представленного в вариантах осуществления настоящего изобретения.

[26] На фиг. 11 представлена схематическая блок-схема способа кодирования коэффициента, предоставленного в вариантах осуществления настоящего изобретения.

[27] На фиг. 12 представлено схематическое структурное изображение кодера, предоставленного в вариантах осуществления настоящего изобретения.

[28] На фиг. 13 представлено схематическое изображение конкретной структуры аппаратного обеспечения кодера, представленной в вариантах осуществления настоящего изобретения.

[29] На фиг. 14 представлено схематическое структурное изображение декодера, предоставленного в вариантах осуществления настоящего изобретения.

[30] На фиг. 15 представлено схематическое изображение конкретной структуры аппаратного обеспечения декодера, представленного в вариантах осуществления настоящего изобретения.

Подробное описание

[31] Чтобы иметь возможность более подробно понимать признаки и техническое содержание вариантов осуществления настоящего изобретения, далее приведено подробное описание вариантов осуществления настоящего изобретения в сочетании с прилагаемыми графическими материалами. Прилагаемые графические материалы приложены только в иллюстративных целях и не предназначены для ограничения вариантов осуществления настоящего изобретения.

[32] Если не определено иное, все используемые в данном документе технические и научные термины имеют то же значение, которое обычно понимается специалистами в данной области техники. Термины, используемые в данном документе, предназначены только для описания вариантов осуществления настоящего изобретения и не предназначены для ограничения настоящего изобретения.

[33] В нижеследующем описании «некоторые варианты осуществления», упомянутые в данном документе, описывают поднабор всех возможных вариантов осуществления. Следует понимать, что «некоторые варианты осуществления» могут быть одним и тем же поднабором или другим поднабором всех возможных вариантов осуществления и могут быть объединены друг с другом в случае отсутствия противоречий. Также необходимо отметить, что термины «первый/второй/третий» в вариантах осуществления настоящего изобретения используют только для различения сходных объектов и не представляют конкретный порядок для объектов. Следует понимать, что «первый/второй/третий» могут быть взаимозаменяемы в определенном порядке, когда это разрешено, и, следовательно, варианты осуществления настоящего изобретения, описанные в данном документе, могут быть реализованы в порядке, отличном от того, который проиллюстрирован или описан в данном документе.

[34] В видеоизображении первый компонент цвета, второй компонент цвета и третий компонент цвета обычно используют для характеризации блока кодирования (CB). Три компонента цвета представляют собой компонент яркости, синий компонент цветности и красный компонент цветности соответственно. В частности, компонент яркости обычно представлен символом Y, синий компонент цветности обычно представлен символом Cb или U и красный компонент цветности обычно представлен символом Cr или V. В этом случае видеоизображение может быть представлено в формате YCbCr или в формате YUV.

[35] Прежде чем варианты осуществления настоящего изобретения будут описаны более подробно, поясняются термины и терминология, используемые в вариантах осуществления настоящего изобретения, и термины и терминология, используемые в вариантах осуществления настоящего изобретения, применимы к следующим пояснениям:

экспертная группа по движущемуся изображению (MPEG)

международная организация по стандартизации (ISO)

международная электротехническая комиссия (IEC)

совместная команда по исследованию видео (JVET)

альянс открытых средств массовой информации (AOM)

стандарт кодирования видео следующего поколения H.266/универсальное кодирование видео (VVC)

тестовая платформа эталонного программного обеспечения для универсального кодирования видео (VVC Test Model, VTM)

стандарт по аудио- и видеоинформации (AVS)

высокопроизводительная модель (HPM) для AVS

регулируемое двоичное арифметическое кодирование на основе контекста (CABAC)

регулярное остаточное кодирование (RRC)

пропуск преобразования остаточного кодирования (TSRC)

[36] Следует понимать, что в настоящее время универсальные стандарты кодирования видео (такие как VVC) обычно используют структуры гибридного кодирования на основе блоков. Каждое изображение видео разбито на самые большие элементы кодирования (LCU), которые представляют собой квадраты равного размера (например, 128×128, 64×64 и т. д.). Каждый LCU также может быть разбит на прямоугольные элементы кодирования (CU) согласно определенному правилу. Более того, CU может быть разбит на более мелкие элементы предсказания (PU) или элементы преобразования (TU) и т.д. В частности, как проиллюстрировано на фиг. 1, структура гибридного кодирования может включать модули для таких задач, как предсказание, преобразование, квантование, кодирование энтропии и фильтр в контуре. Модуль предсказания может включать внутреннее предсказание и промежуточное предсказание, а промежуточное предсказание может включать оценку движения и компенсацию движения. Поскольку существует сильная корреляция между соседними выборками в изображении в видео, использование внутреннего предсказания при кодировании видео может устранить пространственную избыточность между соседними выборками. Более того, поскольку также существует сильное сходство между соседними изображениями в видео, использование промежуточного предсказания при кодировании видео может устранить временную избыточность между соседними изображениями. Таким образом, эффективность кодирования может быть повышена.

[37] Основной процесс кодера видео заключается в следующем. В кодере изображение разбивается на блоки. Внутреннее предсказание или промежуточное предсказание применяют к текущему блоку для генерирования блока предсказания текущего блока. Блок предсказания вычитают из первоначального блока текущего блока для получения остаточного блока. Затем остаточный блок подвергают преобразованию и квантованию для генерирования матрицы коэффициентов квантования. Матрицу коэффициентов квантования энтропийно кодируют и выводят в битовый поток. В декодере внутреннее предсказание или промежуточное предсказание применяют к текущему блоку для генерирования блока предсказания текущего блока. В дополнение битовый поток декодируют для получения матрицы коэффициентов квантования. Матрицу коэффициентов квантования подвергают обратному квантованию и обратному преобразованию для получения остаточного блока, который добавляют к блоку предсказания для получения восстановленного блока. Восстановленные блоки образуют восстановленное изображение. Восстановленное изображение фильтруют в контуре на основе изображения или блока для получения декодированного изображения. Кодеру также требуются подобные операции, что и декодеру, для получения декодированного изображения. Декодированное изображение может быть использовано в качестве опорного изображения при промежуточном предсказании для последующих изображений. Информацию о разбитии блока, а также информацию о режиме или информация о параметре (например, для предсказания, преобразования, квантования, кодирования энтропии и фильтра в контуре), определенные кодером, при необходимости выводят в битовый поток. Путем анализа и исследования на основе доступной информации декодер определяет ту же информацию о разбитии блока и информацию о режиме или информацию о параметре (например, для предсказания, преобразования, квантования, кодирования энтропии и фильтра в контуре), что и кодер, тем самым обеспечивая то, что декодированное изображение, полученное кодером, является таким же, что и декодированное изображение, полученное декодером. Декодированное изображение, полученное с помощью кодера, также обычно называется восстановленным изображением. Текущий блок может быть разбит на PU во время предсказания. Текущий блок может быть разбит на TU во время преобразования. Разбитие PU и разбитие TU могут быть разными. Вышеописанное является основным процессом кодера видео при структуре гибридного кодирования на основе блоков. С развитием технологии некоторые модули или операции структуры или процесса могут быть оптимизированы. Варианты осуществления настоящего изобретения применимы к основному процессу кодера видео при структуре гибридного кодирования на основе блоков, но не ограничены структурой и процессом.

[38] Текущий блок может быть текущим CU, текущим PU, текущим TU и т. д.

[39] Информацию о разбитии блока, информацию о режиме или информацию о параметре для предсказания, преобразования и квантования, коэффициенты и т. п. передают в битовый поток посредством кодирования энтропии. Предполагая, что вероятности разных элементов различны, более короткое кодовое слово назначают элементу с большей вероятностью появления, а более длинное кодовое слово назначают элементу с меньшей вероятностью появления, так что может быть получена более высокая эффективность кодирования, чем при кодировании фиксированной длины. Однако, если вероятности разных элементов близки или по существу одинаковы, кодирование энтропии приводит к ограниченному сжатию. CABAC представляет собой обычный способ кодирования энтропии, который используют как в HEVC, так и в VVC для кодирования энтропии. CABAC может повысить эффективность сжатия, используя контекстную модель. Однако использование и обновление контекстной модели приводит к более сложным операциям. CABAC имеет обходной режим, в котором нет необходимости использовать или обновлять контекстную модель, и, таким образом, может быть достигнута более высокая пропускная способность. В вариантах осуществления настоящего изобретения режим, требующий использование и обновление контекстной модели в CABAC, может называться контекстным режимом.

[40] Обычно контекстная модель должна быть определена согласно указанному способу. При вызове указанного процесса арифметического декодирования для двоичного решения в качестве входных данных могут быть использованы параметры контекстной модели. При выборе контекстной модели также существует соотношение зависимости между соседними коэффициентами. Например, на фиг. 2 представлено схематическое изображение, иллюстрирующее соотношение положения между текущим коэффициентом и соседними коэффициентами, представленными в известном уровне техники. На фиг. 2 блок в черном указывает на текущий коэффициент, а блоки с линиями сетки указывают на соседние коэффициенты. Как показано на фиг. 2, то, какая контекстная модель выбрана для sig_coeff_flag текущего коэффициента, необходимо определить согласно информации о пяти соседних коэффициентах справа, снизу и снизу справа от текущего коэффициента. Как можно увидеть на фиг. 2, операции для контекстного режима являются более сложными, чем операции для обходного режима, и существует зависимость между соседними коэффициентами.

[41] Для движка арифметического кодирования CABAC, если используют контекстный режим, необходимо вызвать указанный процесс арифметического декодирования для двоичного решения, который включает процесс перехода состояния, а именно обновление контекстной модели. Во время процесса арифметического декодирования для двоичного решения вызывается процесс перенормировки движка арифметического декодирования. Если используют обходной режим, необходимо вызвать процесс обходного декодирования.

[42] CABAC, используемый в VVC, представлен в качестве примера следующим образом.

[43] Для движка арифметического кодирования CABAC входными данными для процесса арифметического декодирования являются ctxTable, ctxIdx, bypassFlag и переменные состояния ivlCurrRange и ivlOffset движка арифметического декодирования, а выходом процесса арифметического декодирования является значение bin.

[44] ctxTable представляет собой таблицу, используемую при выборе контекстного режима. ctxIdx представляет собой индекс контекстной модели.

[45] На фиг. 3 представлена схематическая блок-схема процесса арифметического декодирования для двоичного числа, представленного в известном уровне техники. Как показано на фиг. 3, чтобы декодировать значение bin, таблицу индексов контекста ctxTable, ctxIdx, bypassFlag передают в качестве входных данных процессу арифметического декодирования DecodeBin (ctxTable, ctxIdx, bypassFlag), который задан следующим образом:

если bypassFlag равен 1, то вызывается процесс обходного декодирования DecodeBypass().

В противном случае, если bypassFlag равен 0, ctxTable равен 0, а ctxIdx равен 0, то вызывается DecodeTerminate().

В противном случае (bypassFlag равен 0, а ctxIdx не равен 0) вызывается указанный процесс арифметического декодирования для двоичного решения DecodeDecision(ctxTable, ctxIdx).

[46] Дополнительно, входными данными процесса арифметического декодирования для двоичного решения являются переменные ctxTable, ctxIdx, ivlCurrRange и ivlOffset, а выходными данными процесса арифметического декодирования являются декодированное значение binVal и обновленные переменные ivlCurrRange и ivlOffset.

[47] На фиг. 4 представлена схематическая блок-схема процесса арифметического декодирования для двоичного решения, представленного в известном уровне техники. Как показано на фиг. 4, pStateIdx0 и pStateIdx1 представляют собой два состояния текущей контекстной модели.

[48] (1) Значение переменной ivlLpsRange выводят следующим образом:

При заданном текущем значении ivlCurrRange, переменную qRangeIdx выводят следующим образом:

qRangeIdx=ivlCurrRange >>5.

При заданных qRangeIdx, pStateIdx0 и pStateIdx1 связанные с ctxTable и ctxIdx, valMPS и ivlLpsRange, выводят следующим образом:

pState=pStateIdx1+16×pStateIdx0;

valMps=pState >>14;

ivlLpsRange=(qRangeIdx×((valMps ? 32767-pState : pState)>>9)>>1)+4.

[49] (2) Переменную ivlCurrRange устанавливают равной ivlCurrRange - ivlLpsRange и применяют следующее:

Если ivlOffset больше или равно ivlCurrRange, тогда значение переменной binVal устанавливают равным 1-valMPS, ivlOffset уменьшается на ivlCurrRange, а ivlCurrRange устанавливают равным ivlLpsRange.

В противном случае, (ivlOffset меньше, чем ivlCurrRange) значение переменной binVal устанавливают равным valMPS.

[50] При заданном значении binVal выполняют переход указанного состояния. В зависимости от текущего значения ivlCurrRange может быть выполнена указанная перенормировка.

[51] Кроме того, входными данными для процесса перехода состояния являются текущие pStateIdx0 и pStateIdx1, а также декодированное значение binVal. Выходными данными процесса являются обновленные pStateIdx0 и pStateIdx1 контекстных переменных, связанных с ctxTable и ctxIdx. Переменные shift0 и shift1 являются производными от shiftIdx. Соответствие между shiftIdx и ctxTable, и ctxIdx указывают следующим образом:

shift0=(shiftIdx >>2)+2;

shift1=(shiftIdx & 3)+3+shift0.

[52] В зависимости от декодированного значения binVal обновление двух переменных pStateIdx0 и pStateIdx1, связанных с ctxTable и ctxIdx, происходит следующим образом:

pStateIdx0=pStateIdx0-(pStateIdx0 >>shift0)+(1023×binVal >>shift0);

pStateIdx1=pStateIdx1-(pStateIdx1>>shift1)+(16383×binVal >>shift1).

[53] Кроме того, входными данными для процесса перенормировки движка арифметического декодирования являются биты из данных фрагмента и переменные ivlCurrRange и ivlOffset. Выходными данными процесса являются обновленные переменные ivlCurrRange и ivlOffset.

[54] На фиг. 5 представлена схематическая блок-схема перенормировки движка арифметического декодирования, представленного в известном уровне техники. Как показано на фиг. 5, текущее значение ivlCurrRange сначала сравнивают с 256, а последующие операции выполняют следующим образом:

Если ivlCurrRange больше или равно 256, перенормировка не требуется и процесс RenormD завершается.

В противном случае (ivlCurrRange меньше 256) вводят контур перенормировки. Внутри этого контура значение ivlCurrRange удваивается, т. е. сдвигается влево на 1. Значение ivlOffset удваивается, т. е. сдвигается влево на 1. Единичный бит сдвигается в ivlOffset, используя read_bits (1).

[55] Битовый поток не должен содержать данных, в результате которых значение ivlOffset будет больше или равно ivlCurrRange по завершении этого процесса.

[56] Кроме того, входными данными для процесса обходного декодирования для двоичных решений являются биты из данных фрагмента и переменные ivlCurrRange и ivlOffset. Выходными данными этого процесса являются обновленная переменная ivlOffset и декодированное значение binVal.

[57] Процесс обходного декодирования вызывается, когда bypassFlag равен 1. На фиг. 6 представлена схематическая блок-схема процесса обходного декодирования, представленного в известном уровне техники. Как показано на фиг. 6, сначала значение ivlOffset удваивается, т. е. сдвигается влево на 1, а единичный бит сдвигается в ivlOffset, используя read_bits(1). Затем значение ivlOffset сравнивают со значением ivlCurrRange, а последующие этапы выполняют следующим образом:

если ivlOffset больше или равно ivlCurrRange, значение binVal устанавливают равным 1, ivlOffset уменьшается на ivlCurrRange.

В противном случае, (ivlOffset меньше, чем ivlCurrRange) binVal устанавливают равным 0.

[58] Битовый поток не должен содержать данных, в результате которых значение ivlOffset будет больше или равно ivlCurrRange по завершении этого процесса.

[59] Следует также понимать, что в текущих стандартах кодирования видео для остатков обычно поддерживается одно или более преобразований и пропусков преобразования. Преобразования включают дискретное косинусное преобразование (DCT) и т. д. Преобразованный остаточный блок обычно проявляет определенные характеристики после преобразования (и квантования). Например, после некоторых преобразований (и квантования), поскольку энергия в основном сконцентрирована в низкочастотной области, коэффициенты в верхней левой области относительно велики, а коэффициенты в нижней правой области относительно малы или даже равны 0. Для пропуска преобразования преобразование не выполняют. Шаблон распределения коэффициентов после пропуска преобразования отличается от такового коэффициентов после преобразования, так что могут быть использованы разные способы кодирования коэффициентов. Например, в VVC RRC используют для коэффициентов после пропуска преобразования, а TSRC используют для коэффициентов после пропуска преобразования.

[60] Для общих преобразований, таких как преобразование DCT, в преобразованном блоке частоты увеличиваются слева направо и сверху вниз. Верхний левый угол представляет более низкую частоту, а нижний правый угол представляет более высокую частоту. Человеческие глаза более чувствительны к низкочастотной информации и менее чувствительны к высокочастотной информации. С этим свойством интенсивная обработка или удаление некоторой высокочастотной информации оказывает меньшее визуальное воздействие. Некоторые технологии, такие как нулевой вывод, могут привести к тому, что некоторая высокочастотная информация будет равна 0. Например, для блока размером 64×64 коэффициенты в положениях с горизонтальными координатами, большими или равными 32, или с вертикальными координатами, большими или равными 32, принудительно равны 0. Вышеописанное является только простым примером и могут существовать более сложные способы получения диапазона нулевого вывода, которые не описаны в данном документе. Как показано на фиг. 7, ненулевые (или называемые значимыми) коэффициенты могут существовать в верхнем левом углу (а именно область, которая возможно имеет значимые коэффициенты), а все коэффициенты в правом нижнем углу устанавливают равными нулю (а именно область нулевого вывода). Таким образом, для последующего кодирования коэффициентов не требуется кодировать коэффициенты области нулевого вывода, поскольку коэффициенты должны быть равны 0.

[61] Кроме того, поскольку распределение коэффициентов показывает характеристику, заключающуюся в том, что коэффициенты в верхнем левом углу больше, а многие коэффициенты в правом нижнем углу равны 0 после преобразования остатков (и квантования) в обычном видео, во время кодирования коэффициентов обычно используют некоторые способы для кодирования коэффициентов в пределах определенного диапазона верхнего левого угла, а не для кодирования коэффициентов в пределах определенного диапазона нижнего правого угла (по умолчанию эти коэффициенты равны 0). Один из способов заключается в том, чтобы при кодировании коэффициентов блока сначала определить положение последнего значимого коэффициента блока в порядке сканирования. После определения этого положения все коэффициенты, следующие за положением последнего значимого коэффициента в порядке сканирования, считаются равными 0, то есть кодирование не требуется. Необходимо закодировать только последний значимый коэффициент и его предыдущие коэффициенты. Например, в VVC положение последнего значимого коэффициента (LastSignificantCoeffX, LastSignificantCoeffY) определяют с использованием last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix и last_sig_coeff_y_suffix.

[62] (a) last_sig_coeff_x_prefix указывает префикс горизонтальной координаты (или столбца) последнего значимого коэффициента в порядке сканирования в пределах текущего блока. Значение last_sig_coeff_x_prefix должно быть в диапазоне от 0 до ( log2ZoTbWidth << 1 ) - 1 включительно.

[63] Если last_sig_coeff_x_prefix не присутствует, тогда last_sig_coeff_x_prefix равен 0.

[64] (b) last_sig_coeff_y_prefix указывает префикс вертикальной координаты (или строки) последнего значимого коэффициента в порядке сканирования в пределах текущего блока. Значение last_sig_coeff_y_prefix должно быть в диапазоне от 0 до ( log2ZoTbHeight << 1 ) - 1 включительно.

[65] Если last_sig_coeff_y_prefix не присутствует, тогда last_sig_coeff_y_prefix равен 0.

[66] (c) last_sig_coeff_x_suffix указывает суффикс горизонтальной координаты (или столбца) последнего значимого коэффициента в порядке сканирования в пределах текущего блока. Значение last_sig_coeff_x_suffix должно быть в диапазоне от 0 до (1<< ( ( last_sig_coeff_x_prefix>>1)-1))-1 включительно.

[67] LastSignificantCoeffX, т. е. значение горизонтальной координаты (или столбца) последнего значимого коэффициента в порядке сканирования в пределах текущего блока преобразования, выводят следующим образом:

если last_sig_coeff_x_suffix не присутствует, тогда

LastSignificantCoeffX = last_sig_coeff_x_prefix;

В противном случае (last_sig_coeff_x_suffix присутствует),

LastSignificantCoeffX=(1<< ((last_sig_coeff_x_prefix>>1)-1))*(2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix.

(d) last_sig_coeff_y_suffix указывает суффикс вертикальной координаты (или строки) последнего значимого коэффициента текущего блока преобразования в порядке сканирования. Значение last_sig_coeff_x_suffix должно быть в диапазоне от 0 до (1<< ((last_sig_coeff_y_prefix>>1)-1))-1 включительно.

[69] LastSignificantCoeffY, т. е. значение вертикальной координаты (или строки) последнего значимого коэффициента текущего блока преобразования в порядке сканирования, выводят следующим образом:

если last_sig_coeff_y_suffix не присутствует, тогда

LastSignificantCoeffY = last_sig_coeff_y_prefix;

В противном случае (last_sig_coeff_y_suffix присутствует),

LastSignificantCoeffY = (1<< ((last_sig_coeff_y_prefix>>1)-1))*(2+(last_ sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix.

[70] Кроме того, необходимо закодировать последний значимый коэффициент и его предыдущие коэффициенты. Однако в обычном видео определенный процент этих коэффициентов по-прежнему равен 0. В VVC флаг sb_coded_flag, указывающий, закодирован ли текущий подблок, используют для определения того, необходимо ли кодировать коэффициенты текущего подблока. Если кодирование не требуется, тогда все коэффициенты текущего подблока считаются равными 0. В данном случае подблок обычно представляет собой подблок n×n, такой как подблок 4×4.

[71] sb_coded_flag[xS][yS] указывает следующее для подблока в местоположении ( xS, yS ) в пределах текущего блока преобразования, где подблок представляет собой массив уровней коэффициента преобразования:

когда sb_coded_flag[ xS ][ yS ] равен 0, все уровни коэффициента преобразования подблока в местоположении ( xS, yS ) считаются равными 0.

Когда sb_coded_flag[ xS ][ yS ] не присутствует, считается, что он равен 1.

[72] Кроме того, при работе с кодированием коэффициентов эффективность сжатия может быть повышена за счет использования свойств коэффициентов. Например, для обычного видео определенный процент коэффициентов, подлежащих кодированию, равен 0. Таким образом, элемент синтаксиса можно использовать для указания того, равен ли текущий коэффициент 0. Данный элемент синтаксиса обычно представляет собой двоичный символ (bin). Если текущий коэффициент равен 0, тогда это означает, что кодирование текущего коэффициента завершено. В противном случае необходимо продолжить кодирование текущего коэффициента. В качестве другого примера для обычного видео определенный процент значимых коэффициентов имеет абсолютное значение 1. Таким образом, элемент синтаксиса можно использовать для указания того, превышает ли абсолютное значение текущего коэффициента 1. Данный элемент синтаксиса обычно представляет собой bin. Если абсолютное значение текущего коэффициента не превышает 1, тогда это означает, что кодирование текущего коэффициента завершено. В противном случае необходимо продолжить кодирование текущего коэффициента. Например, элемент(-ы) синтаксиса, задействованный в VVC, заключается в следующем.

[73] sig_coeff_flag[xC][yC] указывает для местоположения коэффициента преобразования ( xC, yC ) в пределах текущего блока преобразования, является ли соответствующий уровень коэффициента преобразования в местоположении ( xC, yC ) ненулевым следующим образом.

если sig_coeff_flag[ xC ][ yC ] равен 0, уровень коэффициента преобразования в местоположении ( xC, yC ) устанавливают равным 0;

В противном случае (sig_coeff_flag[ xC ][ yC ] равен 1) уровень коэффициента преобразования в местоположении ( xC, yC ) имеет ненулевое значение.

[74] Когда sig_coeff_flag[ xC ][ yC ] не присутствует, считается следующим образом:

если transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 0 или sh_ts_residual_coding_disabled_flag равен 1, применяют следующее:

если ( xC, yC ) является последним значимым местоположением (LastSignificantCoeffX, LastSignificantCoeffY) в порядке сканирования или все следующие условия верны, sig_coeff_flag[ xC ][ yC ] считается равным 1:

( xC & ( (1 << log2SbW ) - 1 ), yC & ( (1 << log2SbH ) - 1 ) ) равно ( 0, 0 );

inferSbDcSigCoeffFlag равно 1; и

sb_coded_flag[ xS ][ yS ] равно 1;

В противном случае sig_coeff_flag[ xC ][ yC ] считается равным 0;

В противном случае ([ x0 ][ y0 ][ cIdx ] равен 1 и sh_ts_residual_coding_disabled_flag равен 0), применяют следующее:

если все следующие условия верны, sig_coeff_flag[ xC ][ yC ] считается равным 1:

( xC & ( (1 << log2SbW ) - 1 ), yC & ( (1 << log2SbH ) - 1 ) ) равно ( (1 << log2SbW ) - 1, (1 << log2SbH ) - 1 );

inferSbSigCoeffFlag равно 1; и

sb_coded_flag[ xS ][ yS ] равно 1;

В противном случае sig_coeff_flag[ xC ][ yC ] считается равным 0.

[75] abs_level_gtx_flag[ n ][ j ] указывает, превышает ли абсолютное значение уровня коэффициента преобразования (в положении сканирования n) ( j << 1 ) + 1. Когда abs_level_gtx_flag[ n ][ j ] не присутствует, abs_level_gtx_flag[ n ][ j ] равен 0.

[76] Таким образом, если кодирование текущего коэффициента не завершено после обработки вышеуказанных флагов (или называемых элементов синтаксиса), тогда необходимо закодировать оставшееся значение абсолютного значения коэффициента, такое как abs_remainder в VVC.

[77] abs_remainder[ n ] представляет собой оставшееся абсолютное значение уровня коэффициента преобразования, которое кодируют кодом Голомба-Райса в положении сканирования n. Когда abs_remainder[ n ] не присутствует, abs_remainder[ n ] равен 0.

[78] Кроме того, в VVC элементы синтаксиса, такие как sig_coeff_flag и abs_level_gtx_flag, кодируют с использованием контекстного режима, в то время как abs_remainder кодируют с использованием обходного режима. Как упомянуто выше, кодирование в контекстном режиме является более сложным, чем кодирование в обходном режиме, что интуитивно означает более низкую скорость обработки. Если требуется закодировать большее количество коэффициентов, интенсивное использование кодирования в контекстном режиме повлияет на скорость декодирования. Следовательно, количество элементов синтаксиса, закодированных с использованием контекстного режима, может быть ограничено. Например, если количество двоичных чисел, закодированных с использованием контекстного режима, превышает пороговое значение, последующие коэффициенты принудительно кодируют с использованием обходного режима. Например, dec_abs_level в VVC.

[79] dec_abs_level[ n ] представляет собой промежуточное значение, которое кодируют кодом Голомба-Райса в положении сканирования n. ZeroPos[ n ] может быть выведено во время анализа dec_abs_level[ n ], абсолютное значение уровня коэффициента преобразования в местоположении ( xC, yC ) AbsLevel[ xC ][ yC ] выводят следующим образом:

если dec_abs_level[ n ] не присутствует или равно ZeroPos[ n ], AbsLevel[ xC ][ yC ] устанавливают равным 0.

В противном случае, если dec_abs_level[ n ] меньше ZeroPos[ n ], AbsLevel[ xC ][ yC ] устанавливают равным dec_abs_level[ n ] + 1;

В противном случае (dec_abs_level[ n ] больше ZeroPos[ n ]), AbsLevel[ xC ][ yC ] устанавливают равным dec_abs_level[ n ].

[80] Вышеуказанные значения являются абсолютными значениями коэффициентов. Знак значимого коэффициента может быть определен с использованием флага знака коэффициента coeff_sign_flag или некоторых способов получения знака. coeff_sign_flag[n] можно использовать для определения знака коэффициента преобразования в положении сканирования n следующим образом:

если coeff_sign_flag[n] равен 0, тогда соответствующий коэффициент преобразования положителен;

в противном случае (coeff_sign_flag[n] равно 1) соответствующий коэффициент преобразования отрицателен.

[81] Если coeff_sign_flag[n] не присутствует, тогда coeff_sign_flag[n] равен 0. В этом случае знак коэффициента преобразования на координатах (xC, yC) определяют по CoeffSignLevel[xC][yC]:

если CoeffSignLevel[xC][yC] равен 0, тогда соответствующий коэффициент преобразования равен 0;

в противном случае, если CoeffSignLevel[xC][yC] равен 1, тогда соответствующий коэффициент преобразования положителен; в противном случае (CoeffSignLevel[xC][yC] равен -1) соответствующий коэффициент преобразования отрицателен.

[82] Следует также отметить, что CoeffSignLevel[xC][yC] может быть получен с использованием других способов, которые не будут повторяться в данном документе.

[83] Кроме того, VVC использует флаг четности par_level_flag для значения коэффициента. Флаг указывает четность текущего коэффициента и используют при определении текущего значения коэффициента и при зависимом квантовании.

[84] par_level_flag[ n ] указывает четность уровня коэффициента преобразования в положении сканирования n. Когда par_level_flag[ n ] не присутствует, par_level_flag[ n ] равен 0.

[85] В дополнение к определению четности коэффициента преобразования par_level_flag может быть дополнительно использован для определения значения коэффициента в сочетании с abs_level_gtx_flag, abs_remainder и т. д.

[86] В данном случае поскольку кодирование в контекстном режиме требует выбора, использования и обновления контекстных режимов, в то время как кодирование в обходном режиме этого не требует, обычной практикой является размещение элементов синтаксиса, закодированных в контекстном режиме, вместе и элементов синтаксиса, закодированных в обходном режиме, вместе в определенном диапазоне, что более удобно для конструкции аппаратного обеспечения. Например, сначала обрабатывают все элементы синтаксиса, закодированные в контекстном режиме, в блоке, а затем обрабатывают элементы синтаксиса, закодированные в обходном режиме. Все элементы синтаксиса, закодированные в контекстном режиме, в текущем блоке могут быть дополнительно разделены на несколько групп, а все элементы синтаксиса, закодированные в обходном режиме, в блоке могут быть дополнительно разделены на несколько групп.

[87] В одном конкретном примере конкретный синтаксис RRC проиллюстрирован в таблице 1.

Таблица 1

residual_coding(x0, y0, log2TbWidth, log2TbHeight, cIdx){ Дескриптор if(sps_mts_enabled_flag && cu_sbt_flag && cIdx==0 &&
log2TbWidth == 5 && log2TbHeight<6)
log2ZoTbWidth=4 else log2ZoTbWidth=Min(log2TbWidth,5) if(sps_mts_enabled_flag && cu_sbt_flag && cIdx==0 &&
log2TbWidth<6 && log2TbHeight == 5)
log2ZoTbHeight=4 else log2ZoTbHeight=Min(log2TbHeight,5) if(log2TbWidth >0) last_sig_coeff_x_prefix ae(v) if(log2TbHeight >0) last_sig_coeff_y_prefix ae(v) if(last_sig_coeff_x_prefix> 3) last_sig_coeff_x_suffix ae(v) if(last_sig_coeff_y_prefix> 3) last_sig_coeff_y_suffix ae(v) log2TbWidth=log2ZoTbWidth log2TbHeight=log2ZoTbHeight remBinsPass1=((1<<(log2TbWidth+log2TbHeight))×7)>>2 log2SbW=(Min(log2TbWidth, log2TbHeight)< 2 ? 1: 2). log2SbH=log2SbW if(log2TbWidth+log2TbHeight>3) if(log2TbWidth<2){ log2SbW=log2TbWidth log2SbH=4-log2SbW } elseif(log2TbHeight<2){ log2SbH=log2TbHeight log2SbW=4-log2SbH } numSbCoeff=1<<(log2SbW+log2SbH) lastScanPos=numSbCoeff lastSubBlock=(1<<(log2TbWidth+log2TbHeight-(log2SbW+log2SbH)))-1 do { if(lastScanPos ==0){ lastScanPos=numSbCoeff lastSubBlock-- } lastScanPos-- xS=DiagScanOrder[log2TbWidth-log2SbW][log2TbHeight-log2SbH]
[lastSubBlock][0]
yS=DiagScanOrder[log2TbWidth-log2SbW][log2TbHeight-log2SbH]
[lastSubBlock][1]
xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][lastScanPos][0] yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][lastScanPos][1] } while((xC != LastSignificantCoeffX) | | (yC != LastSignificantCoeffY)) if(lastSubBlock ==0 && log2TbWidth>=2 && log2TbHeight>=2 &&
!transform_skip_flag[x0][y0][cIdx] && lastScanPos >0)
LfnstDcOnly=0 if((lastSubBlock >0 && log2TbWidth>=2 && log2TbHeight>=2) | |
(lastScanPos>7 && (log2TbWidth == 2 | | log2TbWidth == 3) &&
log2TbWidth == log2TbHeight))
LfnstZeroOutSigCoeffFlag=0 if((lastSubBlock >0 | | lastScanPos >0) && cIdx==0) MtsDcOnly=0 QState=0 for(i=lastSubBlock; i >=0; i--){ startQStateSb=QState xS=DiagScanOrder[log2TbWidth-log2SbW][log2TbHeight-log2SbH]
[i][0]
yS=DiagScanOrder[log2TbWidth-log2SbW][log2TbHeight-log2SbH]
[i][1]
inferSbDcSigCoeffFlag=0 if(i<lastSubBlock && I >0){ sb_coded_flag[xS][yS] ae(v) inferSbDcSigCoeffFlag=1 } if(sb_coded_flag[xS][yS] && (xS>3 | | yS>3) && cIdx==0) MtsZeroOutSigCoeffFlag=0 firstSigScanPosSb=numSbCoeff lastSigScanPosSb=-1 firstPosMode0=(i == lastSubBlock ? lastScanPos : numSbCoeff-1) firstPosMode1=firstPosMode0 for(n=firstPosMode0; n>=0 && remBinsPass1>=4; n--){ xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0] yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1] if(sb_coded_flag[xS][yS] && (n >0 | | !inferSbDcSigCoeffFlag) &&
(xC != LastSignificantCoeffX | | yC != LastSignificantCoeffY)){
sig_coeff_flag[xC][yC] ae(v) remBinsPass1-- if(sig_coeff_flag[xC][yC]) inferSbDcSigCoeffFlag=0 } if(sig_coeff_flag[xC][yC]){ abs_level_gtx_flag[n][0] ae(v) remBinsPass1-- if(abs_level_gtx_flag[n][0]){ par_level_flag[n] ae(v) remBinsPass1-- abs_level_gtx_flag[n][1] ae(v) remBinsPass1-- } if(lastSigScanPosSb == -1) lastSigScanPosSb=n firstSigScanPosSb=n } AbsLevelPass1[xC][yC]=sig_coeff_flag[xC][yC]+par_level_flag[n]+
abs_level_gtx_flag[n][0]+2×abs_level_gtx_flag[n][1]
if(sh_dep_quant_used_flag) QState=QStateTransTable[QState][AbsLevelPass1[xC][yC]&1] firstPosMode1=n-1 } for(n=firstPosMode0 ; n>firstPosMode1 ; n--){ xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0] yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1] if(abs_level_gtx_flag[n][1]) abs_remainder[n] ae(v) AbsLevel[xC][yC]=AbsLevelPass1[xC][yC]+2×abs_remainder[n] } for(n=firstPosMode1; n>=0; n--){ xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0] yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1] if(sb_coded_flag[xS][yS]) dec_abs_level[n] ae(v) if(AbsLevel[xC][yC]>0){ if(lastSigScanPosSb == -1) lastSigScanPosSb=n firstSigScanPosSb=n } if(sh_dep_quant_used_flag) QState=QStateTransTable[QState][AbsLevel[xC][yC]&1] } signHiddenFlag=sh_sign_data_hiding_used_flag &&
(lastSigScanPosSb-firstSigScanPosSb>3 ?1:0)
for(n=numSbCoeff-1; n>=0; n--){ xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0] yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1] if((AbsLevel[xC][yC]>0) &&
(!signHiddenFlag | | (n != firstSigScanPosSb)))
coeff_sign_flag[n] ae(v) } if(sh_dep_quant_used_flag){ QState=startQStateSb for(n=numSbCoeff-1; n>=0; n--){ xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0] yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1] if(AbsLevel[xC][yC]>0) TransCoeffLevel[x0][y0][cIdx][xC][yC]=
(2×AbsLevel[xC][yC]-(QState>1?1:0))×
(1-2×coeff_sign_flag[n])
QState=QStateTransTable[QState][AbsLevel[xC][yC]&1] } } else{ sumAbsLevel=0 for(n=numSbCoeff-1; n>=0; n--){ xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0] yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1] if(AbsLevel[xC][yC]>0){ TransCoeffLevel[x0][y0][cIdx][xC][yC] =
AbsLevel[xC][yC]×(1-2×coeff_sign_flag[n])
if(signHiddenFlag){ sumAbsLevel += AbsLevel[xC][yC] if(n == firstSigScanPosSb && sumAbsLevel % 2 ==1) TransCoeffLevel[x0][y0][cIdx][xC][yC] =
-TransCoeffLevel[x0][y0][cIdx][xC][yC]
} } } } } }

[88] Массив AbsLevel[xC][yC] представляет собой массив абсолютных значений коэффициентов преобразования текущего блока преобразования. Массив AbsLevelPass1[xC][yC] представляет собой массив абсолютных значений частичного восстановления коэффициентов преобразования текущего блока преобразования. Индексы xC и yC массива представляют положение (xC, yC) в текущем блоке преобразования.

[89] После ввода функции residual_coding (x0, y0, log2TbWidth, log2TbHeight, cIdx) необходимо определить некоторую информацию о размере блока, такую как определение логарифмов log2ZoTbWidth и log2ZoTbHeight размера блока после нулевого вывода, где коэффициенты с горизонтальной координатой в диапазоне [0, (1& lt;<log2ZoTbWidth) -1] и вертикальной координатой в диапазоне [0, (1<<log2ZoTbHeight) -1] могут быть значимыми коэффициентами. В данном случае (1<<log2ZoTbWidth) представляет ширину блока преобразования после нулевого вывода, а (1<< log2ZoTbHeight) представляет высоту блока преобразования после нулевого вывода. Затем положение последнего значимого коэффициента определяют на основе last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_suffix и т. д. Коэффициенты перед (предшествующим) последним значимым коэффициентом в порядке сканирования могут быть значимыми коэффициентами. Затем определяют значение remBinsPass1, т. е. определяют с использованием remBinsPass1=((1<<(log2TbWidth+log2TbHeight)) x 7)>>2. remBinsPass1 указывает количество элементов синтаксиса, которые кодируют с использованием контекстного режима в текущем блоке. В вариантах осуществления настоящего изобретения следует понимать, что remBinsPass1 означает оставшиеся двоичные файлы inpass1, то есть количество двоичных чисел, оставшихся в первом цикле. Коэффициенты перед последним значимым коэффициентом в порядке сканирования должны быть закодированы. Для подблоков, содержащих эти коэффициенты, определяют, нужно ли кодировать каждый текущий подблок, и если да, то способ устанавливает элементы синтаксиса, закодированные в контекстном режиме в подблоке в первом цикле, а элементы синтаксиса, закодированные в обходном режиме, позже. Для каждого коэффициента может потребоваться обработать не более 4 элементов синтаксиса, закодированных в контекстном режиме, т. е. один sig_coeff_flag, two abs_level_gtx_flag и один par_level_flag. В первом цикле remBinsPass1 уменьшается на 1 каждый раз, когда обрабатывают элемент синтаксиса, закодированный в контекстном режиме. Если коэффициент достаточно велик, оставшееся значение, т. е. abs_remainder, необходимо обработать после обработки элементов синтаксиса, закодированных в контекстном режиме в первом цикле. Если remBinsPass1 уже достаточно мал (не удовлетворяет remBinsPass1>=4), первый цикл заканчивается, и оставшиеся коэффициенты обрабатывают непосредственно в обходном режиме, т. е. dec_abs_ level.

[90] В другом конкретном примере конкретный синтаксис TSRC проиллюстрирован в таблице 2.

Таблица 2

residual_ts_coding( x0, y0, log2TbWidth, log2TbHeight, cIdx ) { Дескриптор log2SbW = ( Min( log2TbWidth, log2TbHeight ) < 2 ? 1: 2 ) log2SbH = log2SbW if( log2TbWidth + log2TbHeight > 3 ) if( log2TbWidth < 2 ) { log2SbW = log2TbWidth log2SbH = 4 - log2SbW } else if( log2TbHeight < 2 ) { log2SbH = log2TbHeight log2SbW = 4 - log2SbH } numSbCoeff = 1 << ( log2SbW + log2SbH ) lastSubBlock = ( 1 << ( log2TbWidth + log2TbHeight - ( log2SbW + log2SbH ) ) ) - 1 inferSbCbf = 1 RemCcbs = ( ( 1 << ( log2TbWidth + log2TbHeight ) ) * 7 ) >> 2 for( i =0; i <= lastSubBlock; i++ ) { xS = DiagScanOrder[ log2TbWidth - log2SbW ][ log2TbHeight - log2SbH ][ i ][ 0 ] yS = DiagScanOrder[ log2TbWidth - log2SbW ][ log2TbHeight - log2SbH ][ i ][ 1 ] if( i != lastSubBlock | | !inferSbCbf ) sb_coded_flag[ xS ][ yS ] ae(v) if( sb_coded_flag[ xS ][ yS ] && i < lastSubBlock ) inferSbCbf = 0 /* Первый проход сканирования */ inferSbSigCoeffFlag = 1 lastScanPosPass1 = -1 for( n = 0; n <= numSbCoeff - 1 && RemCcbs >= 4; n++ ) { xC = ( xS << log2SbW ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 0 ] yC = ( yS << log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 1 ] lastScanPosPass1 = n if( sb_coded_flag[ xS ][ yS ] &&
( n != numSbCoeff - 1 | | !inferSbSigCoeffFlag ) ) {
sig_coeff_flag[ xC ][ yC ] ae(v) RemCcbs- - if( sig_coeff_flag[ xC ][ yC ] ) inferSbSigCoeffFlag = 0 } CoeffSignLevel[ xC ][ yC ] = 0 if( sig_coeff_flag[ xC ][ yC ] ) { coeff_sign_flag[ n ] ae(v) RemCcbs- - CoeffSignLevel[ xC ][ yC ] = ( coeff_sign_flag[ n ] > 0 ? -1: 1 ) abs_level_gtx_flag[ n ][ 0 ] ae(v) RemCcbs- - if( abs_level_gtx_flag[ n ][ 0 ] ) { par_level_flag[ n ] ae(v) RemCcbs- - } } AbsLevelPass1[ xC ][ yC ] =
sig_coeff_flag[ xC ][ yC ] + par_level_flag[ n ] + abs_level_gtx_flag[ n ][ 0 ]
} /* Проход сканирования, больший чем X (numGtXFlags=5) */ lastScanPosPass2 = -1 for( n = 0; n <= numSbCoeff - 1 && RemCcbs >= 4; n++ ) { xC = ( xS << log2SbW ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 0 ] yC = ( yS << log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 1 ] AbsLevelPass2[ xC ][ yC ] = AbsLevelPass1[ xC ][ yC ] for( j = 1; j < 5; j++ ) { if( abs_level_gtx_flag[ n ][ j - 1 ] ) { abs_level_gtx_flag[ n ][ j ] ae(v) RemCcbs- - } AbsLevelPass2[ xC ][ yC ] += 2 * abs_level_gtx_flag[ n ][ j ] } lastScanPosPass2 = n } /* остаточный проход сканирования */ for( n = 0; n <= numSbCoeff - 1; n++ ) { xC = ( xS << log2SbW ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 0 ] yC = ( yS << log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 1 ] if( ( n <= lastScanPosPass2 && AbsLevelPass2[ xC ][ yC ] >= 10 ) | |
( n > lastScanPosPass2 && n <= lastScanPosPass1 &&
AbsLevelPass1[ xC ][ yC ] >= 2 ) | |
( n > lastScanPosPass1 && sb_coded_flag[ xS ][ yS ] ) )
abs_remainder[ n ] ae(v) if( n <= lastScanPosPass2 ) AbsLevel[ xC ][ yC ] = AbsLevelPass2[ xC ][ yC ] + 2 * abs_remainder[ n ] else if(n <= lastScanPosPass1 ) AbsLevel[ xC ][ yC ] = AbsLevelPass1[ xC ][ yC ] + 2 * abs_remainder[ n ] else { /* bypass */ AbsLevel[ xC ][ yC ] = abs_remainder[ n ] if( abs_remainder[ n ] ) coeff_sign_flag[ n ] ae(v) } if( BdpcmFlag[ x0 ][ y0 ][ cIdx ] = = 0 && n <= lastScanPosPass1 ) { absLeftCoeff = xC > 0 ? AbsLevel[ xC - 1 ][ yC ] : 0 absAboveCoeff = yC > 0 ? AbsLevel[ xC ][ yC - 1 ] : 0 predCoeff = Max( absLeftCoeff, absAboveCoeff ) if( AbsLevel[ xC ][ yC ] = = 1 && predCoeff > 0 ) AbsLevel[ xC ][ yC ] = predCoeff else if( AbsLevel[ xC ][ yC ] > 0 && AbsLevel[ xC ][ yC ] <= predCoeff ) AbsLevel[ xC ][ yC ]- - } TransCoeffLevel[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] = ( 1 - 2 * coeff_sign_flag[ n ] ) *
AbsLevel[ xC ][ yC ]
} } }

[91] После ввода функции residual_ts_coding (x0, y0, log2TbWidth, log2TbHeight, cIdx) необходимо определить некоторую информацию о размере блока. Затем значение RemCcbs определяют с использованием уравнения RemCcbs=((1<<(log2TbWidth+log2TbHeight))x7)>>2. RemCcbs указывает количество элементов синтаксиса в текущем блоке, которые кодируют с использованием контекстного режима. В вариантах осуществления настоящего изобретения следует понимать, что RemCcbs означает оставшиеся двоичные файлы с контекстным кодированием, то есть количество оставшихся двоичных чисел, закодированных в контекстном режиме. Для каждого подблока определяют, требуется ли кодирование текущего подблока. Если требуется кодирование, отличное от вышеописанного RRC, способ TSRC устанавливает элементы синтаксиса, закодированные в контекстном режиме, в подблоке в два цикла, причем для каждого коэффициента обрабатывают до четырех элементов синтаксиса, закодированных в контекстном режиме, в первом и втором циклах соответственно. Элементы синтаксиса, закодированные в обходном режиме, устанавливают позже. В первом и втором циклах remBinsPass1 уменьшается на 1 каждый раз, когда обрабатывают элемент синтаксиса, закодированный в контекстном режиме. Если коэффициент достаточно велик, оставшееся значение, т. е. abs_remainder, необходимо обработать после того, как элементы синтаксиса, закодированные в контекстном режиме, были обработаны в первом и втором циклах. Если remBinsPass1 достаточно мал (не удовлетворяет remBinsPass1>=4), первые два цикла будут закончены, а оставшиеся коэффициенты будут обработаны непосредственно в обходном режиме, в этом случае по-прежнему abs_remainder.

[92] Если коротко, текущий способ кодирования коэффициентов, доступный в известном уровне техники, обладает хорошей эффективностью сжатия для видео, которые обычно используют на сегодняшний день, таких как потребительское видео. Потребительское видео обычно имеет битовую глубину 8 или 10 бит на пиксель, а битовая скорость обычно не слишком высока, обычно несколько мегабит в секунду (МБ/с) или меньше. Однако существуют некоторые приложения, в которых для видео требуется более высокая битовая глубина, например, 12, 14 или 16 бит на пиксель или выше. Более высокая битовая глубина обычно приводит к более большим коэффициентам, более значимым коэффициентам и, следовательно, к более высокой битовой скорости. Существуют также приложения, где для видео требуется более высокое качество, что обычно приводит к более большим коэффициентам, более значимым коэффициентам и, следовательно, более высокой битовой скорости. Более высокая битовая скорость требует большей мощности для обработки данных декодера, таких как пропускная способность.

[93] Видео с высокой битовой глубиной, высоким качеством и высокой битовой скоростью (называемое «видео с тройной высокой четкостью») обычно требует кодирования большего количества коэффициентов, чем видео с низкой битовой глубиной, низким качеством и низкой битовой скоростью (называемое «обычным видео»). Например, для блока того же размера количество коэффициентов, которые необходимо закодировать в видео с тройной высокой четкостью, намного больше, чем в обычном видео. Это связано с тем, что для обычного видео многие коэффициенты в блоке после предсказания, преобразования и квантования становятся равными 0, в то время как для видео с тройной высокой четкостью многие коэффициенты в блоке после предсказания, преобразования и квантования по-прежнему являются значимыми коэффициентами. Для обычного видео, поскольку большой процент коэффициентов, подлежащих кодированию в блоке после предсказания, преобразования и квантования, равен 0, очень эффективно использовать положение последнего значимого коэффициента (LastSignificantCoeffX, LastSignificantCoeffY), чтобы различать области с коэффициентами, подлежащими или не подлежащими кодированию. Кроме того, большой процент коэффициентов перед положением последнего значимого коэффициента также равен нулю, и, таким образом, очень эффективно дополнительно различать, нуждается ли текущий подблок в кодировании или нет, используя sb_coded_flag, чтобы указать, закодирован ли подблок. Однако, когда в текущем блоке существует большее количество значимых коэффициентов, или даже большинство или все коэффициенты являются значимыми коэффициентами, использование положения последнего значимого коэффициента и флага, указывающего, закодирован ли подблок, как упомянуто выше, не может отфильтровать слишком много значимых коэффициентов. Кроме того, кодирование положений последнего значимого коэффициента и флаг, указывающий, закодирован ли подблок в битовом потоке, вызовет некоторое непроизводительное потребление ресурсов, что приведет к нерациональному их использованию.

[94] С другой стороны, положение последнего значимого коэффициента и флаг, указывающий, закодирован ли подблок, кодируют в контекстном режиме, который является более сложным, чем обходной режим. Обработка такой информации также влияет на скорость и пропускную способность кодирования программного обеспечения и аппаратного обеспечения.

[95] В другом аспекте текущий способ кодирования положения последнего значимого коэффициента (LastSignificantCoeffX, LastSignificantCoeffY) заключается в кодировании координат положения последнего значимого коэффициента. В обычном видео значения LastSignificantCoeffX и LastSignificantCoeffY обычно невелики, поскольку большинство из значимых коэффициентов сосредоточено в верхнем левом углу, в то время как большая область в правом нижнем углу имеет нулевые коэффициенты. Однако в видео с тройной высокой четкостью большое количество значимых коэффициентов также присутствует в правом нижнем углу, что обычно приводит к большим значениям LastSignificantCoeffX и LastSignificantCoeffY и, следовательно, к большему потреблению ресурсов при кодировании больших значений в битовом потоке. Кроме того, настоящий способ может быть использован при сжатии без потерь, где квантование не может быть использовано, и в этом случае коэффициенты обычно являются более многочисленными и большими. В этом случае использование существующих связанных схем может привести к увеличению потребления ресурсов и нерациональному их использованию, и даже повлиять на скорость и пропускную способность кодирования.

[96] Варианты осуществления настоящего изобретения предусматривают способ декодирования коэффициента, который применяют к декодеру. Анализируют битовый поток с получением флага, относящегося к видео. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, битовый поток анализируют с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента. Когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока, положение последнего значимого коэффициента определяют путем вычисления с использованием информации о координате последнего значимого коэффициента. Согласно заданному порядку сканирования все коэффициенты перед положением последнего значимого коэффициента декодируют для определения коэффициентов текущего блока.

[97] Варианты осуществления настоящего изобретения дополнительно предусматривают способ кодирования коэффициентов, который применяют к кодеру. Определяют флаг, относящийся к видео, и положение последнего значимого коэффициента. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, определяют флаг обратного положения последнего значимого коэффициента. Информацию о координате последнего значимого коэффициента определяют согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента кодируют согласно заданному порядку сканирования, а битовую информацию, полученную с помощью кодирования, флаг, относящийся к видео, и информацию о координате последнего значимого коэффициента передают в битовый поток.

[98] Таким образом, в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, таких как элементы синтаксиса о положении последнего значимого коэффициента, флаги кодированного подблока и т. д., или дополнительное выполнение преобразования координаты в случае, когда значения координат последнего значимого коэффициента слишком велики, может быть уменьшено потребление ресурсов, вызванное кодированием в битовом потоке, и, таким образом, могут быть улучшены пропускная способность и скорость кодирования коэффициентов. В дополнение эффективность сжатия также может быть повышена, поскольку уменьшенные или устраненные элементы синтаксиса оказывают меньшее влияние на кодирование видео при высокой битовой глубине, высокой битовой скорости, высоком качестве или сжатии без потерь.

[99] Варианты осуществления настоящего изобретения будут подробно описаны ниже в сочетании с прилагаемыми графическими материалами.

[100] Как показано на фиг. 8A, на фиг. 8A проиллюстрирована примерная блок-схема состава системы кодера, представленного в вариантах осуществления настоящего изобретения. Как показано на фиг. 8A, кодер 100 может содержать узел 101 разбиения, узел 102 предсказания, первый сумматор 107, узел 108 преобразования, узел 109 квантования, узел 110 обратного квантования, узел 111 обратного преобразования, второй сумматор 112, узел 113 фильтрации, узел 114 буфера для декодированного изображения (DPB) и узел 115 кодирования энтропии. В данном случае входными данными кодера 100 могут быть видео, включающее серию изображений или неподвижное изображение, а выходными данными кодера 100 могут быть битовый поток, представляющий сжатую версию входного видео.

[101] Узел 101 разбиения разбивает изображение во входном видео на один или более узлов кодового дерева (CTU). Узел 101 разбиения разбивает изображение на множество тайлов и может дополнительно разбивать один тайл на один или более пакетов, где тайл или пакет может включать один или более полных и/или частичных CTU. Кроме того, узел 101 разбиения может генерировать один или более слайсов, где один слайс может включать один или более тайлов в растровом порядке на изображении, или один или более тайлов, покрывающих прямоугольную область на изображении. Узел 101 разбиения может также генерировать один или более фрагментов изображения, где один фрагмент изображения может включать один или более слайсов, тайлов или пакетов.

[102] Во время процесса кодирования кодера 100 узел 101 разбиения передает CTU в узел 102 предсказания. Обычно узел 102 предсказания может включать узел 103 разбиения блоков, узел 104 оценки движения (ME), узел 105 компенсации движения (MC) и узел 106 внутреннего предсказания. В частности, узел 103 разбиения блоков дополнительно разбивает входной CTU на меньшие узлы кодирования (CU) путем итеративного использования разбиения на основе четверичного дерева, разбиения на основе двоичного дерева и разбиения на основе троичного дерева. Узел 102 предсказания может использовать узел 104 ME и узел 105 MC для получения промежуточного блока предсказания CU. Узел 106 внутреннего предсказания может получить блок внутреннего предсказания CU с использованием различных режимов внутреннего предсказания, включая режим MIP. В примерах, способ оценки движения, основанный на оптимизации уровня искажения (RDO) может быть вызван узлом 104 ME и узлом 105 MC для получения блока промежуточного предсказания, а способ определения режима, основанный на RDO, может быть вызван узлом 106 внутреннего предсказания для получения блока внутреннего предсказания.

[103] Узел 102 предсказания выводит блок предсказания CU, а первый сумматор 107 вычисляет разницу, т. е. остаточный CU, между CU, выводимым узлом 101 разбиения, и блоком предсказания CU. Узел 108 преобразования считывает остаточный CU и выполняет одно или более преобразований на остаточном CU для получения коэффициентов. Узел 109 квантования квантует коэффициенты и выводит квантованные коэффициенты (т. е. уровни). Узел 110 обратного квантования выполняет операции масштабирования на квантованных коэффициентах для вывода восстановленных коэффициентов. Узел 111 обратного преобразования выполняет одно или более обратных преобразований, соответствующих преобразованиям в узле 108 преобразования и выводит восстановленные остатки. Второй сумматор 112 вычисляет восстановленный CU путем суммирования восстановленных остатков и блока предсказания CU из узла 102 предсказания. Второй сумматор 112 также передает свой выход в узел 102 предсказания для использования в качестве эталона для внутреннего предсказания. После того, как все CU на изображении или фрагменте изображения будут восстановлены, узел 113 фильтрации выполняет контурную фильтрацию на восстановленном изображении или фрагменте изображения. В данном случае узел 113 фильтрации содержит один или более фильтров, например деблокирующий фильтр, адаптивный фильтр смещения дискретного значения (SAO), адаптивный контурный фильтр (ALF), фильтр отображения яркости с масштабированием цветности (LMCS), фильтр на основе нейронной сети и т. п. Альтернативно, если узел 113 фильтрации определяет, что CU не должен быть использован в качестве эталона для кодирования других CU, при этом узел 113 фильтрации выполняет контурную фильтрацию по одному или более целевым пикселям в CU.

[104] Выходом узла 113 фильтрации является декодированные изображения или фрагменты изображения, которые буферизуются в узел 114 DPB. Узел 114 DPB выводит декодированные изображения или фрагменты изображения на основе информации о синхронизации и управлении. В данном случае изображения, хранящиеся в узле 114 DPB, также можно использовать в качестве эталона для узла 102 предсказания для выполнения промежуточного предсказания или внутреннего предсказания. Наконец, узел 115 кодирования энтропии преобразует параметры, необходимые для декодирования изображений (например, параметры управления и дополнительную информацию, и т. д.) из кодера 100 в двоичную форму, и передает сигналы такой двоичной формы в битовый поток согласно структуре синтаксиса каждого узла данных, т. е. кодер 100, наконец, выводит битовый поток.

[105] Кроме того, кодер 100 может содержать первый процессор и первое запоминающее устройство, которое записывает компьютерную программу. Когда первый процессор считывает и запускает компьютерную программу, кодер 100 считывает входное видео и генерирует соответствующий битовый поток. Альтернативно, кодер 100 может представлять собой вычислительное устройство, имеющее один или более чипов. Данные узлы, реализованные в виде интегральных микросхем на чипе, имеют функции подключения и обмена данными, аналогичные соответствующим узлам на фиг. 8A.

[106] Как показано на фиг. 8B, на фиг. 8B проиллюстрирована примерная блок-схема состава системы декодера, представленного в вариантах осуществления настоящего изобретения. Как показано на фиг. 8B, декодер 200 может содержать узел 201 анализа, узел 202 предсказания, узел 205 обратного квантования, узел 206 обратного преобразования, сумматор 207, узел 208 фильтрации и узел 209 DPB. В данном случае входными данными декодера 200 является битовый поток, представляющий сжатую версию видео или неподвижного изображения, а выходными данными декодера 200 может быть битовый поток, включающий декодированное видео, включающее серию изображений или декодированное неподвижное изображение.

[107] Входной битовый поток декодера 200 может быть битовым потоком, сгенерированным кодером 100. Узел 201 анализа анализирует входной битовый поток и получает значения элементов синтаксиса из входного битового потока. Узел 201 анализа преобразует двоичное представление элемента синтаксиса в числовое значение и отправляет числовое значение в узел в декодере 200 для получения одного или более декодированных изображений. Узел 201 анализа может также анализировать один или более элементов синтаксиса из входного битового потока для отображения декодированного изображения.

[108] Во время процесса декодирования декодера 200 узел 201 анализа отправляет в узел в декодере 200 значения элементов синтаксиса и одну или более переменных, установленных или определенных согласно значениям элементов синтаксиса для получения одного или более декодированных изображений.

[109] Узел 202 предсказания определяет блок прогнозирования для текущего блока декодирования (например, CU). В данном случае узел 202 предсказания может включать узел 203 компенсации движения и узел 204 внутреннего предсказания. В частности, когда для декодирования текущего блока декодирования указан режим промежуточного декодирования, узел 202 предсказания передает соответствующие параметры из узла 201 анализа в узел 203 компенсации движения для получения блока промежуточного предсказания. Когда режим внутреннего предсказания (включая режим MIP, обозначенный значением индекса MIP) указан для декодирования текущего блока декодирования, узел 202 предсказания передает соответствующие параметры из узла 201 анализа в узел 204 внутреннего предсказания для получения блока внутреннего предсказания.

[110] Узел 205 обратного квантования имеет такую же функцию, что и узел 110 обратного квантования в кодере 100. Узел 205 обратного квантования выполняет операции масштабирования в отношении коэффициентов квантования (т. е. уровней) из узла 201 анализа для получения восстановленных коэффициентов.

[111] Узел 206 обратного преобразования имеет такую же функцию, что и узел 111 обратного преобразования в кодере 100. Узел 206 обратного преобразования выполняет одно или более преобразований (т. е. обратные операции одного или более преобразований, выполняемых узлом 111 обратного преобразования в кодере 100) для получения восстановленных остатков.

[112] Сумматор 207 выполняет операцию суммирования на своих входных данных (блок предсказания из узла 202 предсказания и восстановленные остатки из узла 206 обратного преобразования) для получения восстановленного блока текущего блока декодирования. Восстановленный блок также отправляется на узел 202 предсказания для использования в качестве эталона для других блоков, кодируемых в режиме внутреннего предсказания.

[113] После того, как все CU на изображении или фрагменте изображения будут восстановлены, узел 208 фильтрации выполняет контурную фильтрацию на восстановленном изображении или фрагменте изображения. Узел 208 фильтрации содержит один или более фильтров, например деблокирующий фильтр, адаптивный компенсационный фильтр выборки, адаптивный контурный фильтр, фильтры отображения яркости и масштабирования цветности и фильтры на основе нейронной сети. Альтернативно, когда узел 208 фильтрации определяет, что восстановленный блок не должен быть использован в качестве эталона для декодирования других блоков, узел 208 фильтрации выполняет контурную фильтрацию по одному или более целевым пикселям в восстановленном блоке. В данном случае выходные данные узла 208 фильтрации представляют собой декодированное изображение или фрагмент изображения, и декодированное изображение или фрагмент изображения буферизуют в узел 209 DPB. Узел 209 DPB выводит декодированное изображение или фрагмент изображения на основе информации о синхронизации и управлении. Изображение, хранящееся в узле 209 DPB, может быть также использовано в качестве эталона для выполнения промежуточного предсказания или внутреннего предсказания узлом 202 предсказания.

[114] Кроме того, декодер 200 может содержать второй процессор и второе запоминающее устройство, которое записывает компьютерную программу. Когда первый процессор считывает и запускает компьютерную программу, декодер 200 считывает входной битовый поток и генерирует соответствующее декодированное изображение. Альтернативно, декодер 200 может представлять собой вычислительное устройство, имеющее один или более чипов. Данные узлы, реализованные в виде интегральных микросхем на чипе, имеют функции подключения и обмена данными, аналогичные соответствующим узлам на фиг. 8B.

[115] Также следует отметить, что когда варианты осуществления настоящего изобретения применяют к кодеру 100, «текущий блок» конкретно относится к текущему блоку, подлежащему кодированию в видеоизображении (который также может быть упомянут как «блок кодирования»). Когда варианты осуществления настоящего изобретения применяют к декодеру 200, «текущий блок» конкретно относится к текущему блоку, подлежащему декодированию в видеоизображении (который также может быть упомянут как «блок декодирования»).

[116] В одном варианте осуществления настоящего изобретения, обращаясь к фиг. 9, на фиг. 9 проиллюстрирована схематическая блок-схема способа декодирования коэффициента, предоставленного в вариантах осуществления настоящего изобретения. Как показано на фиг. 9, способ может включать следующее.

[117] На этапе S901 анализируют битовый поток с получением флага, относящегося к видео.

[118] Следует отметить, что способ декодирования коэффициента в вариантах осуществления настоящего изобретения применяют к декодеру. В частности, на основе структуры состава декодера 200, проиллюстрированной на фиг. 8B, способ декодирования коэффициентов в вариантах осуществления настоящего изобретения в основном применяют к «узлу 201 анализа» декодера 200. Узел 201 анализа может использовать режим адаптивного двоичного арифметического кодирования, основанный на контекстной модели, или обходной режим для декодирования значений связанных флагов (или элементов синтаксиса) и, таким образом, определения коэффициентов текущего блока.

[119] Следует также отметить, что кодирование коэффициентов, как обычно упоминается в стандартах видео, может включать как кодирование, так и декодирование. Таким образом, кодирование коэффициентов включает способ кодирования коэффициентов на стороне кодера и способ декодирования коэффициентов на стороне декодера. Вариант осуществления настоящего изобретения описан в отношении способа декодирования коэффициентов на стороне декодера.

[120] Как правило, например, для обычного видео, способ декодирования коэффициентов является таким же, как и способы, доступные в предшествующем уровне техники. Однако для определенного случая, такого как сценарий кодирования видео с высокой битовой глубиной, высоким качеством, высокой битовой скоростью или сжатием без потерь, варианты осуществления настоящего изобретения могут модифицировать способ получения положения последнего значимого коэффициента.

[121] В вариантах осуществления настоящего изобретения, во-первых, необходимо определить, удовлетворяет ли текущее видео заданному условию, которое может быть представлено флагом, относящимся к видео. В некоторых вариантах осуществления битовый поток может быть проанализирован для получения флага, относящегося к видео, следующим образом.

[122] Если флаг, относящийся к видео, имеет первое значение, определяют, что флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию.

[123] Альтернативно, если флаг, относящийся к видео, имеет второе значение, определяют, что флаг, относящийся к видео, указывает на то, что видео не удовлетворяет заданному условию

[124] В данном случае первое значение равно 1, а второе значение равно 0.

[125] Следует отметить, что в другом конкретном примере первое значение также может быть установлено в значение «истина», а второе значение также может быть установлено в значение «ложь». В еще одном конкретном примере первое значение также может быть установлено в значение 0, а второе значение также может быть установлено в значение 1. Необязательно первое значение также может быть установлено в значение «ложь», а второе значение также может быть установлено в значение «истина». Настоящее изобретение этим не ограничено.

[126] Также следует отметить, что заданное условие включает по меньшей мере одно из: высокой битовой глубины, высокого качества, высокой битовой скорости, высокой кадровой частоты или сжатия без потерь.

[127] То есть по сравнению с обычными видео, видео, описанное в вариантах осуществления настоящего изобретения, обладает характеристикой высокой битовой глубины, высокого качества, высокой битовой скорости, высокой частоты кадров или сжатия без потерь.

[128] Кроме того, флаг, относящийся к видео, может быть флагом уровня последовательности или даже флагом более высокого уровня, таким как информация об удобстве использования видео (VUI), информация для дополнительной оптимизации (SEI) и т. д. То, удовлетворяет ли видео заданному условию, можно определить, определив, удовлетворяет ли видео высокой глубине, или удовлетворяет ли видео высокой битовой скорости, или удовлетворяет ли видео высокому качеству, или удовлетворяет ли видео сжатию без потерь и т. д. Ниже в качестве примеров описывается каждый из этих четырех случаев.

[129] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом высокой битовой глубины, способ может дополнительно включать следующее.

[130] Если флаг высокой битовой глубины указывает на то, что видео удовлетворяет высокой битовой глубине, определяют, что видео удовлетворяет заданному условию.

[131] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом высокой битовой скорости, способ может дополнительно включать следующее.

[132] Если флаг высокой битовой скорости указывает на то, что видео удовлетворяет высокой битовой скорости, определяют, что видео удовлетворяет заданному условию.

[133] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом высокого качества, способ может дополнительно включать следующее.

[134] Если флаг высокого качества указывает на то, что видео удовлетворяет высокому качеству, определяют, что видео удовлетворяет заданному условию.

[135] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом сжатия без потерь, способ может дополнительно включать следующее.

[136] Если флаг сжатия без потерь указывает на то, что видео удовлетворяет сжатию без потерь, определяют, что видео удовлетворяет заданному условию.

[137] В качестве примера, взяв в качестве примера уровень последовательности, флаг, относящийся к видео, может быть флагом высокой битовой глубины (представленным sps_high_bit_depth_flag) для указания того, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной. Флаг, относящийся к видео, также может быть флагом высокой битовой скорости (представленным sps_high_bit_rate_flag) для указания того, является ли текущая видеопоследовательность последовательностью с высокой битовой скоростью. Флаг, относящийся к видео, также может быть другим флагом, указывающим на высокую битовую глубину, высокую битовую скорость, высокое качество или сжатие без потерь, что конкретно не ограничено в вариантах осуществления настоящего изобретения.

[138] На этапе S902, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, битовый поток анализируют с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента.

[139] Следует отметить, что когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, битовый поток может быть дополнительно проанализирован с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента.

[140] Информация о координате последнего значимого коэффициента может быть определена из last_sig_coeff_x_ prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix и last_sig_coeff_y_suffix. Таким образом, в некоторых вариантах осуществления битовый поток может быть проанализирован для получения информации о координате последнего значащего коэффициента следующим образом.

[141] Битовый поток анализируют с получением информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента. Горизонтальную координату последнего значимого коэффициента определяют согласно информации о префиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе горизонтальной координаты последнего значимого коэффициента. Вертикальную координату последнего значимого коэффициента определяют согласно информации о префиксе вертикальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента. Информацию о координате последнего значимого коэффициента определяют согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.

[142] Следует отметить, что информация о префиксе горизонтальной координаты последнего значимого коэффициента представлена last_sig_coeff_x_prefix, который указывает префикс горизонтальной координаты (или столбца) последнего значимого коэффициента в заданном порядке сканирования в текущем блоке. Информация о префиксе вертикальной координаты последнего значимого коэффициента представлена last_sig_coeff_y_prefix, который указывает префикс вертикальной координаты (или строки) последнего значимого коэффициента в заданном порядке сканирования в текущем блоке. Информация о суффиксе горизонтальной координаты последнего значимого коэффициента представлена last_sig_coeff_x_suffix, который указывает суффикс горизонтальной координаты (или столбца) последнего значимого коэффициента в заданном порядке сканирования в текущем блоке. Информация о суффиксе вертикальной координаты последнего значимого коэффициента представлена last_sig_coeff_y_suffix, который указывает суффикс вертикальной координаты (или строки) последнего значимого коэффициента в заданном порядке сканирования в текущем блоке.

[143] Следует также отметить, что last_sig_coeff_x_prefix и last_sig_coeff_x_suffix указывают абсциссу (т. е. горизонтальную координату) последнего значимого коэффициента, а last_sig_coeff_y_prefix и last_sig_coeff_y_suffix указывают ординату (т. е. вертикальную координату) последнего значимого коэффициента. Таким образом, получают информацию о координате последнего значимого коэффициента.

[144] флаг обратного положения последнего значимого коэффициента может быть представлен как reverse_last_sig_coeff_flag. В вариантах осуществления настоящего изобретения флаг обратного положения последнего значимого коэффициента может быть по меньшей мере флагом: уровня последовательности, уровня изображения, уровня слайса или уровня блока; или даже флагом более высокого уровня (например, VUI, SEI и т. д.), что не будет ограничено в настоящем описании.

[145] То есть, reverse_last_sig_coeff_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т.п. Дополнительно, флаг уровня блока может включать флаг уровня самого большого узла кодирования (LCU) или флаг уровня узла кодирования (CU), или другой флаг уровня блока, что не ограничено в вариантах осуществления настоящего изобретения.

[146] В некоторых вариантах осуществления способ может дополнительно включать следующее.

[147] Если флаг обратного положения последнего значимого коэффициента имеет первое значение, определяют, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока. Если флаг обратного положения последнего значимого коэффициента имеет второе значение, определяют, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока.

[148] То есть в примере, где первое значение равно 1, а второе значение равно 0, если reverse_last_sig_coeff_flag имеет значение 1, тогда можно определить, что reverse_last_sig_coeff_flag указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока. Альтернативно, если reverse_last_sig_coeff_flag имеет значение 0, тогда можно определить, что reverse_last_sig_coeff_flag указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока.

[149] На этапе S903, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока, положение последнего значимого коэффициента определяют путем вычисления с использованием информации о координате последнего значимого коэффициента.

[150] На этапе S904 согласно заданному порядку сканирования все коэффициенты перед положением последнего значимого коэффициента декодируют для определения коэффициентов текущего блока.

[151] Следует отметить, что в вариантах осуществления настоящего изобретения, когда флаг обратного положения последнего значимого коэффициента указывает, что положение последнего значимого коэффициента изменено на обратное для текущего блока, информацию о координате последнего значимого коэффициента можно определить как расстояние по горизонтали и расстояние по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока.

[152] В этом случае в некоторых вариантах осуществления положение последнего значимого коэффициента можно определить путем вычисления с помощью информации о координате последнего значимого коэффициента следующим образом:

[153] Определяют ширину и высоту текущего блока. Получают горизонтальную координату последнего значимого коэффициента путем вычитания из ширины текущего блока расстояния по горизонтали от положения последнего значимого коэффициента до нижнего правого угла текущего блока. Получают вертикальную координату последнего значимого коэффициента путем вычитания из высоты текущего блока расстояния по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока. Определяют положение последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.

[154] Следует отметить, что информация о координате последнего значимого коэффициента обычно является расстоянием по горизонтали и расстоянием по вертикали между положением последнего значимого коэффициента и верхним левым углом текущего блока. Для обычного видео большинство из значимых коэффициентов сосредоточено в верхнем левом углу, и большая область в правом нижнем углу имеет коэффициенты, равные 0. Однако для кодирования видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью в правом нижнем углу также появляется большое количество значимых коэффициентов, так что информация о координате последнего значимого коэффициента обычно имеет большие значения. В этом случае, чтобы сэкономить ресурсы, преобразование координаты (которое может быть вычислением изменения координаты на обратную, то есть после изменения координаты на обратную информацией о координате последнего значимого коэффициента является расстояние по горизонтали и расстояние по вертикали между положением последнего значимого коэффициента и нижним правым углом текущего блока) необходимо во время кодирования коэффициента. В этом случае также необходим расчет изменения координаты на обратную во время декодирования коэффициента. После повторного изменения на обратную, информация о координате последнего значимого коэффициента может быть восстановлена как расстояния по горизонтали и по вертикали между положением последнего значимого коэффициента и верхним левым углом текущего блока. Таким образом, положение последнего значимого коэффициента может быть определено, а затем коэффициенты перед положением последнего значимого коэффициента в текущем блоке могут быть декодированы согласно заданному порядку сканирования.

[155] Следует также отметить, что текущий блок здесь может быть блоком без преобразования нулевого вывода или блоком после преобразования нулевого вывода. Если взять в качестве примера блок после преобразования с нулевым выводом, ширина текущего блока равна 1<<log2ZoTbWidth, а высота текущего блока равна 1<<log2ZoTbHeight. Затем, в случае, когда reverse_last_sig_coeff_flag указывает, что положение последнего значимого коэффициента изменено на обратное для текущего блока (т. е. значение reverse_last_sig_coeff_flag равно 1):

LastSignificantCoeffX= (1<<log2ZoTbWidth) -1-LastSignificantCoeffX;

LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY.

[156] В приведенном выше примере (LastSignificantCoeffX, LastSignificantCoeffY) в правой части уравнения представляет собой информацию о координате последнего значимого коэффициента, полученную путем декодирования, а (LastSignificantCoeffX, LastSignificantCoeffY) в левой части уравнения представляет собой положение последнего значимого коэффициента (которое также можно рассматривать как информацию о целевой координате последнего значимого коэффициента).

[157] В некоторых вариантах осуществления настоящего изобретения в случае, когда значение reverse_last_sig_coeff_flag равно 0, способ может дополнительно включать следующее.

[158] Когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока, информацию о координате последнего значимого коэффициента определяют как расстояние по горизонтали и расстояние по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока. Положение последнего значимого коэффициента определяют согласно расстоянию по горизонтали и расстоянию по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока.

[159] Следует отметить, что если reverse_last_sig_coeff_flag указывает, что положение последнего значимого коэффициента не изменено на обратное для текущего блока, тогда информацию о координате последнего значимого коэффициента, полученную посредством декодирования, можно рассматривать как информацию о целевой координате последнего значимого коэффициента. В вариантах осуществления настоящего изобретения информация о целевой координате последнего значимого коэффициента является расстоянием по горизонтали и расстоянием по вертикали между положением последнего значимого коэффициента и верхним левым углом текущего блока.

[160] Кроме того, в некоторых вариантах осуществления способ может дополнительно включать следующее.

[161] Когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока, положение последнего значимого коэффициента определяют непосредственно согласно информации о координате последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента в заданном порядке сканирования декодируют для определения коэффициентов текущего блока.

[162] Следует отметить, что заданный порядок сканирования может быть диагональным порядком, зигзагообразным порядком, горизонтальным порядком, вертикальным порядком, порядком сканирования подблоков 4×4 или любым другим порядком сканирования, что не ограничено вариантами осуществления настоящего изобретения.

[163] Следует также отметить, что после получения reverse_last_sig_coeff_flag, если значение reverse_last_sig_coeff_flag равно 1, т. е. положение последнего значимого коэффициента должно быть изменено на обратное, то после получения информации о координате последнего значимого коэффициента посредством декодирования необходимо выполнить дополнительное вычисление, используя информацию о координате последнего значимого коэффициента для определения положения последнего значимого коэффициента. Тогда все коэффициенты перед положением последнего значимого коэффициента декодируют согласно заданному порядку сканирования. Если значение reverse_last_sig_coeff_flag равно 0, т. е. нет необходимости изменять на обратное положение последнего значимого коэффициента, тогда после получения информации о координате последнего значимого коэффициента посредством декодирования, положение последнего значимого коэффициента можно определить непосредственно согласно информации о координате последнего значимого коэффициента. Тогда все коэффициенты перед положением последнего значимого коэффициента декодируют согласно заданному порядку сканирования.

[164] Таким образом, для определенных случаев варианты осуществления настоящего изобретения предоставляют модифицированный способ определения положения последнего значимого коэффициента во время кодирования коэффициентов. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. Обычно, как изображено на фиг. 10A, горизонтальную координату положения последнего значимого коэффициента, то есть расстояние по горизонтали относительно верхнего левого угла текущего блока, кодируют в last_sig_coeff_x_prefix и last_sig_coeff_x_suffix, а вертикальную координату положения последнего значимого коэффициента, то есть расстояние по вертикали относительно верхнего левого угла текущего блока, кодируют в last_sig_coeff_y_prefix и last_sig_coeff_y_suffix. Для сравнения, в случае высокой битовой глубины, высокого качества, высокой битовой скорости или сжатия без потерь при кодировании видео положение последнего значимого коэффициента обычно находится близко к правому нижнему углу области всех возможных значимых коэффициентов текущего блока. В этом случае, как проиллюстрировано на фиг. 10B расстояние по горизонтали положения последнего значимого коэффициента относительно правого нижнего угла области всех возможных значимых коэффициентов текущего блока кодируют в last_sig_coeff_x_prefix и last_sig_coeff_x_suffix, а расстояние по вертикали положения последнего значимого коэффициента относительно правого нижнего угла области всех возможных значимых коэффициентов текущего блока кодируют в last_sig_coeff_y_prefix, last_sig_coeff_y_suffix. Например, если область всех возможных значимых коэффициентов текущего блока представляет собой прямоугольную область от (0, 0) до ((1<<log2ZoTbWidth) -1, (1<<log2ZoTbHeight)-1), то last_sig_coeff_x_prefix и last_sig_coeff_x_suffix кодируют для представления расстояния по горизонтали положения последнего значимого коэффициента относительно текущего блока ((1<<log2ZoTbWidth) -1, (1<<log2ZoTbHeight) -1). last_sig_coeff_y_prefix и last_sig_coeff_y_suffix кодируют для представления расстояния по вертикали положения последнего значимого коэффициента относительно текущего блока ((1<<log2ZoTbWidth) -1, (1<<log2ZoTbHeight) -1).

[165] Изменения семантики заключаются в следующем.

[166] Значение LastSignificantCoeffX горизонтальной координаты (или столбца) последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока, выводят следующим образом:

Если last_sig_coeff_x_suffix не присутствует, тогда:

LastSignificantCoeffX = last_sig_coeff_x_prefix;

В противном случае (last_sig_coeff_x_suffix присутствует):

LastSignificantCoeffX = (1<<((last_sig_coeff_x_prefix>>1) -1)) * (2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix.

Если reverse_last_sig_coeff_flag равен 1, тогда:

LastSignificantCoeffX = (1<<log2ZoTbWidth) -1-LastSignificantCoeffX.

[167] Значение LastSignificantCoeffY вертикальной координаты (или строки) последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока, выводят следующим образом:

Если last_sig_coeff_y_suffix не присутствует, тогда:

LastSignificantCoeffY = last_sig_coeff_y_prefix;

В противном случае (last_sig_coeff_y_suffix присутствует) применимо следующее:

LastSignificantCoeffY= (1<<((last_sig_coeff_y_prefix>>1) -1)) * (2+(last_sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix.

Если reverse_last_sig_coeff_flag равен 1, тогда:

LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY.

[168] В вышеприведенном примере reverse_last_sig_coeff_flag представляет собой флаг обратного положения последнего значимого коэффициента, который указывает, нужно ли изменить на обратное положение последнего значимого коэффициента или нет. Если значение reverse_last_sig_coeff_flag равно 1, это указывает на то, что положение последнего значимого коэффициента необходимо изменить на обратное; в противном случае это указывает на то, что положение последнего значащего коэффициента не нужно менять на обратное.

[169] Следует также отметить, что reverse_last_sig_coeff_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т.п. Флаг уровня блока может включать флаг уровня LCU, флаг уровня CU или другой флаг уровня блока.

[170] Кроме того, reverse_last_sig_coeff_flag может зависеть от некоторых других флагов, таких как флаг высокой битовой глубины или флаг высокой битовой скорости. То есть, когда значение флага высокой битовой глубины или флага высокой битовой скорости равно 1, необходимо декодировать reverse_last_sig_coeff_flag; в противном случае нет необходимости декодировать reverse_last_sig_coeff_flag.

[171] В конкретном примере, взяв в качестве примера уровень последовательности, предположим, что существует флаг уровня последовательности sps_high_bit_length_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной. Если значение sps_high_bit_length_flag равно 1, это означает, что текущая видеопоследовательность представляет собой последовательность с высокой битовой глубиной; в противном случае это указывает на то, что текущая видеопоследовательность не является последовательностью с высокой битовой глубиной. На уровне последовательности, если значение sps_high_bit_length_flag равно 1, то необходимо декодировать sps_reverse_last_sig_coeff_flag. В данном случае sps_reverse_last_sig_coeff_flag - это флаг обратного положения последнего значимого коэффициента текущей последовательности. Если значение sps_reverse_last_sig_coeff_flag равно 1, то это указывает на то, что положение последнего значимого коэффициента изменено на обратное для блоков в текущей последовательности; в противном случае (т.е. значение sps_reverse_ last_sig_coeff_flag равно 0) это указывает на то, что положение последнего значимого коэффициента не изменено на обратное для блоков в текущей последовательности. reverse_last_sig_coeff_flag в приведенной выше таблице синтаксиса изменится на sps_reverse_last_sig_coeff_flag.

[172] Элементы синтаксиса следующие (синтаксис RBSP набора параметров последовательности), см. Таблицу 3.

Таблица 3

sps_high_bit_depth_flag u(1) if( sps_high_bit_depth_flag ) sps_default_last_coeff_enabled_flag u(1)

[173] В другом конкретном примере, взяв в качестве примера уровень слайса, предположим, что существует флаг уровня последовательности sps_high_bit_length_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной или нет. Если значение sps_high_bit_length_flag равно 1, это означает, что текущая видеопоследовательность представляет собой последовательность с высокой битовой глубиной; в противном случае это указывает на то, что текущая видеопоследовательность не является последовательностью с высокой битовой глубиной. На уровне слайса, если значение sps_high_bit_length_flag равно 1, то необходимо декодировать sh_reverse_last_sig_coeff_flag. В данном случае sh_reverse_last_sig_coeff_flag представляет собой флаг обратного положения последнего значимого коэффициента текущего слайса. Если значение sh_reverse_last_sig_coeff_flag равно 1, то это означает, что положение последнего значимого коэффициента изменено на обратное для блоков в текущем слайсе; в противном случае (т.е., значение sh_reverse_last_sig_coeff_flag равно 0) это означает, что положение последнего значимого коэффициента не изменено на обратное для блоков в текущем слайсе. reverse_last_sig_coeff_flag в приведенной выше таблице синтаксиса изменяется на sh_reverse_last_sig_coeff_flag.

[174] Элементы синтаксиса следующие (Синтаксис заголовка слайса), см. Таблицу 4.

Таблица 4

if( sps_high_bit_depth_flag ) sh_reverse_last_sig_coeff_flag u(1)

[175] Также следует понимать, что когда флаг, относящийся к видео, указывает, что видео удовлетворяет заданному условию, все коэффициенты, которые, возможно, потребуется кодировать, по умолчанию требуют кодирования. Другими словами, положение последнего значимого коэффициента больше не используется, а вместо этого все возможные значимые коэффициенты текущего блока сканируют в заданном порядке сканирования. Таким образом, варианты осуществления настоящего изобретения могут также вводить флаг, обусловленный последним коэффициентом, для определения того, используется ли положение последнего коэффициента для текущего блока.

[176] В некоторых вариантах осуществления, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, способ может дополнительно включать следующее.

[177] Анализируют битовый поток с получением флага, обусловленного последним коэффициентом. Когда флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента используется для текущего блока, все коэффициенты перед положением последнего коэффициента декодируют согласно заданному порядку сканирования для определения коэффициентов текущего блока.

[178] Следует отметить, что флаг, обусловленный последним коэффициентом, может быть представлен как default_last_coeff_enabled_flag. В вариантах осуществления настоящего изобретения флаг, обусловленный последним коэффициентом, может быть по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса и уровня блока; или даже флагом более высокого уровня (например, VUI, SEI и т. д.), что не ограничено здесь.

[179] То есть, default_last_coeff_enabled_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т.п. Дополнительно, флаг уровня блока может включать флаг уровня LCU, или флаг уровня CU, или другой флаг уровня блока, что в не ограничено здесь.

[180] В некоторых вариантах осуществления способ может дополнительно включать следующее.

[181] Когда флаг, обусловленный последним коэффициентом, имеет первое значение, определяют, что флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента используется для текущего блока. Когда флаг, обусловленный последним коэффициентом, имеет второе значение, определяют, что флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента не используется для текущего блока.

[182] В данном случае первое значение равно 1, а второе значение равно 0.

[183] Следует отметить, что в другом конкретном примере первое значение также может быть установлено в значение «истина», а второе значение также может быть установлено в значение «ложь». В еще одном конкретном примере первое значение также может быть установлено в значение 0, а второе значение также может быть установлено в значение 1. Необязательно первое значение также может быть установлено в значение «ложь», а второе значение также может быть установлено в значение «истина». Настоящее изобретение этим не ограничено.

[184] Таким образом, в примере, где первое значение равно 1, а второе значение равно 0, если default_last_coeff_enabled_flag имеет значение 1, тогда можно определить, что default_last_coeff_enabled_flag указывает на то, что положение последнего коэффициента используется для текущего блока. Альтернативно, если default_last_coeff_enabled_flag имеет значение 0, тогда можно определить, что default_last_coeff_enabled_flag указывает на то, что положение последнего коэффициента не используется для текущего блока.

[185] В случае, когда положение последнего коэффициента используется для текущего блока, все коэффициенты перед положением последнего коэффициента могут быть декодированы согласно заданному порядку сканирования, с определением таким образом коэффициентов текущего блока.

[186] Дополнительно, в случае когда положение последнего коэффициента не используется для текущего блока, т. е. флаг, обусловленный последним коэффициентом, имеет значение 0, в некоторых вариантах осуществления способ может дополнительно включать следующее.

[187] Битовый поток анализируют с получением информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента. Положение последнего значимого коэффициента определяют согласно информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента декодируют в соответствии с заданным порядком сканирования, определяя таким образом коэффициенты текущего блока.

[188] Следует отметить, что если положение последнего коэффициента не используется для текущего блока, тогда необходимо декодировать положение последнего значимого коэффициента. В частности, last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_ prefix, и last_sig_coeff_y_suffix получают путем анализа битового потока, а затем местоположение последнего значимого коэффициента определяют на основе last_sig_coeff_x_ prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix, and last_sig_coeff_y_suffix. В противном случае, если положение последнего коэффициента используют для текущего блока, нет необходимости определять положение последнего значимого коэффициента, и тогда больше нет необходимости получать last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_ prefix и last_sig_coeff_y_suffix.

[189] Также следует отметить, что если положение последнего коэффициента не используется для текущего блока, тогда все коэффициенты перед положением последнего коэффициента могут быть декодированы согласно заданному порядку сканирования. Если положение последнего коэффициента не используется для текущего блока, тогда все коэффициенты перед положением последнего значимого коэффициента могут быть декодированы в заданном порядке сканирования. В данном случае заданный порядок сканирования может быть диагональным порядком, зигзагообразным порядком, горизонтальным порядком, вертикальным порядком, порядком сканирования подблоков 44 или любым другим порядком сканирования, что не ограничено в вариантах осуществления настоящего изобретения.

[190] Также, для положения последнего коэффициента в некоторых вариантах осуществления положение последнего коэффициента является положением в нижнем правом углу матрицы, образованной всеми возможными значимыми коэффициентами в текущем блоке. Альтернативно положение последнего коэффициента является последним положением при сканировании всех возможных значимых коэффициентов в текущем блоке согласно заданному порядку сканирования.

[191] Следует отметить, что в вариантах осуществления изобретения положение последнего коэффициента не представляет собой положение последнего значимого коэффициента. Это связано с тем, что коэффициент в положении последнего значимого коэффициента может быть равен 0, тогда как коэффициент в положении последнего значимого коэффициента не должен быть равен 0.

[192] В конкретном примере способ может дополнительно включать установку положения последнего значимого коэффициента в качестве положения последнего коэффициента.

[193] То есть, в вариантах осуществления настоящего изобретения положение последнего значимого коэффициента все еще может использоваться, и в этом случае положение последнего значимого коэффициента должно быть установлено как последнее положение всех коэффициентов, которые могут не быть нулевыми в текущем блоке в заданном порядке сканирования.

[194] Дополнительно, положение последнего коэффициента может быть представлено (LastCoeffX, LastCoeffY), т.е., последнее положение всех возможных значимых коэффициентов в текущем блоке в заданном порядке сканирования. В некоторых вариантах осуществления способ может дополнительно включать следующее.

[195] Определяют ширину и высоту блока преобразования, полученные в заданной операции на текущем блоке. Информацию о координате нижнего правого угла блока преобразования получают посредством вычисления координаты согласно ширине и высоте блока преобразования. Положение последнего коэффициента определяют согласно информации о координате нижнего правого угла блока преобразования.

[196] В данном случае заданная операция включает по меньшей мере операцию нулевого вывода.

[197] Следует отметить, что (LastCoeffX, LastCoeffY) представляет собой информацию о координате правого нижнего угла блока преобразования после нулевого вывода, где (LastCoeffX, LastCoeffY) получают следующим образом:

LastCoeffX= (1<<log2ZoTbWidth) -1;

LastCoeffY= (1<<log2ZoTbHeight) -1.

[198] Таким образом, если default_last_coeff_enabled_flag имеет значение 1, то положение последнего коэффициента может быть определено на основе (LastCoeffX, LastCoeffY).

[199] В конкретном примере положение последнего значимого коэффициента все еще используется, и в этом случае положение последнего значимого коэффициента может быть установлено как последнее положение всех возможных нулевых коэффициентов в текущий блок в заданном порядке сканирования. В некоторых вариантах осуществления способ может дополнительно включать следующее.

[200] Когда положение последнего значимого коэффициента установлено как положение последнего коэффициента, положение последнего значимого коэффициента определяют согласно информации о координате нижнего правого угла блока преобразования.

[201] То есть, позиция последнего значимого коэффициента может быть представлена как (LastSignificantCoeffX, LastSignificantCoeffY), где (LastSignificantCoeffX, LastSignificantCoeffY) получают следующим образом:

LastSignificantCoeffX= (1 << log2ZoTbWidth) -1;

LastSignificantCoeffY= (1 << log2ZoTbHeight) -1.

[202] Как указано выше, (LastSignificantCoeffX, LastSignificantCoeffY) представляет собой информацию о координате нижнего правого угла блока преобразования после нулевого вывода. Если значение default_last_coeff_enabled_flag равно 1, то положение последнего значимого коэффициента может быть определено на основе(LastSignificantCoeffX, LastSignificantCoeffY).

[302] Таким образом, в некоторых случаях кодирование требуется по умолчанию для всех коэффициентов, которые, возможно, потребуется закодировать. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. Кодирование требуется по умолчанию для всех коэффициентов, которые, возможно, потребуется закодировать, т. е. положение последнего значимого коэффициента больше не используется, и вместо этого все возможные значимые коэффициенты текущего блока сканируют в заданном порядке сканирования. Другими словами, последнее положение коэффициентов, которые необходимо закодировать, устанавливают как положение всех возможных значимых коэффициентов текущего блока в заданном порядке сканирования. Это положение обычно является положением в нижнем правом углу матрицы, образованной всеми возможными значимыми коэффициентами текущего блока. В данном случае вместо положения последнего значимого коэффициента используется положение последнего кодируемого коэффициента. Это связано с тем, что коэффициент в положении последнего значимого коэффициента, подлежащем кодированию, может быть равен 0, тогда как коэффициент в положении последнего значимого коэффициента не должен быть равен 0.

[204] В отдельном случае положение последнего значимого коэффициента продолжает использоваться, и в этом случае положение последнего значимого коэффициента установлено как последнее положение всех возможных значимых коэффициентов текущего блока в заданном порядке сканирования.

[205] Кроме того, здесь упоминаются все возможные значимые коэффициенты текущего блока в заданном порядке сканирования, поскольку, помимо последнего значимого коэффициента, некоторые коэффициенты устанавливают по умолчанию равными 0 с помощью некоторых других методов, например, нулевого вывода, как упомянуто выше.

[206] Изменения семантики проиллюстрированы в Таблице 5.

Таблица 5

if(!default_last_coeff_enabled_flag){ if( log2TbWidth > 0 ) last_sig_coeff_x_prefix ae(v) if( log2TbHeight > 0 ) last_sig_coeff_y_prefix ae(v) if( last_sig_coeff_x_prefix > 3 ) last_sig_coeff_x_suffix ae(v) if( last_sig_coeff_y_prefix > 3 ) last_sig_coeff_y_suffix ae(v) }

[207] В вариантах осуществления настоящего изобретения условие может быть добавлено перед декодированием информации, необходимой для последнего значимого коэффициента. То есть, только когда default_last_coeff_enabled_flag является ложью (т. е., default_last_coeff_ enabled_flag равно 0), необходимо декодировать элементы синтаксиса, такие как last_sig_ coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix и last_sig_coeff_y_suffix. Если default_last_coeff_enabled_flag является истиной (т. е., default_last_coeff_ enabled_flag равно 1), тогда нет необходимости декодировать элементы синтаксиса, такие как last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix и last_sig_coeff_y_suffix.

[208] В данном случае default_last_coeff_enabled_flag - это флаг, обусловленный последним коэффициентом, по умолчанию, который используется для указания, следует ли использовать последний коэффициент по умолчанию. Если значение default_last_coeff_enabled_flag равно 1, оно указывает на то, что используется положение последнего коэффициента по умолчанию, т. е. положение последнего коэффициента, подлежащего кодированию установлено как последнее положение всех возможных значимых коэффициентов в текущем блоке в заданном порядке сканирования. В противном случае это означает, что положение последнего коэффициента по умолчанию не используется.

[209] Если значение default_last_coeff_enabled_flag равно 1, тогда положение последнего коэффициента (LastCoeffX, LastCoeffY) по умолчанию установлено как последнее положение всех возможных значимых коэффициентов в текущем блоке в заданном порядке сканирования. Все коэффициенты перед (LastCoeffX, LastCoeffY) в заданном порядке сканирования должны быть отсканированы. В вариантах осуществления настоящего изобретения (LastCoeffX, LastCoeffY) получают следующим образом:

LastCoeffX= (1<<log2ZoTbWidth) -1;

LastCoeffY= (1<<log2ZoTbHeight) -1.

[210] (LastCoeffX, LastCoeffY) представляет собой информацию о координате нижнего правого угла блока преобразования после нулевого вывода.

[211] Отдельный случай заключается в продолжении использования положения последнего значимого коэффициента, которое установлено как последнее положение всех возможных значимых коэффициентов в текущем блоке в заданном порядке сканирования. В вариантах реализации настоящего изобретения положение последнего значимого коэффициента (LastSignificantCoeffX, LastSignificantCoeffY) получают следующим образом:

LastSignificantCoeffX= (1<<log2ZoTbWidth) -1;

LastSignificantCoeffY= (1<<log2ZoTbHeight) -1.

[212] (LastSignificantCoeffX, LastSignificantCoeffY) представляет собой информацию о координате нижнего правого угла блока преобразования после нулевого вывода.

[213] Следует также отметить, что default_last_coeff_enabled_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т.п. Дополнительно, флаг уровня блока может включать флаг уровня LCU, флаг уровня CU или другой флаг уровня блока.

[214] Кроме того, default_last_coeff_enabled_flag может зависеть от некоторых других флагов, таких как флаг высокой битовой глубины или флаг высокой битовой скорости. То есть, когда значение флага высокой битовой глубины или флага высокой битовой скорости равно 1, необходимо декодировать default_last_ coeff_enabled_flag; в противном случае нет необходимости декодировать default_last_coeff_enabled_flag.

[215] В конкретном примере, взяв в качестве примера уровень последовательности, предположим, что существует флаг уровня последовательности sps_high_bit_length_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной. Если значение sps_high_bit_length_flag равно 1, это означает, что текущая видеопоследовательность представляет собой последовательность с высокой битовой глубиной; в противном случае это указывает на то, что текущая видеопоследовательность не является последовательностью с высокой битовой глубиной. На уровне последовательности, если значение sps_high_ bit_depth_flag равно 1, то необходимо декодировать sps_default_last_coeff_enabled_flag. В данном случае sps_default_last_coeff_enabled_flag - это флаг, обусловленный последним коэффициентом, по умолчанию текущей последовательности. Если значение sps_default_last_coeff_enabled_flag равно 1, то это указывает на то, что последний коэффициент по умолчанию используется для блоков в текущей последовательности; в противном случае (т.е., значение sps_default_last_coeff_enabled_flag равно 0) это указывает на то, что последний коэффициент по умолчанию не используется для блоков в текущей последовательности. default_last_coeff_enabled_flag в приведенной выше таблице синтаксиса изменится на sps_default_last_coeff_enabled_flag.

[216] Элементы синтаксиса следующие (синтаксис RBSP набора параметров последовательности), см. Таблицу 6.

Таблица 6

sps_high_bit_depth_flag u(1) if( sps_high_bit_depth_flag ) sps_default_last_coeff_enabled_flag u(1)

[217] В другом конкретном примере, взяв в качестве примера уровень слайса, предположим, что существует флаг уровня последовательности sps_high_bit_length_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной или нет. Если значение sps_high_bit_length_flag равно 1, это означает, что текущая видеопоследовательность представляет собой последовательность с высокой битовой глубиной; в противном случае это указывает на то, что текущая видеопоследовательность не является последовательностью с высокой битовой глубиной. На уровне слайса, если значение sps_high_ bit_depth_flag равно 1, то необходимо декодировать sh_default_last_coeff_enabled_flag. В данном случае sh_default_last_coeff_enabled_flag - это флаг, обусловленный последним коэффициентом, по умолчанию последнего коэффициента текущего слайса. Если значение sh_default_last_coeff_enabled_flag равно 1, то это означает, что последний коэффициент по умолчанию используется для блоков в текущем слайсе; в противном случае (т.е., значение sh_default_last_coeff_enabled_flag равно 0) это означает, что последний коэффициент по умолчанию не используется для блоков в текущем слайсе. default_last_coeff_enabled_flag в приведенной выше таблице синтаксиса изменится на sh_default_last_coeff_enabled_flag.

[218] Элементы синтаксиса следующие (Синтаксис заголовка слайса), см. Таблицу 7.

Таблица 7

if( sps_high_bit_depth_flag ) sh_default_last_coeff_enabled_flag u(1)

[219] акже понятно, что когда флаг, относящийся к видео, указывает, что видео удовлетворяет заданному условию, кодирование может потребоваться по умолчанию для всех сканируемых подблоков. В этом случае нет необходимости передавать sb_coded_flag в битовом потоке, т.е. ни кодеру, ни декодеру не нужно обрабатывать этот флаг, что может ускорить кодирование. Следовательно, в вариантах осуществления настоящего изобретения вводится флаг кодированного по умолчанию подблока для определения того, использует ли подблок, подлежащий декодированию в текущем блоке, кодирование по умолчанию.

[220] В некоторых вариантах осуществления, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, способ может дополнительно включать следующее.

[221] Анализируют битовый поток с получением флага кодированного по умолчанию подблока. Когда флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий кодированию, по умолчанию используется для кодирования, определяют, что флаг кодированного подблока имеет первое значение, и все коэффициенты в подблоке, подлежащем декодированию, в текущем блоке декодируются.

[222] Следует отметить, что флаг по умолчанию подблока может быть представлен как default_sb_coded_flag. В вариантах осуществления настоящего изобретения флаг кодированного по умолчанию подблока является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса и уровня блока, или даже может быть флагом более высокого уровня (например, VUI, SEI и т. д.), что не ограничено в настоящем описании.

[223] То есть, default_sb_coded_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т.п. Дополнительно, флаг уровня блока может включать флаг уровня LCU, или флаг уровня CU, или другой флаг уровня блока, что в не ограничено здесь.

[224] В некоторых вариантах осуществления способ может дополнительно включать следующее.

[225] Если флаг кодированного по умолчанию подблока имеет первое значение, определяют, что флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий кодированию, по умолчанию используется для кодирования. Если флаг кодированного по умолчанию подблока имеет второе значение, определяют, что флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий кодированию, по умолчанию не используется для кодирования.

[226] В данном случае первое значение равно 1, а второе значение равно 0.

[227] Следует отметить, что в другом конкретном примере первое значение также может быть установлено в значение «истина», а второе значение также может быть установлено в значение «ложь». В еще одном конкретном примере первое значение также может быть установлено в значение 0, а второе значение также может быть установлено в значение 1. Необязательно первое значение также может быть установлено в значение «ложь», а второе значение также может быть установлено в значение «истина». Настоящее изобретение этим не ограничено.

[228] Таким образом, в примере, где первое значение равно 1, а второе значение равно 0, если default_sb_coded_flag имеет значение 1, тогда можно определить, что default_sb_coded_flag указывает на то, что подблок, подлежащий декодированию, по умолчанию требует кодирования. Альтернативно, если default_sb_coded_flag имеет значение 0, то можно определить, что default_sb_ coded_flag указывает на то, что подблок, подлежащий декодированию, по умолчанию не требует кодирования.

[229] В случае, когда подблок, подлежащий декодированию, по умолчанию требует кодирования, значение default_sb_coded_flag равно 1, что означает. Что значение sb_coded_flag равно 1, т. е., нет необходимости декодировать sb_coded_flag. В этом случае по умолчанию требуется декодирование всех коэффициентов внутри подблока, подлежащего декодированию.

[230] Дополнительно, в случае когда подблок, подлежащий декодированию, по умолчанию не требует кодирования, т.е. где значение default_sb_coded_flag равно 0, в некоторых вариантах осуществления способ может дополнительно включать следующее.

[231] Анализируют битовый поток с получением флага кодированного подблока. Все коэффициенты в подблоке, подлежащем декодированию, декодируют, когда флаг кодированного подблока имеет первое значение.

[232] Следует отметить, что если подблок, подлежащий декодированию, по умолчанию не требует кодирования, то необходимо декодировать флаг кодированного подблока, согласно которому определяется, декодировать ли все коэффициенты внутри подблока, подлежащего декодированию.

[233] Также, для флага кодированного подблока способ может дополнительно включать следующее.

[234] Если флаг кодированного подблока имеет первое значение, определяют, что необходимо кодировать все коэффициенты внутри подблока. Альтернативно, если флаг кодированного подблока имеет второе значение, определяют, что все коэффициенты внутри подблока, подлежащего декодированию, равны нулю.

[235] В вариантах осуществления настоящего изобретения флаг кодированного подблока может быть представлен как sb_coded_flag. Взяв в качестве примера первое значение 1 и второе значение 0, если значение sb_coded_flag равно 1, тогда можно определить, что все коэффициенты внутри подблока, подлежащего декодированию, необходимо декодировать. Альтернативно, если значение sb_coded_flag равно 0, тогда может быть определено, что нет необходимости декодировать все коэффициенты внутри подблока, подлежащего декодированию, и в этом случае все коэффициенты внутри подблока, подлежащего декодированию, равны нулю.

[236] Таким образом, в определенных случаях во время кодирования коэффициентов все сканируемые подблоки по умолчанию требуют кодирования, или все сканированные подблоки по умолчанию содержат значимые коэффициенты. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. В этом случае имеется много значимых коэффициентов, и почти все сканируемые подблоки требуют кодирования, или, другими словами, почти все сканируемые подблоки содержат значимые коэффициенты. По существу, нет необходимости передавать sb_coded_flag в битовом потоке, а кодеру/декодеру не нужно обрабатывать этот флаг, что обеспечивает более высокую скорость кодирования. В этом случае также наблюдается небольшой прирост эффективности сжатия за счет удаления практически несуществующего флага.

[237] Изменения семантики показаны в Таблице 8.

Таблица 8

if( i<lastSubBlock && i>0 ) { if(!default_sb_coded_flag) { sb_coded_flag[xS][yS] ae(v) } inferSbDcSigCoeffFlag = 1 }

[238] default_sb_coded_flag - это флаг, указывающий, используется ли по умолчанию подблок для кодирования. Если значение default_sb_coded_flag равно 1, то можно определить, что значение sb_coded_flag[xS][yS] равно 1, и в этом случае нет необходимости декодировать sb_coded_flag[xS][yS] из битового потока. В противном случае (значение default_sb_coded_flag равно 0) все равно необходимо декодировать sb_coded_flag[xS][yS] из битового потока.

[239] Следует также отметить, что default_sb_coded_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т. п. Дополнительно, флаг уровня блока может включать флаг уровня LCU, флаг уровня CU или другой флаг уровня блока.

[240] Кроме того, default_sb_coded_flag может зависеть от некоторых других флагов, таких как флаг высокой битовой глубины или флаг высокой битовой скорости. То есть, когда значение флага высокой битовой глубины или флага высокой битовой скорости равно 1, необходимо декодировать default_sb_coded_flag; в противном случае нет необходимости декодировать default_sb_coded_flag.

[241] В одном конкретном примере, взяв в качестве примера уровень последовательности, предположим, что существует флаг уровня последовательности sps_high_bit_length_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной. Если значение sps_high_bit_length_flag равно 1, это означает, что текущая видеопоследовательность представляет собой последовательность с высокой битовой глубиной; в противном случае это указывает на то, что текущая видеопоследовательность не является последовательностью с высокой битовой глубиной. На уровне последовательности, если значение sps_high_bit_length_flag равно 1, то необходимо декодировать sps_default_sb_coded_flag. В данном случае sps_default_sb_coded_flag - это флаг, указывающий, требуется ли кодирование по умолчанию для подблоков текущей последовательности. Если значение sps_default_sb_coded_flag равно 1, это означает, что подблоки блоков в текущей последовательности по умолчанию требуют кодирования; в противном случае (т. е. значение sps_default_sb_coded_flag равно 0) это означает, что подблоки блоков в текущей последовательности не требуют кодирования по умолчанию. default_sb_coded_flag в приведенной выше таблице синтаксиса изменится на sps_default_sb_coded_flag.

[242] Элементы синтаксиса следующие (синтаксис RBSP набора параметров последовательности), см. Таблицу 9.

Таблица 9

sps_high_bit_depth_flag u(1) if( sps_high_bit_depth_flag ) sps_default_sb_coded_flag u(1)

[243] В другом конкретном примере, взяв в качестве примера уровень слайса, предположим, что существует флаг уровня последовательности sps_high_bit_length_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной или нет. Если значение sps_high_bit_length_flag равно 1, это означает, что текущая видеопоследовательность представляет собой последовательность с высокой битовой глубиной; в противном случае это указывает на то, что текущая видеопоследовательность не является последовательностью с высокой битовой глубиной. На уровне слайса, если значение sps_high_ bit_depth_flag равно 1, то необходимо декодировать sh_default_sb_coded_flag. В данном случае sh_default_sb_coded_flag - это флаг, указывающий, требуется ли кодирование по умолчанию для подблоков для текущего слайса. Если значение sh_default_sb_coded_flag равно 1, то это означает, что подблоки блоков в текущем слайсе по умолчанию требуют кодирования; в противном случае (т. е. значение sh_default_sb_coded_flag равно 0) это означает, что подблоки блоков внутри текущего слайса по умолчанию не требуют кодирования. default_sb_coded_flag в приведенной выше таблице синтаксиса изменится на sh_default_sb_coded_flag.

[244] Элементы синтаксиса следующие (Синтаксис заголовка слайса), см. Таблицу 10.

Таблица 10

if( sps_high_bit_depth_flag ) sh_reverse_last_sig_coeff_flag u(1)

[245] Понятно, что варианты осуществления настоящего изобретения относятся к трем способам оптимизации, а именно к следующим.

[246] Способ 1: для некоторых случаев, при кодировании коэффициента кодирование требуется по умолчанию для всех коэффициентов. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. Кодирование требуется по умолчанию для всех коэффициентов, которые, возможно, потребуется закодировать, т. е. положение последнего значимого коэффициента больше не используется, и вместо этого все возможные значимые коэффициенты текущего блока сканируют в заданном порядке сканирования. Другими словами, последнее положение коэффициентов, которые необходимо закодировать, устанавливают как положение всех возможных значимых коэффициентов текущего блока в заданном порядке сканирования. В данном случае вместо положения последнего значимого коэффициента используется положение последнего кодируемого коэффициента. Это связано с тем, что коэффициент в положении последнего значимого коэффициента, подлежащем кодированию, может быть равен 0, тогда как коэффициент в положении последнего значимого коэффициента не должен быть равен 0.

[247] Также, в отдельном случае положение последнего значимого коэффициента все еще используется, и в этом случае положение последнего значимого коэффициента установлено как последнее положение всех возможных значимых коэффициентов текущего блока в заданном порядке сканирования.

[248] Способ 2: в определенных случаях при кодировании коэффициентов изменяется способ определения положения последнего значимого коэффициента. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. Обычно горизонтальную координату положения последнего значимого коэффициента, то есть расстояние по горизонтали относительно верхнего левого угла текущего блока, кодируют в last_sig_coeff_x_prefix и Last_sig_coeff_x_suffix, а вертикальную координату положения последнего значимого коэффициента, то есть расстояние по вертикали относительно верхнего левого угла текущего блока, кодируют в last_sig_coeff_y_prefix и last_sig_coeff_y_suffix. Для сравнения, в случае высокой битовой глубины, высокого качества, высокой битовой скорости или сжатия без потерь при кодировании видео положение последнего значимого коэффициента обычно находится близко к правому нижнему углу области всех возможных значимых коэффициентов текущего блока. В этом случае расстояние по горизонтали положения последнего значимого коэффициента относительно правого нижнего угла области всех возможных значимых коэффициентов текущего блока кодируют в last_sig_coeff_x_prefix и last_sig_coeff_x_suffix, а расстояние по вертикали положения последнего значимого коэффициента относительно правого нижнего угла области всех возможных значимых коэффициентов текущего блока кодируют в last_sig_coeff_y_prefix, last_sig_coeff_y_suffix. Например, если область всех возможных значимых коэффициентов текущего блока представляет собой прямоугольную область от (0, 0) до ((1<<log2ZoTbWidth) -1, (1<<log2ZoTbHeight)-1), то last_sig_coeff_x_prefix и last_sig_coeff_x_suffix кодируют для представления расстояния по горизонтали положения последнего значимого коэффициента относительно текущего блока ((1<<log2ZoTbWidth) -1, (1<<log2ZoTbHeight) -1). last_sig_coeff_y_prefix и last_sig_coeff_y_suffix кодируют для представления расстояния по вертикали положения последнего значимого коэффициента относительно текущего блока ((1<<log2ZoTbWidth) -1, (1<<log2ZoTbHeight) -1).

[249] Способ 3: в определенных случаях во время кодирования коэффициентов все сканируемые подблоки по умолчанию требуют кодирования, или, иными словами, все сканированные подблоки по умолчанию содержат значимые коэффициенты. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. В этом случае имеется много значимых коэффициентов, и почти все сканируемые подблоки требуют кодирования, или, другими словами, почти все сканируемые подблоки содержат значимые коэффициенты. По существу, нет необходимости передавать sb_coded_flag в битовом потоке, и кодеру/декодеру не нужно обрабатывать этот флаг.

[250] Для трех вышеописанных способов в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, таких как элементы синтаксиса о положении последнего значимого коэффициента, флаги кодированного подблока и т. д., общая скорость и скорость кодирования могут быть улучшены для кодирования коэффициентов. Кроме того, поскольку эти флаги меньше используются при кодировании видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или без потерь, удаление этих флагов не приведет к снижению эффективности сжатия, а вместо этого в некоторой степени улучшит эффективность сжатия.

[251] Кроме того, в вариантах осуществления настоящего изобретения, взяв в качестве примера уровень последовательности, флаг уровня последовательности sps_high_bit_depth_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной, также может быть заменен флагом sps_high_bit_rate_flag, указывающим на то, является ли текущая видеопоследовательность последовательностью с высокой битовой скоростью или также может быть заменен другим флагом, указывающим на высокую битовую ширину, высокую битовую скорость, высокое качество или кодирование без потерь и т. д.

[252] Следует также отметить, что способы декодирования коэффициентов по вариантам осуществления настоящего изобретения описываются на основе примера, в котором техническое решение используется для всех компонентов в видео, где все компоненты относятся, например, к R, G и B в видео формата RGB или Y, U и V (Y, Cb и Cr) в видео формата YUV и т. п. Необязательно, способ декодирования коэффициентов вариантов осуществления настоящего изобретения может использоваться только для определенного компонента, например, только для компонента Y формата YUV. Необязательно, способ декодирования коэффициентов вариантов осуществления настоящего изобретения может использоваться для каждого компонента отдельно, т. е., возможность использования для каждого компонента может контролироваться отдельно.

[253] Настоящие варианты осуществления предусматривают способ декодирования коэффициента, применяемый к декодеру. Анализируют битовый поток с получением флага, относящегося к видео. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, битовый поток анализируют с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента. Когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока, положение последнего значимого коэффициента определяют путем вычисления с использованием информации о координате последнего значимого коэффициента. Согласно заданному порядку сканирования все коэффициенты перед положением последнего значимого коэффициента декодируют для определения коэффициентов текущего блока. Таким образом, в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, таких как элементы синтаксиса о положении последнего значимого коэффициента, флаги кодированного подблока и т. д., или дополнительное выполнение преобразования координаты в случае, когда значения координат последнего значимого коэффициента слишком велики, может быть уменьшено потребление ресурсов, вызванное кодированием в битовом потоке, и, таким образом, может быть улучшена пропускная способность и скорость кодирования коэффициентов. В дополнение эффективность сжатия также может быть повышена, поскольку уменьшенные или устраненные элементы синтаксиса оказывают меньшее влияние на кодирование видео при высокой битовой глубине, высокой битовой скорости, высоком качестве или сжатии без потерь.

[254] В другом варианте осуществления настоящего изобретения на фиг. 11 проиллюстрирована схематическая блок-схема способа кодирования коэффициента, предоставленного в вариантах осуществления настоящего изобретения. Как показано на фиг. 11, способ может включать следующее.

[255] На этапе S1101 определяют флаг, относящийся к видео, и положение последнего значимого коэффициента.

[256] На этапе S1102, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, определяют флаг обратного положения последнего значимого коэффициента.

[257] На этапе S1103 информацию о координате последнего значимого коэффициента определяют согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента.

[258] На этапе S1104 все коэффициенты перед положением последнего значимого коэффициента кодируют согласно заданному порядку сканирования, а битовую информацию, полученную с помощью кодирования, флаг, относящийся к видео, и информацию о координате последнего значимого коэффициента передают в битовый поток.

[259] Следует отметить, что способ кодирования коэффициента в вариантах осуществления настоящего изобретения применяют к кодеру. В частности, на основе структуры состава кодера 100, проиллюстрированной на фиг. 8A, способ кодирования коэффициентов в вариантах осуществления настоящего изобретения в основном применяется к «узлу 115 кодирования энтропии» кодера 100. Узел 115 кодирования энтропии может использовать режим адаптивного двоичного арифметического кодирования на основе контекстной модели или обходной режим для выполнения кодирования энтропии связанных флагов (или элементов синтаксиса) и затем передачи сигнала в битовый поток.

[260] Следует также отметить, что кодирование коэффициентов, как обычно упоминается в стандартах видео, может включать как кодирование, так и декодирование. Таким образом, кодирование коэффициентов включает способ кодирования коэффициентов на стороне кодера и способ декодирования коэффициентов на стороне декодера. Вариант осуществления настоящего изобретения описан в отношении способа кодирования коэффициентов на стороне кодера.

[261] Обычно, например, для обычного видео, способ кодирования коэффициентов является таким же, как и способы, доступные в предшествующем уровне техники. Однако для определенного случая, такого как сценарий кодирования видео с высокой битовой глубиной, высоким качеством, высокой битовой скоростью или сжатием без потерь, варианты осуществления настоящего изобретения могут модифицировать способ получения положения последнего значимого коэффициента. В этом случае, в вариантах осуществления настоящего раскрытия, флаг, относящийся к видео, и флаг обратного положения последнего значимого коэффициента должны быть введены для определения положения последнего значимого коэффициента, а затем все коэффициенты перед положением последнего значимого коэффициента внутри текущего блока кодируют в соответствии с заданным порядком сканирования.

[262] В вариантах осуществления настоящего изобретения, во-первых, необходимо определить, удовлетворяет ли текущее видео заданному условию, которое может быть представлено флагом, относящимся к видео. В некоторых вариантах осуществления флаг, относящийся к видео, может быть определен следующим образом.

[263] Когда видео удовлетворяет заданному условию, флаг, относящийся к видео, определяют как первое значение. Альтернативно, когда видео не удовлетворяет заданному условию, флаг, относящийся к видео, определяют как второе значение.

[264] В данном случае первое значение равно 1, а второе значение равно 0.

[265] Следует отметить, что в другом конкретном примере первое значение также может быть установлено в значение «истина», а второе значение также может быть установлено в значение «ложь». В еще одном конкретном примере первое значение также может быть установлено в значение 0, а второе значение также может быть установлено в значение 1. Необязательно первое значение также может быть установлено в значение «ложь», а второе значение также может быть установлено в значение «истина». Настоящее изобретение этим не ограничено.

[266] Также следует отметить, что заданное условие включает по меньшей мере одно из: высокой битовой глубины, высокого качества, высокой битовой скорости, высокой кадровой частоты или сжатия без потерь.

[267] Кроме того, флаг, относящийся к видео, может быть флагом уровня последовательности или даже флагом более высокого уровня, таким как VUI, SEI и т. д. Удовлетворяет ли видео заданному условию, можно определить, определив, удовлетворяет ли видео высокой глубине, или удовлетворяет ли видео высокой битовой скорости, или удовлетворяет ли видео высокому качеству, или удовлетворяет ли видео сжатию без потерь и т. д. Ниже в качестве примеров описывается каждый из этих четырех случаев.

[268] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом высокой битовой глубины, способ может дополнительно включать следующее.

[269] Если видео удовлетворяет высокой битовой глубине, определяют, что флаг высокой битовой глубины указывает на то, что видео удовлетворяет заданному условию.

[270] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом высокой битовой скорости, способ может дополнительно включать следующее.

[271] Если видео удовлетворяет высокой битовой скорости, определяют, что флаг высокой битовой скорости указывает на то, что видео удовлетворяет заданному условию.

[272] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом высокого качества, способ может дополнительно включать следующее.

[273] Если видео удовлетворяет высокому качеству, определяют, что флаг высокого качества, указывает на то, что видео удовлетворяет заданному условию.

[274] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом сжатия без потерь, способ может дополнительно включать следующее.

[275] Если видео удовлетворяет сжатие без потерь, определяют, что флаг сжатия без потерь указывает на то, что видео удовлетворяет заданному условию.

[276] В качестве примера, взяв в качестве примера уровень последовательности, флаг, относящийся к видео, может быть флагом высокой битовой глубины (представленным sps_high_bit_depth_flag) для указания того, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной. Флаг, относящийся к видео, также может быть флагом высокой битовой скорости (представленным sps_high_bit_rate_flag) для указания того, является ли текущая видеопоследовательность последовательностью с высокой битовой скоростью. Флаг, относящийся к видео, также может быть другим флагом, указывающим на высокую битовую глубину, высокую битовую скорость, высокое качество или сжатие без потерь, что конкретно не ограничено в вариантах осуществления настоящего изобретения.

[277] Кроме того, что касается флага обратного положения последнего значимого коэффициента, флаг обратного положения последнего значимого коэффициента может быть определен следующим образом.

[278] Если положение последнего значимого коэффициента изменено на обратное для текущего блока, флаг обратного положения последнего значимого коэффициента определяют как первое значение. Если положение последнего значимого коэффициента не изменено на обратное для текущего блока, флаг обратного положения последнего значимого коэффициента определяют как второе значение.

[279] В вариантах осуществления настоящего изобретения флаг обратного положения последнего значимого коэффициента может быть представлен как reverse_last_sig_coeff_flag. В данном случае флаг обратного положения последнего значимого коэффициента может быть по меньшей мере флагом: уровня последовательности, уровня изображения, уровня слайса или уровня блока; или даже флагом более высокого уровня (например, VUI, SEI и т. д.), что не будет ограничено здесь.

[280] То есть, reverse_last_sig_coeff_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т.п. Дополнительно, флаг уровня блока может включать флаг уровня LCU, флаг уровня CU, или другой флаг уровня блока, что не ограничено в вариантах осуществления настоящего изобретения.

[281] Таким образом, в примере, где первое значение равно 1, а второе значение равно 0, если определено, что положение последнего значимого коэффициента изменено на обратное для текущего блока, тогда reverse_last_sig_coeff_flag имеет значение 1. Альтернативно, если определено, что положение последнего значимого коэффициента не изменено на обратное для текущего блока, тогда reverse_last_sig_coeff_flag имеет значение 0.

[282] Дополнительно положение последнего значимого коэффициента может включать начальную горизонтальную координату и начальную вертикальную координату последнего значимого коэффициента. В случае, когда начальная горизонтальная координата представляет собой расстояние по горизонтали от положения последнего значимого коэффициента до верхнего левого угла текущего блока, а начальная вертикальная координата представляет собой расстояние по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока, информация о координатах последнего значимого коэффициента может быть определена в соответствии с положением последнего значимого коэффициента и флагом обратного положения последнего значимого коэффициента следующим образом.

[283] Если флаг обратного положения последнего значимого коэффициента имеет первое значение, определяют информацию о координате последнего значимого коэффициента посредством вычисления согласно начальной горизонтальной координате и начальной вертикальной координате последнего значимого коэффициента. Альтернативно, если флаг обратного положения последнего значимого коэффициента имеет второе значение, определяют информацию о координате последнего значимого коэффициента непосредственно согласно начальной горизонтальной координате и начальной вертикальной координате последнего значимого коэффициента.

[284] Иными словами, в некоторых вариантах осуществления способ может дополнительно включать следующее.

[285] Если флаг обратного положения последнего значимого коэффициента имеет первое значение, определяют информацию о координате последнего значимого коэффициента как расстояние по горизонтали и расстояние по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока. Альтернативно, если флаг обратного положения последнего значимого коэффициента имеет второе значение, определяют информацию о координате последнего значимого коэффициента как расстояние по горизонтали и расстояние по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока.

[286] Иными словами, информация о координате последнего значимого коэффициента обычно является расстоянием по горизонтали и расстоянием по вертикали между положением последнего значимого коэффициента и верхним левым углом текущего блока. Для обычного видео большинство из значимых коэффициентов сосредоточено в верхнем левом углу, и большая область в правом нижнем углу имеет коэффициенты, равные 0. Однако для кодирования видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью в правом нижнем углу также появляется большое количество значимых коэффициентов, так что информация о координате последнего значимого коэффициента обычно имеет большие значения. В этом случае, чтобы сэкономить ресурсы, преобразование координаты (которое может быть вычислением изменения координаты на обратную, то есть после изменения координаты на обратную информацией о координате последнего значимого коэффициента является расстояние по горизонтали и расстояние по вертикали между положением последнего значимого коэффициента и нижним правым углом текущего блока) необходимо во время кодирования коэффициента. В этом случае также необходим расчет изменения координаты на обратную во время декодирования коэффициента в декодере. После повторного изменения на обратную, информация о координате последнего значимого коэффициента может быть восстановлена как расстояния по горизонтали и по вертикали между положением последнего значимого коэффициента и верхним левым углом текущего блока. Таким образом может быть определено положение последнего значимого коэффициента.

[287] Дополнительно, в некоторых вариантах осуществления информация о координате последнего значимого коэффициента может быть определена согласно начальной горизонтальной координате и начальной вертикальной координате последнего значимого коэффициента следующим образом.

[288] Определяют ширину и высоту текущего блока. Горизонтальную координату последнего значимого коэффициента получают вычитанием начальной горизонтальной координаты последнего значимого коэффициента из ширины текущего блока. Вертикальную координату последнего значимого коэффициента получают вычитанием начальной вертикальной координаты последнего значимого коэффициента из высоты текущего блока. Информацию о координате последнего значимого коэффициента определяют согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.

[289] Следует также отметить, что текущий блок здесь может быть блоком без преобразования нулевого вывода или блоком после преобразования нулевого вывода. Если взять в качестве примера блок после преобразования с нулевым выводом, ширина текущего блока равна 1<<log2ZoTbWidth, а высота текущего блока равна 1<<log2ZoTbHeight. Затем, в случае, когда reverse_last_sig_coeff_flag указывает, что положение последнего значимого коэффициента изменено на обратное (т. е. значение reverse_last_sig_coeff_flag равно 1):

LastSignificantCoeffX= (1<<log2ZoTbWidth) -1-LastSignificantCoeffX;

LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY.

[290] В приведенном выше примере (LastSignificantCoeffX, LastSignificantCoeffY) в правой части уравнения представляет собой информацию о координате последнего значимого коэффициента, полученной непосредственно (то есть, начальную горизонтальную координату и начальную вертикальную координату последнего значимого коэффициента), а (LastSignificantCoeffX, LastSignificantCoeffY) в левой части уравнения представляет собой информацию о координате последнего значимого коэффициента после изменения положения на обратное (то есть информацию о координате последнего значимого коэффициента, которая передается в битовый поток в случае, если положение последнего значимого коэффициента изменено на обратное для текущего блока).

[291] В некоторых вариантах осуществления информация о координате последнего значимого коэффициента может передаваться в битовый поток следующим образом.

[292] Информацию о префиксе горизонтальной координаты последнего значимого коэффициента, информацию о префиксе вертикальной координаты последнего значимого коэффициента, информацию о суффиксе горизонтальной координаты последнего значимого коэффициента и информацию о суффиксе вертикальной координаты последнего значимого коэффициента определяют согласно информации о координате последнего значимого коэффициента. Информацию о префиксе горизонтальной координаты последнего значимого коэффициента, информацию о префиксе вертикальной координаты последнего значимого коэффициента, информацию о суффиксе горизонтальной координаты последнего значимого коэффициента и информацию о суффиксе вертикальной координаты последнего значимого коэффициента передают в битовый поток.

[293] Следует отметить, что информация о префиксе горизонтальной координаты последнего значимого коэффициента представлена как last_sig_coeff_x_prefix. Информация о префиксе вертикальной координаты последнего значимого коэффициента представлена как last_sig_coeff_y_prefix. Информация о суффиксе горизонтальной координаты последнего значимого коэффициента представлена как last_sig_coeff_x_suffix. Информация о суффиксе вертикальной координаты последнего значимого коэффициента представлена как last_sig_coeff_y_suffix. Тогда last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix, и last_sig_coeff_y_suffix передаются в битовый поток, так что декодер может определить информацию о координате последнего значимого коэффициента путем анализа битового потока.

[294] Таким образом, варианты осуществления настоящего изобретения предоставляют модифицированный способ определения положения последнего значимого коэффициента. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. Обычно, как изображено на фиг. 10A, горизонтальную координату положения последнего значимого коэффициента, то есть расстояние по горизонтали относительно верхнего левого угла текущего блока, кодируют в last_sig_coeff_x_prefix и last_sig_coeff_x_suffix, а вертикальную координату положения последнего значимого коэффициента, то есть расстояние по вертикали относительно верхнего левого угла текущего блока, кодируют в last_sig_coeff_y_prefix и last_sig_coeff_y_suffix. Для сравнения, в случае высокой битовой глубины, высокого качества, высокой битовой скорости или сжатия без потерь при кодировании видео положение последнего значимого коэффициента обычно находится близко к правому нижнему углу области всех возможных значимых коэффициентов текущего блока. В этом случае, как проиллюстрировано на фиг. 10B расстояние по горизонтали положения последнего значимого коэффициента относительно правого нижнего угла области всех возможных значимых коэффициентов текущего блока кодируют в last_sig_coeff_x_prefix и last_sig_coeff_x_suffix, а расстояние по вертикали положения последнего значимого коэффициента относительно правого нижнего угла области всех возможных значимых коэффициентов текущего блока кодируют в last_sig_coeff_y_prefix, last_sig_coeff_y_suffix. Следовательно, в вариантах осуществления настоящего изобретения вводится reverse_last_sig_coeff_flag, чтобы можно было решить проблему большого потребления ресурсов, вызванных кодированием больших значений в битовом потоке.

[295] Также, когда флаг, относящийся к видео, указывает, что видео удовлетворяет заданному условию, все коэффициенты, которые, возможно, потребуется кодировать, могут потребовать кодирования по умолчанию. Другими словами, положение последнего значимого коэффициента больше не используется, а вместо этого все возможные значимые коэффициенты текущего блока сканируют в заданном порядке сканирования. Таким образом, варианты осуществления настоящего изобретения могут также вводить флаг, обусловленный последним коэффициентом, для определения того, используется ли положение последнего коэффициента для текущего блока.

[296] В некоторых вариантах осуществления, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, способ может дополнительно включать следующее.

[297] Определяют флаг, обусловленный последним коэффициентом. Когда флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента используется для текущего блока, кодируют все коэффициенты перед положением последнего коэффициента согласно заданному порядку сканирования, и предоставляют битовую информацию, полученную с помощью кодирования, флаг, относящийся к видео, и флаг, обусловленный последним коэффициентом, в битовый поток.

[298] Следует отметить, что флаг, обусловленный последним коэффициентом, может быть представлен как default_last_coeff_enabled_flag. В вариантах осуществления настоящего изобретения флаг, обусловленный последним коэффициентом, может быть по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса и уровня блока; или даже флагом более высокого уровня (например, VUI, SEI и т. д.), что не ограничено здесь.

[299] Следует отметить, что, что касается флага, обусловленного последним коэффициентом, в некоторых вариантах осуществления флаг, обусловленный последним коэффициентом, может определяться следующим образом.

[300] Когда положение последнего коэффициента используется для текущего блока, определяют флаг, обусловленный последним коэффициентом, как первое значение. Альтернативно, когда положение последнего коэффициента не используется для текущего блока, определяют флаг, обусловленный последним коэффициентом, как второе значение.

[301] Таким образом, в примере, где первое значение равно 1, а второе значение равно 0, если определено, что положение последнего коэффициента используется для текущего блока, тогда default_last_coeff_enabled_flag имеет значение 1. Альтернативно, если определено, что положение последнего коэффициента не используется для текущего блока, тогда default_last_coeff_enabled_flag имеет значение, равное 0.

[302] Также, для положения последнего коэффициента в некоторых вариантах осуществления положение последнего коэффициента является положением в нижнем правом углу матрицы, образованной всеми возможными значимыми коэффициентами в текущем блоке. Альтернативно положение последнего коэффициента является последним положением при сканировании всех возможных значимых коэффициентов в текущем блоке согласно заданному порядку сканирования.

[303] Следует отметить, что в вариантах осуществления изобретения положение последнего коэффициента не представляет собой положение последнего значимого коэффициента. Это связано с тем, что коэффициент в положении последнего значимого коэффициента может быть равен 0, тогда как коэффициент в положении последнего значимого коэффициента не должен быть равен 0.

[304] В конкретном примере способ может дополнительно включать установку положения последнего значимого коэффициента в качестве положения последнего коэффициента.

[305] То есть в вариантах осуществления настоящего изобретения положение последнего значимого коэффициента все еще может использоваться, и в этом случае положение последнего значимого коэффициента должно быть установлено как последнее положение всех коэффициентов, которые могут не быть нулевыми в текущем блоке в заданном порядке сканирования.

[306] Дополнительно, положение последнего коэффициента может быть представлено (LastCoeffX, LastCoeffY), т.е., последнее положение всех возможных значимых коэффициентов в текущем блоке в заданном порядке сканирования. В некоторых вариантах осуществления способ может дополнительно включать следующее.

[307] Определяют ширину и высоту блока преобразования, полученные в заданной операции на текущем блоке. Информацию о координате нижнего правого угла блока преобразования получают посредством вычисления координаты согласно ширине и высоте блока преобразования. Положение последнего коэффициента определяют согласно информации о координате нижнего правого угла блока преобразования.

[308] В данном случае заданная операция включает по меньшей мере операцию нулевого вывода.

[309] Следует отметить, что (LastCoeffX, LastCoeffY) представляет собой информацию о координате правого нижнего угла блока преобразования после нулевого вывода, где (LastCoeffX, LastCoeffY) получают следующим образом:

LastCoeffX= (1<<log2ZoTbWidth) -1;

LastCoeffY= (1<<log2ZoTbHeight) -1.

[310] Таким образом, если default_last_coeff_enabled_flag имеет значение 1, то положение последнего коэффициента может быть определено на основе (LastCoeffX, LastCoeffY).

[311] В конкретном примере положение последнего значимого коэффициента все еще используется, и в этом случае положение последнего значимого коэффициента может быть установлено как последнее положение всех возможных нулевых коэффициентов в текущий блок в заданном порядке сканирования. В некоторых вариантах осуществления способ может дополнительно включать следующее.

[312] Когда положение последнего значимого коэффициента установлено как положение последнего коэффициента, положение последнего значимого коэффициента определяют согласно информации о координате нижнего правого угла блока преобразования.

[313] То есть, позиция последнего значимого коэффициента может быть представлена как (LastSignificantCoeffX, LastSignificantCoeffY), где (LastSignificantCoeffX, LastSignificantCoeffY) получают следующим образом:

LastSignificantCoeffX= (1 << log2ZoTbWidth) -1;

LastSignificantCoeffY= (1 << log2ZoTbHeight) -1.

[314] Как указано выше, (LastSignificantCoeffX, LastSignificantCoeffY) представляет собой информацию о координате нижнего правого угла блока преобразования после нулевого вывода. Если значение default_last_coeff_enabled_flag равно 1, то положение последнего значимого коэффициента может быть определено на основе(LastSignificantCoeffX, LastSignificantCoeffY).

[315] Дополнительно, в случае когда положение последнего коэффициента не используется для текущего блока, способ может дополнительно включать следующее.

[316] Определяют информацию о префиксе горизонтальной координаты последнего значимого коэффициента, информацию о префиксе вертикальной координаты последнего значимого коэффициента и информацию о суффиксе вертикальной координаты последнего значимого коэффициента. Положение последнего значимого коэффициента определяют согласно информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента кодируют согласно заданному порядку сканирования и передают сигнальную информацию о префиксе горизонтальной координаты последнего значимого коэффициента, информацию о префиксе вертикальной координаты последнего значимого коэффициента, информацию о суффиксе горизонтальной координаты последнего значимого коэффициента и информацию о суффиксе вертикальной координаты последнего значимого коэффициента в битовый поток.

[317] Следует отметить, что если положение последнего коэффициента не используется для текущего блока, необходимо определить положение последнего значимого коэффициента. В частности, last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_ prefix, и last_sig_coeff_y_suffix не требуют определения. Тогда last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_ prefix, и last_sig_coeff_y_suffix передаются в битовый поток.

[318] Таким образом, при кодировании коэффициента кодирование требуется по умолчанию для всех коэффициентов, которые, возможно, потребуется закодировать. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. Кодирование требуется по умолчанию для всех коэффициентов, которые, возможно, потребуется закодировать, т. е. положение последнего значимого коэффициента больше не используется, и вместо этого все возможные значимые коэффициенты текущего блока сканируют в заданном порядке сканирования. Другими словами, последнее положение коэффициентов, которые необходимо закодировать, устанавливают как положение всех возможных значимых коэффициентов текущего блока в заданном порядке сканирования. Это положение обычно является положением в нижнем правом углу матрицы, образованной всеми возможными значимыми коэффициентами текущего блока. Следовательно, в вариантах осуществления настоящего раскрытия может быть введен default_last_coeff_enabled_flag, так что синтаксические элементы, относящиеся к положению последнего значимого коэффициента, могут быть уменьшены или даже исключены, что может уменьшить потребление ресурсов и исключить нерациональное их использование.

[319] Также, когда флаг, относящийся к видео, указывает, что видео удовлетворяет заданному условию, кодирование может потребоваться по умолчанию для всех сканируемых подблоков. В этом случае нет необходимости передавать sb_coded_flag в битовом потоке, т.е. ни кодеру, ни декодеру не нужно обрабатывать этот флаг, что может ускорить кодирование. Следовательно, в вариантах осуществления настоящего изобретения вводится флаг кодированного по умолчанию подблока для определения того, использует ли подблок, подлежащий декодированию в текущем блоке, кодирование по умолчанию.

[320] В некоторых вариантах осуществления, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, способ может дополнительно включать следующее.

[321] Определяют флаг кодированного по умолчанию подблока для подблока, подлежащего кодированию в текущем блоке. Когда флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий кодированию, по умолчанию используется для кодирования, кодируют все коэффициенты в подблоке, подлежащем кодированию, и предоставляют битовую информацию, полученную с помощью кодирования, и флаг кодированного по умолчанию подблока в битовый поток.

[322] Следует отметить, что флаг по умолчанию подблока может быть представлен как default_sb_coded_flag. В вариантах осуществления настоящего изобретения флаг кодированного по умолчанию подблока является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса и уровня блока, или даже может быть флагом более высокого уровня (например, VUI, SEI и т. д.), что не ограничено в настоящем описании.

[323] Также отмечается, что для флага по умолчанию подблока в некоторых вариантах осуществления флаг кодированного по умолчанию подблока для подблока, подлежащего кодированию, может быть определен следующим образом.

[324] Если подблок, подлежащий кодированию, по умолчанию использует кодирование, флаг кодированного по умолчанию подблока определяют как первое значение. Альтернативно, если подблок, подлежащий кодированию, по умолчанию не использует кодирование, флаг кодированного по умолчанию подблока определяют как второе значение.

[325] Таким образом, в примере, где первое значение равно 1, а второе значение равно 0, если определено, что подблок, подлежащий кодированию, по умолчанию требует кодирования, тогда default_sb_coded_flag имеет значение 1. Альтернативно, если определено, что подблок, подлежащий кодированию, по умолчанию не требует кодирования, тогда default_sb_coded_flag имеет значение 0.

[326] В случае когда подблок, подлежащий кодированию, по умолчанию требует кодирования, значение default_sb_coded_flag равно 1, что означает, что значение sb_coded_flag равно 1, т. е., нет необходимости кодировать sb_coded_flag. Однако в случае если подблок, подлежащий кодированию, по умолчанию не требует кодирования, то есть флаг кодированного по умолчанию подблока указывает, что подблок, подлежащий кодированию, не требует кодирования по умолчанию, в некоторых вариантах осуществления способ может дополнительно включать определение флага кодированного подблока для подблока, подлежащего кодированию, и передачу флага кодированного подблока в битовый поток.

[327] Также в некоторых вариантах осуществления флаг кодированного по умолчанию подблока для подблока, подлежащего кодированию, может быть определен следующим образом.

[328] Если кодирование требуется для подблока, подлежащего кодированию, флаг кодированного по умолчанию подблока определяют как первое значение. Альтернативно, если все коэффициенты в подблоке равны 0, флаг кодированного по умолчанию подблока определяют как второе значение.

[329] В вариантах осуществления настоящего изобретения флаг кодированного подблока может быть представлен как sb_coded_flag. Взяв в качестве примера первое значение 1 и второе значение 0, если определено, что подблок, подлежащий кодированию, должен быть закодирован, это означает, что подблок, подлежащий кодированию, содержит ненулевые коэффициенты для кодирования, тогда sb_coded_flag имеет значение 1. Альтернативно, если определено, что подблок, подлежащий кодированию, не должен быть закодирован, что означает, что все коэффициенты внутри кодируемого подблока равны 0, тогда sb_coded_flag имеет значение 0.

[330] Таким образом, в определенных случаях во время кодирования коэффициентов все сканируемые подблоки по умолчанию требуют кодирования, или все сканированные подблоки по умолчанию содержат значимые коэффициенты. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. В этом случае имеется много значимых коэффициентов, и почти все сканируемые подблоки требуют кодирования, или, другими словами, почти все сканируемые подблоки содержат значимые коэффициенты. По существу, нет необходимости передавать sb_coded_flag в битовом потоке, а кодеру/декодеру не нужно обрабатывать этот флаг, что обеспечивает более высокую скорость кодирования. В этом случае также наблюдается небольшой прирост эффективности сжатия за счет удаления практически несуществующего флага.

[331] Настоящие варианты осуществления дополнительно предусматривают способ кодирования коэффициента, применяемый к кодеру. Определяют флаг, относящийся к видео, и положение последнего значимого коэффициента. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, определяют флаг обратного положения последнего значимого коэффициента. Информацию о координате последнего значимого коэффициента определяют согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента кодируют согласно заданному порядку сканирования, а битовую информацию, полученную с помощью кодирования, флаг, относящийся к видео, и информацию о координате последнего значимого коэффициента передают в битовый поток. Таким образом, в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, таких как элементы синтаксиса о положении последнего значимого коэффициента, флаги кодированного подблока и т. д., или дополнительное выполнение преобразования координаты в случае, когда значения координат последнего значимого коэффициента слишком велики, может быть уменьшено потребление ресурсов, вызванное кодированием в битовом потоке, и, таким образом, может быть улучшена пропускная способность и скорость кодирования коэффициентов. В дополнение эффективность сжатия также может быть повышена, поскольку уменьшенные или устраненные элементы синтаксиса оказывают меньшее влияние на кодирование видео при высокой битовой глубине, высокой битовой скорости, высоком качестве или сжатии без потерь.

[332] В другом варианте осуществления настоящего изобретения, на основе той же идеи, что и в предыдущих вариантах осуществления, на фиг. 12 проиллюстрирована структурная схема кодера 120, предоставленного в вариантах осуществления настоящего изобретения. Как показано на фиг. 12, кодер 120 может содержать первый узел 1201 определения и узел 1202 кодирования.

[333] Первый узел 1201 определения выполнен с возможностью определения флага, относящегося к видео, и положения последнего значимого коэффициента и определения флага обратного положения последнего значимого коэффициента, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию.

[334] Первый узел 1201 определения дополнительно выполнен с возможностью определения информации о координате последнего значимого коэффициента согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента.

[335] Узел 1202 кодирования выполнен с возможностью кодирования всех коэффициентов перед положением последнего значимого коэффициента согласно заданному порядку сканирования и передачи битовой информации, полученной с помощью кодирования, флага, относящегося к видео, и информации о координате последнего значимого коэффициента в битовый поток.

[336] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения флага, относящегося к видео, как первого значения, когда видео удовлетворяет заданному условию, или определения флага, относящегося к видео, как второго значения, когда видео не удовлетворяет заданному условию.

[337] В некоторых вариантах осуществления заданное условие включает по меньшей мере одно из: высокой битовой глубины, высокого качества, высокой битовой скорости, высокой кадровой частоты или сжатия без потерь.

[338] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения флага обратного положения последнего значимого коэффициента как первого значения, когда положение последнего значимого коэффициента изменено на обратное для текущего блока, или определения флага обратного положения последнего значимого коэффициента как второго значения, когда положение последнего значимого коэффициента не изменено на обратное для текущего блока.

[339] В некоторых вариантах осуществления положение последнего значимого коэффициента включает начальную горизонтальную координату и начальную вертикальную координату последнего значимого коэффициента, где начальная горизонтальная координата представляет собой расстояние по горизонтали от положения последнего значимого коэффициента до верхнего левого угла текущего блока, и начальная вертикальная координата представляет собой расстояние по вертикали от положения последнего значимого коэффициента до левого верхнего угла текущего блока.

[340] Соответственно, первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг обратного положения последнего значимого коэффициента имеет первое значение, определения информации о координате последнего значимого коэффициента путем вычисления в соответствии с начальной горизонтальной координатой и начальной вертикальной координатой последнего значимого коэффициента, или когда флаг обратного положения последнего значимого коэффициента имеет второе значение, определения информации о координате последнего значимого коэффициента непосредственно в соответствии с начальной горизонтальной координатой и начальной вертикальной координатой последнего значимого коэффициента.

[341] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: определения ширины и высоты текущего блока; получения горизонтальной координаты последнего значимого коэффициента вычитанием начальной горизонтальной координаты последнего значимого коэффициента из ширины текущего блока; получения вертикальной координаты последнего значимого коэффициента вычитанием начальной вертикальной координаты последнего значимого коэффициента из высоты текущего блока; и определения информации о координате последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.

[342] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг обратного положения последнего значимого коэффициента имеет первое значение, определения информации о координате последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока; или когда флаг обратного положения последнего значимого коэффициента имеет второе значение, определения информации о координате последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока.

[343] В некоторых вариантах осуществления узел 1202 кодирования дополнительно выполнен с возможностью определения информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента в соответствии с информацией о координате последнего значимого коэффициента, и передачи информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента в битовый поток.

[344] В некоторых вариантах осуществления флаг обратного положения последнего значимого коэффициента является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.

[345] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения флага, обусловленного последним коэффициентом, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию.

[346] Узел 1202 кодирования дополнительно выполнен с возможностью: когда флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента используется для текущего блока, кодирования всех коэффициентов перед положением последнего коэффициента согласно заданному порядку сканирования, и предоставления битовой информации, полученной с помощью кодирования, флага, относящегося к видео и флага, обусловленного последним коэффициентом, в битовый поток.

[347] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда положение последнего коэффициента используется для текущего блока, определения флага, обусловленного последним коэффициентом, как первого значения; или когда положение последнего коэффициента не используется для текущего блока, определения флага, обусловленного последним коэффициентом, как второго значения.

[348] В некоторых вариантах осуществления положение последнего коэффициента является положением в нижнем правом углу матрицы, образованной всеми возможными значимыми коэффициентами в текущем блоке; или положение последнего коэффициента является последним положением при сканировании всех возможных значимых коэффициентов в текущем блоке согласно заданному порядку сканирования.

[349] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью установки положения последнего значимого коэффициента в качестве положения последнего коэффициента.

[350] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения ширины и высоты блока преобразования, полученных в заданной операции на текущем блоке, получение информации о координате нижнего правого угла блока преобразования посредством вычисления координаты согласно ширине и высоте блока преобразования; и определение положения последнего коэффициента согласно информации о координате нижнего правого угла блока преобразования.

[351] В некоторых вариантах осуществления заданная операция по меньшей мере включает операцию нулевого вывода.

[352] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения положения последнего значимого коэффициента согласно информации о координате нижнего правого угла блока преобразования, когда положение последнего значимого коэффициента задано как положение последнего коэффициента.

[353] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда положение последнего коэффициента не используется для текущего блока, определения информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента, а также определения положения последнего значимого коэффициента в соответствии с информацией о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента.

[354] В некоторых вариантах осуществления узел 1202 кодирования дополнительно выполнен с возможностью кодирования всех коэффициентов перед положением последнего значимого коэффициента согласно заданному порядку сканирования и предоставлении информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента в битовый поток.

[355] В некоторых вариантах осуществления флаг, обусловленный последним коэффициентом, является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.

[356] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, определения флага кодированного по умолчанию подблока для подблока, подлежащего кодированию, в текущем блоке.

[357] Узел 1202 кодирования дополнительно выполнен с возможностью: когда флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий кодированию, по умолчанию используется для кодирования, кодирования всех коэффициентов в подблоке, подлежащем декодированию, и предоставления битовой информации, полученной с помощью кодирования, и флага, кодированного по умолчанию, подблока в битовый поток.

[358] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий кодированию, по умолчанию не используется для кодирования, определения флага кодированного подблока для подблока, подлежащего кодированию, и предоставления флага кодированного подблока в битовый поток.

[359] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения флага кодированного по умолчанию подблока как первого значения, когда подблок, подлежащий кодированию, по умолчанию использует кодирование, или для определения флага кодированного по умолчанию подблока как второго значения, когда подблок, подлежащий кодированию, по умолчанию не использует кодирование.

[360] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения флага кодированного подблока как первого значения, когда для подблока требуется кодирование, или для определения флага кодированного подблока как второго значения, когда все коэффициенты в подблоке равны 0.

[361] В некоторых вариантах осуществления флаг кодированного по умолчанию подблока является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.

[362] В некоторых вариантах осуществления первое значение равно 1, а второе значение равно 0.

[363] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом высокой битовой глубины, определения того, что флаг высокой битовой глубины указывает, что видео удовлетворяет заданному условию, если видео удовлетворяет высокой битовой глубине.

[364] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом высокой битовой скорости, определения того, что флаг высокой битовой скорости указывает на то, что видео удовлетворяет заданному условию, если видео удовлетворяет высокой битовой скорости.

[365] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом высокого качества, определения того, что флаг высокого качества указывает на то, что видео удовлетворяет заданному условию, если видео удовлетворяет высокому качеству.

[366] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом сжатия без потерь, определения того, что флаг сжатия без потерь указывает, что видео удовлетворяет заданному условию, если видео удовлетворяет сжатию без потерь.

[367] Следует понимать, что в вариантах осуществления настоящего изобретения «узел» может быть частью схемы, частью процессора, частью программы или программного обеспечения и т. п., и он также может быть модулем или может быть немодульным. В дополнение к этому различные компоненты в вариантах осуществления могут быть интегрированы в один обрабатывающий узел, или каждый узел может существовать физически отдельно, или два или более узлов могут быть объединены в один узел. Вышеупомянутые интегрированные узлы могут быть реализованы в форме аппаратных средств или программных функциональных модулей.

[368] Объединенный узел при реализации в виде программного функционального модуля, а не поставке или использовании как самостоятельного продукта, может храниться на машиночитаемом носителе данных. На основе такого понимания техническое решение настоящего изобретения в целом или в части, или в части, вносящей существенный вклад в уровень техники, могут быть реализованы в форме программного продукта. Компьютерный программный продукт хранится на носителе данных и включает ряд команд для того, чтобы дать возможность компьютерному устройству (которое может быть персональным компьютером, сервером или сетевым устройством и т. д.) или процессору выполнять все или некоторые из операций способа согласно настоящему изобретению. Вышеупомянутый носитель данных содержит: флеш-накопители USB, съемные жесткие диски, постоянное запоминающее устройство (ROM), запоминающее устройство с произвольным доступом (RAM), диски или CD-ROM и другие носители, на которых можно хранить программные коды.

[369] Таким образом, варианты осуществления настоящего изобретения обеспечивают компьютерный носитель данных применительно к кодеру 120. Компьютерный носитель данных хранит компьютерную программу, которая при ее выполнении первым процессором реализует способ, описанный в любом из вышеописанных вариантов осуществления.

[370] На основе состава вышеупомянутого кодера 120 и компьютерного носителя данных, обращаясь к фиг. 13, фиг. 13 представлено схематическое изображение конкретной структуры аппаратного обеспечения кодера 120, предоставленного в варианте осуществления настоящего изобретения. Как показано на фиг. 13, кодер 120 может содержать первый интерфейс 1301 связи, первое запоминающее устройство 1302 и первый процессор 1303. Компоненты взаимосвязаны посредством первой системы 1304 шин. Можно понять, что первая система 1304 шин выполнена с возможностью реализации соединения связи между этими компонентами. В дополнение к шине данных, первая система 1304 шин также содержит шину питания управления и шину сигнала статуса. Однако для ясности объяснения различные шины обозначены как первая система 1304 шин на фиг. 13.

[371] Первый интерфейс 1301 связи выполнен с возможностью приема и отправки сигналов во время процесса отправки и приема информации с помощью других внешних сетевых элементов.

[372] Первое запоминающее устройство 1302 выполнено с возможностью хранения компьютерной программы, которая может быть выполнена на первом процессоре 1303.

[373] Первый процессор 1303 выполнен с возможностью выполнения следующих операций при выполнении компьютерной программы.

[374] Определяют флаг, относящийся к видео, и положение последнего значимого коэффициента. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, определяют флаг обратного положения последнего значимого коэффициента. Информацию о координате последнего значимого коэффициента определяют согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента кодируют согласно заданному порядку сканирования, а битовую информацию, полученную с помощью кодирования, флаг, относящийся к видео, и информацию о координате последнего значимого коэффициента передают в битовый поток.

[375] Следует понимать, что первое запоминающее устройство 1302 в вариантах осуществления настоящего изобретения может представлять собой энергозависимое запоминающее устройство или энергонезависимое запоминающее устройство или может включать как энергозависимое, так и энергонезависимое запоминающие устройства. Энергонезависимое запоминающее устройство может представлять собой постоянное запоминающее устройство (ROM), программируемое постоянное запоминающее устройство (PROM), стираемое программируемое постоянное запоминающее устройство (EPROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), или электрическое EPROM, EEPROM), или флеш-память. Энергозависимое запоминающее устройство может представлять собой запоминающее устройство с произвольным доступом (RAM), которое используется в качестве внешней кэш-памяти. В качестве иллюстрации доступны многие типы RAM, такие как статическое RAM (SRAM), динамическое RAM (DRAM), синхронное DRAM (SDRAM), SDRAM (ESDRAM) с удвоенной скоростью передачи данных и флеш-память. DRAM, синхронное DRAM (SDRAM), SDRAM (DDRSDRAM) с удвоенной скоростью передачи данных, улучшенное синхронное SDRAM (ESDRAM), DRAM (SLDRAM) типа Synchlink и RAM (DRRAM) с шиной прямого резидентного доступа. Первое запоминающее устройство 1302 описанных в данном изобретении систем и способов предназначено для включения, но без ограничения, этих и любых других подходящих типов запоминающих устройств.

[376] Кроме того, первый процессор 1303 может представлять собой кристалл c интегральными схемами с функциональной возможностью обработки сигналов. Во время реализации операции вышеописанных способов могут быть выполнены посредством интегральной логической схемы в форме аппаратного обеспечения в первом процессоре 1003 или команды в форме программного обеспечения. Первый процессор 1303 может представлять собой процессор общего назначения, процессор цифровой обработки сигналов (DSP), интегральную схему специального применения (ASIC), программируемую пользователем вентильную матрицу (FPGA) или другое программируемое логическое устройство, дискретный логический элемент, или транзисторное логическое устройство, или дискретный аппаратный компонент, или подобное. Способы, операции и логические блок-схемы, раскрытые в вариантах осуществления настоящего изобретения, могут быть реализованы или выполнены первым процессором. Процессор общего назначения может представлять собой микропроцессор, или процессор может представлять собой любой традиционный процессор или т. п. Операции способов, раскрытые в сочетании с вариантами осуществления настоящей заявки, могут быть непосредственно осуществлены для исполнения и выполнены аппаратным декодирующим процессором или исполнены и выполнены посредством сочетания аппаратного обеспечения в декодирующем процессоре и программных модулей. Программный модуль может быть расположен на хорошо известном в данной области техники носителе данных, таком как RAM, флеш-память, ROM, PROM, EEPROM, регистр и т.п. Носитель данных расположен в первом запоминающем устройстве 1302, и первый процессор 1303 считывает информацию в первом запоминающем устройстве 1302 и выполняет операции вышеуказанных способов в сочетании со своим аппаратным обеспечением.

[377] Следует понимать, что эти варианты осуществления, описанные в настоящем изобретении, могут быть реализованы посредством аппаратного обеспечения, программного обеспечения, программно-аппаратного обеспечения, межплатформенного программного обеспечения, микрокода или их комбинации. Для реализации на основе аппаратного обеспечения узел обработки может быть реализован в одном или более ASIC, DSP, устройстве DSP (DSPD), программируемом логическом устройстве (PLD), FPGA, процессоре общего назначения, контроллере, микроконтроллере, микропроцессоре, других электронных узлах, выполненных с возможностью выполнения функций, описанных в настоящем изобретении, или их комбинации. Для реализации на основе программного обеспечения технологии, описанные в настоящем изобретении, могут быть реализованы посредством модулей (например, процессов, функций и т.п.), выполняющих функции, описанные в настоящем изобретении. Программные коды могут храниться в запоминающем устройстве и выполняться процессором. Запоминающее устройство может быть реализовано в процессоре или вне процессора.

[378] Необязательно, в другом варианте осуществления первый процессор 1303 дополнительно выполнен с возможностью выполнения способа согласно любому из приведенных выше вариантов осуществления при выполнении компьютерной программы.

[379] Варианты осуществления обеспечивают кодер, который содержит первый узел определения и узел кодирования. Таким образом, в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, может быть уменьшено потребление ресурсов, вызванное кодированием в битовом потоке, и, таким образом, может быть улучшена пропускная способность и скорость кодирования коэффициентов. В дополнение эффективность сжатия также может быть повышена, поскольку уменьшенные или устраненные элементы синтаксиса оказывают меньшее влияние на кодирование видео при высокой битовой глубине, высокой битовой скорости, высоком качестве или сжатии без потерь.

[380] В другом варианте осуществления настоящего изобретения, на основе той же идеи, что и в предыдущих вариантах осуществления, на фиг. 14 проиллюстрирована структурная схема декодера 140, предоставленного в вариантах осуществления настоящего изобретения. Как показано на фиг. 14, декодер 140 может содержать узел 1401 анализа и второй узел 1402 определения.

[381] Узел 1401 анализа выполнен с возможностью анализа битового потока с получением флага, относящегося к видео, и анализа битового потока с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию.

[382] Второй узел 1402 определения выполнен с возможностью определения положения последнего значимого коэффициента путем вычисления с помощью информации о координате последнего значимого коэффициента, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока.

[383] Узел 1401 анализа дополнительно выполнен с возможностью декодирования согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.

[384] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью определения положения последнего значимого коэффициента непосредственно согласно информации о координате последнего значимого коэффициента, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока.

[385] Узел 1402 анализа дополнительно выполнен с возможностью декодирования согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.

[386] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, имеет первое значение, определения того, что флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, или когда флаг, относящийся к видео, имеет второе значение, определения того, что флаг, относящийся к видео, указывает на то, что видео не удовлетворяет заданному условию.

[387] В некоторых вариантах осуществления заданное условие включает по меньшей мере одно из: высокой битовой глубины, высокого качества, высокой битовой скорости, высокой кадровой частоты или сжатия без потерь.

[388] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг обратного положения последнего значимого коэффициента имеет первое значение, определения того, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента коэффициент изменено на обратное для текущего блока, или когда флаг обратного положения последнего значимого коэффициента имеет второе значение, определения того, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока.

[389] В некоторых вариантах осуществления узел 1401 анализа дополнительно выполнен с возможностью анализа битового потока для получения информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента.

[390] Второй узел 1402 определения дополнительно выполнен с возможностью определения горизонтальной координаты последнего значимого коэффициента согласно информации о префиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе горизонтальной координаты последнего значимого коэффициента, определения вертикальной координаты последнего значимого коэффициента согласно информации о префиксе вертикальной координаты последнего значащего коэффициента и информации о суффиксе вертикальной координаты последнего значащего коэффициента, и определения информации о координате последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.

[391] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью определения информации о координате последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока.

[392] Также, второй узел 1402 определения дополнительно выполнен с возможностью определения ширины и высоты текущего блока; получения горизонтальной координаты последнего значимого коэффициента вычитанием из ширины текущего блока расстояния по горизонтали от положения последнего значимого коэффициента до правого нижнего угла текущего блока; получения вертикальной координаты последнего значимого коэффициента вычитанием из высоты текущего блока расстояния по вертикали от положения последнего значимого коэффициента до правого нижнего угла текущего блока; и определения положения последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.

[393] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью определения информации о координате последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока, и с возможностью определения положения последнего значимого коэффициента согласно расстоянию по горизонтали и расстоянию по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока.

[394] В некоторых вариантах осуществления флаг обратного положения последнего значимого коэффициента является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.

[395] В некоторых вариантах осуществления первый узел 1401 анализа дополнительно выполнен с возможностью анализа битового потока с получением флага, обусловленного последним коэффициентом, и декодирования согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока, когда флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента используется для текущего блока.

[396] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг, обусловленный последним коэффициентом, имеет первое значение, определения того, что флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента используется для текущего блока, или когда флаг, обусловленный последним коэффициентом, имеет второе значение, определения того, что флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента не используется для текущего блока.

[397] В некоторых вариантах осуществления узел 1401 анализа дополнительно выполнен с возможностью анализа битового потока для получения информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента.

[398] Второй узел 1402 определения дополнительно выполнен с возможностью определения положения последнего значимого коэффициента согласно информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента; и декодирования согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.

[399] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью определения того, что положение последнего коэффициента является положением в нижнем правом углу матрицы, образованной всеми возможными значимыми коэффициентами в текущем блоке; или положение последнего коэффициента является последним положением при сканировании всех возможных значимых коэффициентов в текущем блоке согласно заданному порядку сканирования.

[400] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью установки положения последнего значимого коэффициента в качестве положения последнего коэффициента.

[401] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью определения ширины и высоты блока преобразования, полученных в заданной операции на текущем блоке, получение информации о координате нижнего правого угла блока преобразования посредством вычисления координаты согласно ширине и высоте блока преобразования; и определение положения последнего коэффициента согласно информации о координате нижнего правого угла блока преобразования.

[402] В некоторых вариантах осуществления заданная операция по меньшей мере включает операцию нулевого вывода.

[403] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью определения положения последнего значимого коэффициента согласно информации о координате нижнего правого угла блока преобразования, когда положение последнего значимого коэффициента задано как положение последнего коэффициента.

[404] В некоторых вариантах осуществления флаг, обусловленный последним коэффициентом, является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.

[405] В некоторых вариантах осуществления первый узел 1401 анализа дополнительно выполнен с возможностью: когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, анализа битового потока с получением флага кодированного по умолчанию подблока; и определения того, что флаг кодированного подблока имеет первое значение, и декодирования всех коэффициентов в подблоке, подлежащем декодированию в текущем блоке, когда флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий декодированию, по умолчанию используется для кодирования.

[406] В некоторых вариантах осуществления узел 1401 анализа дополнительно выполнен с возможностью: когда флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий декодированию, по умолчанию не используется для кодирования, анализа битового потока с получением флага кодированного подблока, и декодирования всех коэффициентов в подблоке, когда флаг кодированного подблока имеет первое значение.

[407] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг кодированного по умолчанию подблока имеет первое значение, определения того, что флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий декодированию, по умолчанию использует кодирование; или когда флаг кодированного по умолчанию подблока имеет второе значение, определения того, что флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий декодированию, по умолчанию не использует кодирование.

[408] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: определения необходимости декодирования всех коэффициентов в подблоке, подлежащем декодированию, когда флаг кодированного подблока имеет первое значение; или определения всех коэффициентов в подблоке, подлежащем декодированию, как равных 0, когда флаг кодированного подблока имеет второе значение.

[409] В некоторых вариантах осуществления флаг кодированного по умолчанию подблока является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.

[410] В некоторых вариантах осуществления первое значение равно 1, а второе значение равно 0.

[411] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом высокой битовой глубины, определения того, что видео удовлетворяет заданному условию, когда флаг высокой битовой глубины указывает на то, что видео удовлетворяет высокой битовой глубине.

[412] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом высокой битовой скорости, определения того, что видео удовлетворяет заданному условию, когда флаг высокой битовой скорости указывает на то, что видео удовлетворяет высокой битовой скорости.

[413] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом высокого качества, определения того, что видео удовлетворяет заданному условию, когда флаг высокого качества указывает на то, что видео удовлетворяет высокому качеству.

[414] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом сжатия без потерь, определения того, что видео удовлетворяет заданному условию, когда флаг сжатия без потерь указывает на то, что видео удовлетворяет сжатию без потерь.

[415] Следует понимать, что в вариантах осуществления настоящего изобретения «узел» может быть частью схемы, частью процессора, частью программы или программного обеспечения и т. п., и он также может быть модулем или может быть немодульным. В дополнение к этому различные компоненты в вариантах осуществления могут быть интегрированы в один обрабатывающий узел, или каждый узел может существовать физически отдельно, или два или более узлов могут быть объединены в один узел. Вышеупомянутые интегрированные узлы могут быть реализованы в форме аппаратных средств или программных функциональных модулей.

[416] Объединенный узел при реализации в виде программного функционального модуля, а не поставке или использовании как самостоятельного продукта, может храниться на машиночитаемом носителе данных. На основе такого понимания техническое решение настоящего изобретения в целом или в части, или в части, вносящей существенный вклад в уровень техники, могут быть реализованы в форме программного продукта. Компьютерный программный продукт хранится на носителе данных и включает ряд команд для того, чтобы дать возможность компьютерному устройству (которое может быть персональным компьютером, сервером или сетевым устройством и т. д.) или процессору выполнять все или некоторые из операций способа согласно настоящему изобретению. Вышеупомянутый носитель данных содержит: флеш-накопители USB, съемные жесткие диски, ROM, RAM, диски или CD-ROM и другие носители, на которых можно хранить программные коды.

[417] Таким образом, варианты осуществления настоящего изобретения обеспечивают компьютерный носитель данных применительно к декодеру 140. Компьютерный носитель данных хранит компьютерную программу, которая при ее выполнении вторым процессором реализует способ, описанный в любом из вышеописанных вариантов осуществления.

[418] На основе состава вышеупомянутого декодера 140 и компьютерного носителя данных, обращаясь к фиг. 15, на фиг. 15 представлено схематическое изображение конкретной структуры аппаратного обеспечения декодера 140, предоставленного в варианте осуществления настоящего изобретения. Как показано на фиг. 15, декодер 140 может содержать второй интерфейс 1501 связи, второе запоминающее устройство 1502 и второй процессор 1503. Компоненты взаимосвязаны посредством второй системы 1504 шин. Можно понять, что вторая система 1504 шин выполнена с возможностью реализации соединения связи между этими компонентами. В дополнение к шине данных, вторая система 1504 шин также содержит шину питания управления и шину сигнала статуса. Однако для ясности объяснения различные шины обозначены как вторая система 1504 шин на фиг. 15.

[419] Второй интерфейс 1501 связи выполнен с возможностью приема и отправки сигналов во время процесса отправки и приема информации с помощью других внешних сетевых элементов.

[420] Второе запоминающее устройство 1502 выполнено с возможностью хранения компьютерной программы, которая может быть выполнена на втором процессоре 1503.

[421] Второй процессор 1503 выполнен с возможностью выполнения следующих операций при выполнении компьютерной программы.

[422] Анализируют битовый поток с получением флага, относящегося к видео. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, битовый поток анализируют с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента. Когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока, положение последнего значимого коэффициента определяют путем вычисления с использованием информации о координате последнего значимого коэффициента. Согласно заданному порядку сканирования все коэффициенты перед положением последнего значимого коэффициента декодируют для определения коэффициентов текущего блока.

[423] Необязательно, в другом варианте осуществления второй процессор 1503 дополнительно выполнен с возможностью выполнения способа согласно любому из приведенных выше вариантов осуществления при выполнении компьютерной программы.

[424] Следует понимать, что аппаратные функции второго запоминающего устройства 1502 и первого запоминающего устройства 1302 являются схожими, и аппаратные функции второго процессора 1503 и первого процессора 1303 являются схожими, что не будет описано подробно в данном документе.

[425] Варианты осуществления предоставляют декодер, содержащий узел анализа, и второй узел определения. Таким образом, в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, может быть уменьшено потребление ресурсов, вызванное кодированием в битовом потоке, и, таким образом, может быть улучшена пропускная способность и скорость кодирования коэффициентов. В дополнение эффективность сжатия также может быть повышена, поскольку уменьшенные или устраненные элементы синтаксиса оказывают меньшее влияние на кодирование видео при высокой битовой глубине, высокой битовой скорости, высоком качестве или сжатии без потерь.

[426] Следует понимать, что в данном изобретении термины «включающий», «содержащий» или любые другие их варианты предназначены для охвата неисключительного включения, так что процесс, способ, изделие или устройство, содержащие ряд элементов, не только включают эти элементы, а также включают другие элементы, не перечисленные в явном виде или присущие такому процессу, способу, изделию или устройству. В отсутствие дополнительного ограничения элемент, определенный утверждением «содержащий», не исключает присутствия дополнительных аналогичных элементов в процессе, способе, изделии или устройстве, содержащем данный элемент.

[427] Приведенные выше серийные номера вариантов осуществления настоящего изобретения приведены только для описания и не представляют преимуществ и недостатков вариантов осуществления.

[428] Способы, раскрытые в нескольких вариантах осуществления способа, предоставленных в данном изобретении, можно произвольно объединять без противоречия для получения новых вариантов осуществления способа.

[429] Характеристики, раскрытые в нескольких вариантах осуществления продукта, предоставленных в данном изобретении, можно произвольно объединять без противоречия для получения новых вариантов осуществления продукта.

[430] Характеристики, раскрытые в нескольких вариантах осуществления способа или устройства, предоставленных в данном изобретении, можно произвольно объединять без противоречия для получения новых вариантов осуществления способа или вариантов осуществления устройства.

[431] Вышеприведенные описания являются только конкретными вариантами осуществления настоящего изобретения, но объем правовой охраны настоящего изобретения ими не ограничивается. Любые изменения или замены, которые специалист в данной области техники может легко представить в пределах технического объема, раскрытого в этой изобретении, должны быть включены в объем правовой охраны этого изобретения. Следовательно, объем правовой охраны этого изобретения следует определять по объему правовой охраны формулы изобретения.

Промышленная применимость

[432] В некоторых вариантах осуществления настоящего изобретения, как для кодера, так и для декодера, в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, таких как элементы синтаксиса о положении последнего значимого коэффициента, флаги кодированного подблока и т. д., или дополнительное выполнение преобразования координаты в случае, когда значения координат последнего значимого коэффициента слишком велики, может быть уменьшено потребление ресурсов, вызванное кодированием в битовом потоке, и, таким образом, может быть улучшена пропускная способность и скорость кодирования коэффициентов. В дополнение эффективность сжатия также может быть повышена, поскольку уменьшенные или устраненные элементы синтаксиса оказывают меньшее влияние на кодирование видео при высокой битовой глубине, высокой битовой скорости, высоком качестве или сжатии без потерь.

Похожие патенты RU2831992C2

название год авторы номер документа
КОДИРОВАНИЕ ОСТАТКОВ И КОЭФФИЦИЕНТОВ ДЛЯ КОДИРОВАНИЯ ВИДЕО 2022
  • Цзху, Хун-Цзхэн
  • Сю, Сяоюй
  • Чэнь, И-Вэнь
  • Чэнь, Вэй
  • Ко, Чэ-Вэй
  • Ван, Сянлинь
  • Юй, Бин
RU2824946C2
ОСТАТОЧНОЕ КОДИРОВАНИЕ И КОДИРОВАНИЕ КОЭФФИЦИЕНТОВ ДЛЯ КОДИРОВАНИЯ ВИДЕО 2022
  • Цзху, Хун-Цзхэн
  • Сю, Сяоюй
  • Чэнь, И-Вэнь
  • Чэнь, Вэй
  • Ко, Чэ-Вэй
  • Ван, Сянлинь
  • Юй, Бин
RU2829115C2
СПОСОБ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ПРЕОБРАЗОВАНИЯ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ 2020
  • Коо, Моонмо
  • Лим, Дзаехиун
  • Ким, Сеунгхван
  • Салехифар, Мехди
RU2806283C2
СПОСОБ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ПРЕОБРАЗОВАНИЯ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ 2020
  • Коо, Моонмо
  • Лим, Дзаехиун
  • Ким, Сеунгхван
  • Салехифар, Мехди
RU2803457C2
СПОСОБ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ПРЕОБРАЗОВАНИЯ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ 2020
  • Коо, Моонмо
  • Лим, Дзаехиун
  • Ким, Сеунгхван
  • Салехифар, Мехди
RU2795932C1
КОДИРОВАНИЕ КОЭФФИЦИЕНТОВ И ОСТАТКА ДЛЯ КОДИРОВАНИЯ ВИДЕО 2022
  • Цзху, Хун-Цзхен
  • Сю, Сяоюй
  • Чэнь, И-Вэнь
  • Чэнь, Вэй
  • Ко, Чэ-Вэй
  • Ван, Сянлинь
  • Юй, Бин
RU2820669C1
СПОСОБ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ПРЕОБРАЗОВАНИЯ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ 2020
  • Коо, Моонмо
  • Лим, Дзаехиун
  • Ким, Сеунгхван
  • Салехифар, Мехди
RU2793775C1
СПОСОБ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ПРЕОБРАЗОВАНИЯ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ 2020
  • Коо, Моонмо
  • Ким, Сеунгхван
  • Лим, Дзаехиун
RU2812248C2
Способ кодирования изображения на основе преобразования и устройство для его осуществления 2020
  • Коо, Моонмо
  • Ким, Сеунгхван
  • Лим, Дзаехиун
RU2799629C1
КОДИРОВАНИЕ ИЗОБРАЖЕНИЯ ИЛИ ВИДЕО НА ОСНОВЕ РЕЖИМА ПАЛИТРЫ 2020
  • Чжао, Цзе
  • Палури, Сеетхал
  • Ким, Сеунгхван
RU2814221C2

Иллюстрации к изобретению RU 2 831 992 C2

Реферат патента 2024 года СПОСОБ КОДИРОВАНИЯ КОЭФФИЦИЕНТОВ, КОДЕР, ДЕКОДЕР И КОМПЬЮТЕРНЫЙ НОСИТЕЛЬ ДАННЫХ

Изобретение относится к средствам для кодирования видео. Технический результат заключается в повышении эффективности кодирования видео. Анализируют битовый поток с получением флага, относящегося к видео. Анализируют битовый поток с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию. Определяют положение последнего значимого коэффициента путем вычисления с помощью информации о координате последнего значимого коэффициента, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока. Декодируют согласно заданному порядку сканирования все коэффициенты перед положением последнего значимого коэффициента для определения коэффициентов текущего блока. 5 н. и 10 з.п. ф-лы, 17 ил., 10 табл.

Формула изобретения RU 2 831 992 C2

1. Способ декодирования коэффициента, применяемый к декодеру и включающий:

анализ битового потока с получением флага, относящегося к видео;

анализ битового потока с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию;

определение положения последнего значимого коэффициента путем вычисления с помощью информации о координате последнего значимого коэффициента, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока; и

декодирование согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.

2. Способ по п. 1, отличающийся тем, что дополнительно включает:

определение положения последнего значимого коэффициента непосредственно согласно информации о координате последнего значимого коэффициента, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока; и

декодирование согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.

3. Способ по п. 1, отличающийся тем, что дополнительно включает:

когда флаг, относящийся к видео, имеет первое значение, определение того, что флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию; или

когда флаг, относящийся к видео, имеет второе значение, определение того, что флаг, относящийся к видео, указывает на то, что видео не удовлетворяет заданному условию.

4. Способ по п. 3, отличающийся тем, что заданное условие включает по меньшей мере одно из: высокой битовой глубины, высокого качества, высокой битовой скорости, высокой кадровой частоты или сжатия без потерь.

5. Способ по п. 1, отличающийся тем, что дополнительно включает:

когда флаг обратного положения последнего значимого коэффициента имеет первое значение, определение того, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока; или

когда флаг обратного положения последнего значимого коэффициента имеет второе значение, определение того, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока.

6. Способ по п. 1, отличающийся тем, что анализ битового потока для получения информации о координате последнего значимого коэффициента включает:

анализ битового потока с получением информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента;

определение горизонтальной координаты последнего значимого коэффициента согласно информации о префиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе горизонтальной координаты последнего значимого коэффициента;

определение вертикальной координаты последнего значимого коэффициента согласно информации о префиксе вертикальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента; и

определение информации о координате последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.

7. Способ по п. 1, отличающийся тем, что способ дополнительно включает:

определение информации о координате последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока; и

соответственно, определение положения последнего значимого коэффициента путем вычисления с помощью информации о координате последнего значимого коэффициента включает:

определение ширины и высоты текущего блока;

получение горизонтальной координаты последнего значимого коэффициента путем вычитания из ширины текущего блока расстояния по горизонтали от положения последнего значимого коэффициента до нижнего правого угла текущего блока;

получение вертикальной координаты последнего значимого коэффициента путем вычитания из высоты текущего блока расстояния по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока; и

определение положения последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.

8. Способ по п. 1, отличающийся тем, что дополнительно включает:

определение информации о координате последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока; и

определение положения последнего значимого коэффициента согласно расстоянию по горизонтали и расстоянию по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока.

9. Способ по п. 1, отличающийся тем, что флаг обратного положения последнего значимого коэффициента является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.

10. Способ по п. 1, отличающийся тем, что дополнительно включает:

определение ширины и высоты блока преобразования, полученных в заданной операции на текущем блоке;

получение информации о координате нижнего правого угла блока преобразования посредством вычисления координаты согласно ширине и высоте блока преобразования; и

определение положения последнего коэффициента согласно информации о координате нижнего правого угла блока преобразования.

11. Способ по п. 10, отличающийся тем, что заданная операция по меньшей мере включает операцию нулевого вывода.

12. Способ кодирования коэффициента, применяемый к кодеру и включающий:

определение флага, относящегося к видео, и положения последнего значимого коэффициента;

определение флага обратного положения последнего значимого коэффициента, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию;

определение информации о координате последнего значимого коэффициента согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента; и

кодирование всех коэффициентов перед положением последнего значимого коэффициента согласно заданному порядку сканирования, и предоставление битовой информации, полученной с помощью кодирования, флага, относящегося к видео, и информации о координате последнего значимого коэффициента, в битовый поток.

13. Кодер, содержащий первый узел определения и узел кодирования, при этом

первый узел определения выполнен с возможностью определения флага, относящегося к видео, и положения последнего значимого коэффициента и определения флага обратного положения последнего значимого коэффициента, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию;

первый узел определения дополнительно выполнен с возможностью определения информации о координате последнего значимого коэффициента согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента; и

узел кодирования выполнен с возможностью кодирования всех коэффициентов перед положением последнего значимого коэффициента согласно заданному порядку сканирования и передачи битовой информации, полученной с помощью кодирования, флага, относящегося к видео, и информации о координате последнего значимого коэффициента в битовый поток.

14. Декодер, содержащий узел анализа и второй узел определения, при этом

узел анализа выполнен с возможностью анализа битового потока с получением флага, относящегося к видео, и анализа битового потока с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию;

второй узел определения выполнен с возможностью определения положения последнего значимого коэффициента путем вычисления с помощью информации о координате последнего значимого коэффициента, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока; и

узел анализа дополнительно выполнен с возможностью декодирования согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.

15. Компьютерный носитель данных, на котором хранится компьютерная программа, которая при выполнении на процессоре реализует способ по любому из пп. 1-12.

Документы, цитированные в отчете о поиске Патент 2024 года RU2831992C2

US 9794591 B2, 17.10.2017
CN 104093020 B, 17.11.2017
US 9565435 B2, 07.02.2017
Станок для придания концам круглых радиаторных трубок шестигранного сечения 1924
  • Гаркин В.А.
SU2019A1
US 10523968 B2, 31.12.2019
Способ восстановления спиралей из вольфрамовой проволоки для электрических ламп накаливания, наполненных газом 1924
  • Вейнрейх А.С.
  • Гладков К.К.
SU2020A1
СПОСОБ ЭНТРОПИЙНОГО КОДИРОВАНИЯ СЕГМЕНТА СЛАЙСА И УСТРОЙСТВО ДЛЯ НЕГО И СПОСОБ ЭНТРОПИЙНОГО ДЕКОДИРОВАНИЯ СЕГМЕНТА СЛАЙСА И УСТРОЙСТВО ДЛЯ НЕГО 2014
  • Ли Тамми
  • Чои Биеонг-Доо
RU2609750C1

RU 2 831 992 C2

Авторы

Ван, Фань

Се, Чжихуан

Даты

2024-12-18Публикация

2021-04-12Подача