СПОСОБ И ОБОРУДОВАНИЕ ДЛЯ ПРОВЕДЕНИЯ ВЫБОРА ПРЕОБРАЗОВАНИЯ В КОДЕРЕ И ДЕКОДЕРЕ
METHOD AND EQUIPMENT FOR PERFORMING TRANSFORMATION SELECTION IN ENCODER AND DECODER

Область техники, к которой относится изобретение
[0001] Заявка относится к способам и оборудованию для выбора преобразования при кодировании и декодировании.
Уровень техники
[0002] Текущая тестовая модель VTM видеокодека согласно стандарту универсального кодирования видео (VVC) включает в себя инструментальное средство, называемое "множественным выбором преобразования (MTS)". Это инструментальное средство обеспечивает возможность кодеру выбирать между тремя различными преобразованиями. Эти преобразования состоят из двух разновидностей дискретного косинусного преобразования (DCT) и одной разновидности дискретного синусного преобразования (DST). Во время кодирования, преобразование типично выполняется в горизонтальном направлении блока, далее выполняется второе преобразование в вертикальном направлении. Эти два преобразования являются независимыми друг от друга, так что вполне можно использовать различные преобразования в различных направлениях. Набор преобразований, из которых можно выбирать, включает в себя DCT-2, DST-7 и DCT-8 [2].
[0003] Кодер тестирует все допустимые комбинации при выборе преобразования, которое следует использовать. Они зависят от типа блока (взаимный/внутренний), размера блока, типа канала и режима прогнозирования. Например, для внутренних блоков в канале сигнала яркости с размерами между выборками 4×4 и выборками 32×32, пять различных комбинаций тестируются:
1. DCT-2 горизонтально и DCT-2 вертикально
2. DST-7 горизонтально и DST-7 вертикально
3. DST-7 горизонтально и DCT-8 вертикально
4. DCT-8 горизонтально и DST-7 вертикально
5. DCT-8 горизонтально и DCT-8 вертикально
[0004] Блоки, которые являются большими либо находятся в канале сигнала цветности, используют только DCT-2 в обоих направлениях. Инструментальное средство может активироваться отдельно для внутреннего и взаимного прогнозирования. В общих тестовых условиях (CTC) [1], инструментальное средство предоставляется только для внутренне прогнозированных блоков. Когда инструментальное средство деактивируется, кодер использует DCT-2 в обоих направлениях.
[0005] Чтобы уменьшать число битов, требуемых для того, чтобы кодировать выбранную комбинацию, арифметический может использоваться кодер с адаптивными вероятностями (контекстно-адаптивное двоичное арифметическое кодирование, CABAC). Кодер использует различные контексты, каждый из которых указывает отдельную вероятность, для того, чтобы кодировать элементы разрешения наиболее эффективным способом. В потоке битов, комбинация, выбранная посредством кодера, сигнализируется следующим образом:
emt_cu_flag: 1 элемент разрешения с использованием 6 CABAC-контекстов, чтобы сообщать то, используется или нет DCT-2 как горизонтально, так и вертикально. Контекст выбирается на основе глубины разбиения текущего блока. Флаг сообщается только для блоков сигналов яркости с размерами между выборками 4×4 и 32×32, и только в том случае, если MTS разрешается для текущего режима прогнозирования. Если значение флага равно 0, DCT-2 используется, в противном случае emt_tu_idx используется для того, чтобы определять комбинацию преобразований.
emt_tu_idx: 2 элемента разрешения с использованием 4 CABAC-контекстов, чтобы сообщать то, какая из оставшиеся четырех комбинаций используется. Два контекста используются, если блок внутренне кодируется, тогда как оставшиеся 2 контекста используются для взаимно кодированных блоков. (В CTC эти последние два контекста не используются, поскольку MTS выключается для взаимного кодирования в CTC). Один контекст используется в расчете на элемент разрешения, так что первый элемент разрешения использует контекст 0 или 2 (в зависимости от режима прогнозирования), тогда как второй элемент разрешения всегда использует контекст 1 или 3. Возможные значения для двух элементов разрешения колеблются от 0 (00 указывает DST-7 в обоих направлениях) до 3 (11 указывает DCT-8 в обоих направлениях). Эти два элемента разрешения сигнализируются только в том случае, если emt_cu_flag имеет значение 1.
[0006] В декодере, соответствующий процесс выполняется. Во-первых, emt_cu_flag получают посредством синтаксического анализа. Если флаг задан, emt_tu_idx получают посредством синтаксического анализа, чтобы определять преобразование, которое должно использоваться.
[0007] Следует отметить, что в некоторых случаях, названия "EMT (явное многоядерное преобразование)" или "AMT (адаптивное многоядерное преобразование)" используются для инструментального средства преобразования. Они представляют собой предшествующие названия инструментального средства, которое с тех пор изменено на MTS. Поскольку все названия означают идентичное инструментальное средство, они могут использоваться взаимозаменяемо.
[0008] Текущий проект стандарта VVC выполняет исчерпывающий поиск по всем возможным комбинациям. Это приводит к тому, что кодер тратит много времени на тестирование различных режимов, некоторые из которых практически никогда не выбираются. Кроме того, двоичный кодер использует неэффективный способ сигнализирования индекса преобразования.
Сущность изобретения
[0009] Первый аспект вариантов осуществления задает способ, осуществляемый посредством декодера. Способ содержит прием кодированного блока видео, имеющего по меньшей мере один флаг, кодированный с использованием контекстно-адаптивного арифметического кодирования. Способ содержит получение, посредством синтаксического анализа, по меньшей мере одного флага, чтобы определить, задан ли упомянутый по меньшей мере один флаг для сигнализирования того, что первое преобразование из множества преобразований должно использоваться для декодирования кодированного блока видео как в горизонтальном направлении, так и в вертикальном направлении. В ответ на то, что по меньшей мере один флаг задан для сигнализирования того, что первое преобразование должно использоваться как в горизонтальном направлении, так и в вертикальном направлении, способ дополнительно содержит декодирование кодированного блока видео в горизонтальном направлении и вертикальном направлении с использованием первого преобразования, чтобы сформировать декодированный блок видео. В ответ на то, что по меньшей мере один флаг задан для сигнализирования того, что первое преобразование не должно использоваться как в горизонтальном направлении, так и в вертикальном направлении, способ содержит получение, посредством синтаксического анализа, второго флага из упомянутого по меньшей мере одного флага, чтобы определить, задан ли второй флаг для сигнализирования того, что второе преобразование из множества преобразований должно использоваться для декодирования кодированного блока видео как в горизонтальном направлении, так и в вертикальном направлении, чтобы сформировать декодированный блок видео. В ответ на то, что второй флаг задан для сигнализирования того, что второе преобразование должно использоваться как в горизонтальном направлении, так и в вертикальном направлении, способ содержит декодирование кодированного блока видео в горизонтальном направлении и вертикальном направлении с использованием второго преобразования, чтобы сформировать декодированный блок видео. В ответ на то, что второй флаг задан для сигнализирования того, что второе преобразование не должно использоваться как в горизонтальном направлении, так и в вертикальном направлении, способ содержит получение, посредством синтаксического анализа, третьего флага из упомянутого по меньшей мере одного флага, чтобы определить то, в каком из горизонтального направления и вертикального направления второе преобразование должно использоваться для декодирования кодированного блока видео, и то, в каком из горизонтального направления и вертикального направления третье преобразование должно использоваться для декодирования кодированного блока видео. Способ содержит декодирование кодированного блока видео с использованием второго и третьего преобразований, чтобы сформировать декодированный блок видео.
[0010] Второй аспект вариантов осуществления задает декодер, содержащий по меньшей мере один процессор и запоминающее устройство, соединенное с процессором. Запоминающее устройство содержит инструкции, исполняемые посредством процессора, которые инструктируют процессору выполнять прием кодированного блока видео, имеющего по меньшей мере один флаг, кодированный с использованием контекстно-адаптивного арифметического кодирования. Запоминающее устройство содержит инструкции, выполняемые посредством процессора, которые инструктируют процессору получать, посредством синтаксического анализа, по меньшей мере одного флага, чтобы определить, задан ли по меньшей мере один флаг для сигнализирования того, что первое преобразование из множества преобразований должно использоваться декодирования кодированного блока видео как в горизонтальном направлении, так и в вертикальном направлении. Запоминающее устройство содержит инструкции, выполняемые посредством процессора, которые инструктируют процессору выполнять, в ответ на то, что по меньшей мере один флаг задан для сигнализирования того, что первое преобразование должно использоваться как в горизонтальном направлении, так и в вертикальном направлении, декодирование кодированного блока видео в горизонтальном направлении и вертикальном направлении с использованием первого преобразования, чтобы сформировать декодированный блок видео. Запоминающее устройство содержит инструкции, выполняемые посредством процессора, которые инструктируют процессору выполнять, в ответ на задание по меньшей мере одного флага для сигнализирования того, что первое преобразование не должно использоваться как в горизонтальном направлении, так и в вертикальном направлении, получение, посредством синтаксического анализа, второго флага из упомянутого по меньшей мере одного флага, чтобы определить то, задан ли второй флаг для сигнализирования того, что второе преобразование из множества преобразований должно использоваться для декодирования кодированного блока видео как в горизонтальном направлении, так и в вертикальном направлении, чтобы сформировать декодированный блок видео. Запоминающее устройство содержит инструкции, выполняемые посредством процессора, которые инструктируют процессору выполнять, в ответ на то, что по меньшей мере один флаг задан для сигнализирования того, что первое преобразование должно использоваться как в горизонтальном направлении, так и в вертикальном направлении, декодирование кодированного блока видео в горизонтальном направлении и вертикальном направлении с использованием второго преобразования, чтобы сформировать декодированный блок видео. Запоминающее устройство содержит инструкции, выполняемые посредством процессора, которые инструктируют процессору выполнять, в ответ на то, что по меньшей мере один флаг задание для сигнализирования того, что первое преобразование не должно использоваться как в горизонтальном направлении, так и в вертикальном направлении, получение, посредством синтаксического анализа, третьего флага из по меньшей мере одного флага, чтобы определить то, в каком из горизонтального направления и вертикального направления второе преобразование должно использоваться для декодирования кодированного блока видео, и то, в каком из горизонтального направления и вертикального направления третье преобразование должно использоваться для декодирования кодированного блока видео. Запоминающее устройство содержит инструкции, выполняемые посредством процессора, которые инструктируют процессору выполнять декодирование кодированного блока видео с использованием второго и третьего преобразований, чтобы сформировать декодированный блок видео.
[0011] Третий аспект вариантов осуществления задает компьютерную программу для декодера. Компьютерная программа содержит средства кода, которые, при их исполнении на компьютере, инструктирует компьютеру принимать кодированный блок видео, имеющий по меньшей мере один флаг, кодированный с использованием контекстно-адаптивного арифметического кодирования. Компьютерная программа содержит средства кода, которые, при их исполнении на компьютере, инструктирует компьютеру получать, посредством синтаксического анализа, по меньшей мере один флаг, чтобы определить, задан ли по меньшей мере один флаг для сигнализирования того, что первое преобразование из множества преобразований должно использоваться для декодирования кодированного блока видео как в горизонтальном направлении, так и в вертикальном направлении. Компьютерная программа содержит средства кода, которые, при их исполнении на компьютере, инструктирует компьютеру, в ответ на то, что по меньшей мере один флаг задан для сигнализирования того, что первое преобразование должно использоваться как в горизонтальном направлении, так и в вертикальном направлении, декодировать кодированный блок видео в горизонтальном направлении и вертикальном направлении с использованием первого преобразования, чтобы сформировать декодированный блок видео. Компьютерная программа содержит средства кода, которые, при их исполнении на компьютере, инструктирует компьютеру, в ответ на то, что по меньшей мере одного флага задан для сигнализирования того, что первое преобразование не должно использоваться как в горизонтальном направлении, так и в вертикальном направлении, получать, посредством синтаксического анализа, второй флаг из по меньшей мере одного флага, чтобы определить, задан ли второй флаг для сигнализирования того, что второе преобразование из множества преобразований должно использоваться для декодирования кодированного блока видео как в горизонтальном направлении, так и в вертикальном направлении, чтобы сформировать декодированный блок видео. Компьютерная программа содержит средства кода, которые, при их исполнении на компьютере, инструктирует компьютеру, в ответ на то, что второй флаг задан для сигнализирование того, что второе преобразование должно использоваться как в горизонтальном направлении, так и в вертикальном направлении, декодировать кодированный блок видео в горизонтальном направлении и вертикальном направлении с использованием второго преобразования, чтобы сформировать декодированный блок видео. Компьютерная программа содержит средства кода, которые, при их исполнении на компьютере, инструктирует компьютеру, в ответ на то, что второй флаг задан для сигнализирования того, что второе преобразование не должно использоваться как в горизонтальном направлении, так и в вертикальном направлении, получать, посредством синтаксического анализа, третий флаг из по меньшей мере одного флага, чтобы определить то, в каком из горизонтального направления и вертикального направления второе преобразование должно использоваться для декодирования кодированного блока видео, и то, в каком из горизонтального направления и вертикального направления третье преобразование должно использоваться для декодирования кодированного блока видео. Компьютерная программа содержит средства кода, которые, при их исполнении на компьютере, инструктирует компьютеру декодировать кодированный блок видео с использованием второго и третьего преобразований, чтобы сформировать декодированный блок видео.
[0012] Четвертый аспект вариантов осуществления задает компьютерный программный продукт, содержащий машиночитаемое средство и компьютерную программу согласно третьему аспекту, сохраненную на машиночитаемом средстве.
[0013] Пятый аспект вариантов осуществления задает способ, осуществляемый посредством кодера. Способ содержит прием блока видео для кодирования. Способ содержит определение характеристики блока видео. Способ дополнительно содержит, в ответ на то, что характеристика имеет тип, который указывает, что используется множественный выбор преобразования, выбор первого преобразования во множестве преобразований, которое представляет собой часть множественного выбора преобразования и которое либо является самым вычислительно затратным для использования, либо с наименьшей вероятностью должно использоваться при кодировании блока видео. Способ содержит тестирование комбинаций множества преобразований в горизонтальном направлении и вертикальном направлении без тестирования комбинации, в которой первое преобразование используется как в горизонтальном направлении, так и в вертикальном направлении. Способ содержит выбор комбинации из комбинаций, которая предоставляет наименьшее соотношение искажений к битрейту. Способ содержит кодирование блока видео с использованием выбранной комбинации, чтобы сформировать кодированный блок видео. Способ содержит, в ответ на то, что характеристика имеет тип, который указывает, что множественный выбор преобразования не должен использоваться, кодирование блока видео с использованием преобразования по умолчанию в горизонтальном направлении и вертикальном направлении.
[0014] Шестой аспект вариантов осуществления задает кодер для кодирования блока видео на основе размера блока для блока, при этом каждое из горизонтального направления и вертикального направления блока кодируется с использованием преобразования, при этом преобразование может представлять собой одно из первого преобразования, второго преобразования и третьего преобразования. Кодер содержит, по меньшей мере, один процессор и запоминающее устройство, соединенное с процессором. Запоминающее устройство содержит инструкции, исполняемые посредством процессора, которые инструктируют процессору выполнять определение характеристики блока видео. Запоминающее устройство содержит инструкции, исполняемые посредством процессора, которые инструктируют процессору выполнять, в ответ на то, что характеристика имеет тип, который указывает, что используется множественный выбор преобразования, выбор первого преобразования во множестве преобразований, которое представляет собой часть множественного выбора преобразования и которое либо является самым вычислительно затратным для использования, либо с наименьшей вероятностью должно использоваться при кодировании блока видео. Запоминающее устройство содержит инструкции, исполняемые посредством процессора, которые инструктируют процессору выполнять тестирование комбинаций множества преобразований в горизонтальном направлении и вертикальном направлении без тестирования комбинации, в которой первое преобразование используется как в горизонтальном направлении, так и в вертикальном направлении. Запоминающее устройство содержит инструкции, исполняемые посредством процессора, которые инструктируют процессору выполнять выбор комбинации из комбинаций, которая предоставляет наименьшее соотношений искажений к битрейту. Запоминающее устройство содержит инструкции, исполняемые посредством процессора, которые инструктируют процессору выполнять кодирование блока видео с использованием выбранной комбинации, чтобы сформировать кодированный блок видео. Запоминающее устройство содержит инструкции, исполняемые посредством процессора, которые инструктируют процессору выполнять, в ответ на то, что характеристика имеет тип, который указывает, что множественный выбор преобразования не должен использоваться, кодирование блока видео с использованием преобразования по умолчанию в горизонтальном направлении и вертикальном направлении.
[0015] Седьмой аспект вариантов осуществления задает компьютерную программу для кодирования блока видео на основе размера блока для блока, при этом каждое из горизонтального направления и вертикального направления блока кодируется с использованием преобразования, при этом преобразование может представлять собой одно из первого преобразования, второго преобразования и третьего преобразования. Компьютерная программа содержит средства кода, которые, при их исполнении на компьютере, инструктируют компьютеру определять характеристику блока видео. Компьютерная программа содержит средства кода, которые, при их исполнении на компьютере, инструктируют компьютеру, в ответ на то, что характеристика имеет тип, который указывает, что используется множественный выбор преобразования, выбирать первое преобразование во множестве преобразований, которое представляет собой часть множественного выбора преобразования и которое либо является самым вычислительно затратным для использования, либо с наименьшей вероятностью должно использоваться при кодировании блока видео. Компьютерная программа содержит средства кода, которые, при их исполнении на компьютере, инструктируют компьютеру тестировать комбинации множества преобразований в горизонтальном направлении и вертикальном направлении без тестирования комбинации, в которой первое преобразование используется как в горизонтальном направлении, так и в вертикальном направлении. Компьютерная программа содержит средства кода, которые, при их исполнении на компьютере, инструктируют компьютеру выбирать комбинацию из комбинаций, которая предоставляет наименьшее соотношение искажений к битрейту. Компьютерная программа содержит средства кода, которые, при их исполнении на компьютере, инструктируют компьютеру кодировать блок видео с использованием выбранной комбинации, чтобы сформировать кодированный блок видео. Компьютерная программа содержит средства кода, которые, при их исполнении на компьютере, инструктируют компьютеру, в ответ на то, что характеристика имеет тип, который указывает, что множественный выбор преобразования не должен использоваться, кодировать блок видео с использованием преобразования по умолчанию в горизонтальном направлении и вертикальном направлении.
[0016] Восьмой аспект вариантов осуществления задает компьютерный программный продукт, содержащий машиночитаемое средство и компьютерную программу согласно седьмому аспекту, сохраненную на машиночитаемом средстве.
[0017] Преимущества, обеспечиваемые посредством идей изобретения, включают в себя снижение сложности кодера за счет удаления одной из пяти комбинаций, описанных выше. Сложность кодера и декодера снижается за счет использования менее сложного преобразования для определенных размеров блоков. Кроме того, эффективность преобразования в двоичную форму увеличивается по мере того, как число элементов разрешения для наиболее общей комбинации (DST-7 в обоих направлениях) уменьшается с 3 до 2.
Краткое описание чертежей
[0018] Прилагаемые чертежи, которые включаются для того, чтобы предоставлять дополнительное понимание раскрытия, и содержатся и составляют часть этой заявки, иллюстрируют конкретные неограничивающие варианты осуществления идей изобретения. На чертежах:
[0019] Фиг. 1 является блок-схемой, иллюстрирующей пример окружения системы, в которой кодер и декодер могут реализовываться согласно некоторым вариантам осуществления;
[0020] Фиг. 2 является блок-схемой, является блок-схемой, иллюстрирующей кодер согласно некоторым вариантам осуществления;
[0021] Фиг. 3 является блок-схемой, иллюстрирующей декодер согласно некоторым вариантам осуществления;
[0022] Фиг. 4 является блок-схемой, иллюстрирующей компоненты инструментального MTS-средства;
[0023] Фиг. 5 является блок-схемой, иллюстрирующей компоненты инструментального MTS-средства согласно некоторым вариантам осуществления;
[0024] Фиг. 6 является блок-схемой, иллюстрирующей компоненты инструментального MTS-средства согласно некоторым вариантам осуществления;
[0025] Фиг. 7-11 являются блок-схемами последовательности операций способа, иллюстрирующими операции кодера и/или декодера в соответствии с некоторыми вариантами осуществления идей изобретения.
Подробное описание изобретения
[0026] В дальнейшем в данном документе подробнее описываются идеи изобретения со ссылкой на прилагаемые чертежи, на которых показаны примеры вариантов осуществления идей изобретения. Тем не менее, идеи изобретения могут осуществляться во множестве различных форм и не должны рассматриваться как ограниченные вариантами осуществления, изложенными в данном документе. Наоборот, эти варианты осуществления предоставляются таким образом, что это раскрытие должно быть исчерпывающим и всеобъемлющим и полностью выражать объем идей настоящего изобретения для специалистов в данной области техники. Также следует отметить, что эти варианты осуществления не являются взаимоисключающими. Компоненты из одного варианта осуществления могут неявно предполагаться как присутствующие/используемые в другом варианте осуществления.
[0027] Нижеприведенное описание представляет различные варианты осуществления раскрытого изобретения. Эти варианты осуществления представляются в качестве обучающих примеров и не должны истолковываться в качестве ограничения объема раскрытого изобретения. Например, определенные подробности описанных вариантов осуществления могут модифицироваться, опускаться или дополняться без отступления от объема описанного изобретения.
[0028] Фиг. 1 иллюстрирует пример операционного окружения кодера 100, который может использоваться для того, чтобы кодировать потоки битов, как описано в данном документе. Кодер 100 имеет компонент 102 множественного выбора преобразования (MTS), используемый при кодировании. Кодер 100 принимает видео из сети 104 и/или из хранилища 106 и кодирует видео в потоки битов с использованием MTS-компонента 102 для заданных размеров блоков видео, как описано ниже, и передает кодированное видео в декодер 108 через сеть 110. Устройство 106 хранения данных может представлять собой часть депозитария хранения данных видео, такую как репозиторий хранения данных для хранилища или услуги потоковой передачи видео, отдельный компонент хранения данных, компонент мобильного устройства и т.д. Декодер 108 может представлять собой часть устройства 112, имеющего мультимедийный аудио/видео-(A/V-)проигрыватель 114. Устройство 112 может представлять собой мобильное устройство, абонентскую приставку, настольный компьютер и т.п.
[0029] Фиг. 2 является блок-схемой, иллюстрирующей элементы кодера 100, выполненного с возможностью кодировать видеокадры согласно некоторым вариантам осуществления идей изобретения. Как показано, кодер 100 может включать в себя сетевую интерфейсную схему 205 (также называемую "сетевым интерфейсом"), выполненную с возможностью предоставлять связь с другими устройствами/объектами/функциями и т.д. Кодер 100 также может включать в себя процессорную схему 201 (также называемую "процессором"), соединенную с сетевой интерфейсной схемой 205, и запоминающую схему 203 (также называемую "запоминающим устройством"), соединенную с процессорной схемой. Запоминающая схема 203 может включать в себя машиночитаемый программный код, который при выполнении посредством процессорной схемы 201 инструктирует процессорной схеме выполнять операции согласно вариантам осуществления, раскрытым в данном документе.
[0030] Согласно другим вариантам осуществления, процессорная схема 201 может задаваться таким образом, что она включает в себя запоминающее устройство, так что отдельная запоминающая схема не требуется. Как пояснено в данном документе, операции кодера 100 могут выполняться посредством процессора 201 и/или сетевого интерфейса 205. Например, процессор 201 может управлять сетевым интерфейсом 205 таким образом, чтобы передавать связь в декодер 108 и/или принимать связь через сетевой интерфейс 104 из одного или более других сетевых узлов/объектов/серверов, таких как другие узлы-кодеры, серверы депозитария и т.д. Кроме того, модули могут сохраняться в запоминающем устройстве 203, и эти модули могут предоставлять инструкции таким образом, что когда инструкции модуля выполняются посредством процессора 201, процессор 201 выполняет соответствующие операции.
[0031] Фиг. 3 является блок-схемой, иллюстрирующей элементы декодера 108, выполненного с возможностью декодировать видеокадры согласно некоторым вариантам осуществления идей изобретения. Как показано, декодер 108 может включать в себя сетевую интерфейсную схему 305 (также называемую "сетевым интерфейсом"), выполненную с возможностью предоставлять связь с другими устройствами/объектами/функциями и т.д. Декодер 108 также может включать в себя процессорную схему 301 (также называемую "процессором"), соединенную с сетевой интерфейсной схемой 305, и запоминающую схему 303 (также называемую "запоминающим устройством"), соединенную с процессорной схемой. Запоминающая схема 303 может включать в себя машиночитаемый программный код, который при выполнении посредством процессорной схемы 301 инструктирует процессорной схеме выполнять операции согласно вариантам осуществления, раскрытым в данном документе.
[0032] Согласно другим вариантам осуществления, процессорная схема 301 может задаваться таким образом, что она включает в себя запоминающее устройство, так что отдельная запоминающая схема не требуется. Как пояснено в данном документе, операции декодера 108 могут выполняться посредством процессора 301 и/или сетевого интерфейса 305. Например, процессор 301 может управлять сетевым интерфейсом 305 таким образом, чтобы принимать связь из кодера 100. Кроме того, модули могут сохраняться в запоминающем устройстве 303, и эти модули могут предоставлять инструкции таким образом, что когда инструкции модуля выполняются посредством процессора 301, процессор 301 выполняет соответствующие операции.
[0033] Потенциальное преимущество, предоставленное посредством идей изобретения, описанных в данном документе, включает в себя сокращение времени работы кодера за счет ограничения числа комбинаций преобразований, которые должны оцениваться в случае кодера, реализованного в программном обеспечении. В случае кодера, реализованного в аппаратных средствах, снижение сложности может принимать другую форму, такую как пониженное использование площади кристалла микросхемы вместо времени работы кодера.
[0034] Варианты осуществления, описанные в данном документе, снижают сложность кодера и декодера за счет замены преобразования, которое является вычислительно затратным для использования, либо которое нечасто используется посредством другого преобразования для определенных размеров блоков. Например, в кодере, который выполнен с возможностью работать согласно стандарту VVC, DCT-8, которое является относительно вычислительно затратным, может заменяться посредством DCT-2, которое является относительно менее вычислительно затратным для определенных размеров блоков.
[0035] Кроме того, эффективность сжатия повышается за счет использования CABAC-контекстов для того, чтобы преобразовывать в двоичную форму emt_cu_flag и emt_tu_idx.
[0036] Дополнительное улучшение заключается в уменьшении использования запоминающего устройства, поскольку коэффициенты преобразования для замененного преобразования (например, DCT-8 размера 32) не должны сохраняться в запоминающем устройстве. В аппаратной реализации, это может приводить к меньшей площади поверхности кристалла микросхемы.
[0037] Например, в реализации на основе привязки с использованием VTM 2.0.1 согласно общим тестовым условиям (CTC), как описано в [1], эффективность сжатия (средний BD-коэффициент для сигнала яркости) повышается на 0,07% в полностью внутренней конфигурации и на 0,02% в конфигурации с произвольным доступом (RA). Одновременно, время кодирования уменьшается до 85% (AI) и 95% (RA), соответственно, по сравнению с привязкой. Возникает минимальное (если вообще возникает) влияние на сложность декодера, но до такой степени, что влияние является предпочтительным. Одна причина этого заключается в удалении из использования вычислительно затратной комбинации DCT-8 горизонтально и DCT-8 вертикально. При реализации идентичных модификаций в VTM-3.0, повышение эффективности сжатия составляет 0,03% (AI) и 0,01% (RA), в то время как время работы кодера уменьшается до 88% (AI) и 98% (RA), соответственно.
[0038] В нижеприведенном описании, кодер и декодер, выполненные с возможностью работать в соответствии с частями стандартизации VVC, используются для того, чтобы описывать идеи изобретения. Другие стандартизации могут реализовываться с использованием понятий, описанных в данном документе.
[0039] Фиг. 4 иллюстрирует вариант осуществления того, как в настоящее время реализуется инструментальное MTS-средство. Фиг. 5 иллюстрирует то, как MTS по фиг. 4 изменяется в одном варианте осуществления. На фиг. 4, каждый узел помечается с помощью буквы с последующим знаком двоеточия (т.е. "a:"-"j:"). На фиг. 5, каждый узел помечается с помощью двух букв с последующим знаком двоеточия (т.е. "aa:"-"hh:"). На фиг. 6, каждый узел помечается с помощью двух букв с последующим знаком двоеточия (т.е. "aaa:"-"jjj:"). Авторы изобретения поняли, что несколько различных изменений инструментального MTS-средства, в данный момент реализованного в проекте стандарта VVC, могут вноситься для того, чтобы повышать эффективность вычислений кодера и декодера. В нижеприведенном описании изменений, узлы по фиг. 4-6 упоминаются посредством буквы или букв на чертежах. На основе фиг. 4, вносятся следующие изменения:
Изменение 1: Комбинация DCT-8 горизонтально и DCT-8 вертикально в ветви 2 (в узле g) более не разрешается. Это подразумевает то, что кодер не оценивает эту комбинацию, за счет этого уменьшая время выполнения оценки. Декодер может прийти к заключению, что, если mts_tu_idx_hor указывает DCT-8 (узел e), mts_tu_idx_ver должно, с изменением, всегда указывать DST-7 (узел h).
Изменение 2: Для определенных размеров блоков, DCT-8 в ветви 2 (в узлах e, g и i на фиг. 4, в узлах gg и hh на фиг. 5) заменяется посредством DCT-2. Если блок имеет конкретный размер, то кодер должен знать то, что в ветви 2 он должен оценивать DCT-2 вместо DCT-8. Это добавляется к изменению 1, поскольку для этих блоков комбинация DCT-2 горизонтально и DCT-2 вертикально в ветви 2 не должна оцениваться, поскольку этот точный случай уже охватывается ветвью 1. Декодер подтверждает это изменение посредством применения DCT-2 вместо DCT-8 в случаях, если блок имеет конкретный размер, и либо mts_tu_idx_hor, либо mts_tu_idx_ver указывает использование DCT-8. Вследствие этого изменения, нижеприведенный текст упоминает DCT-X, что означает DCT-8 для некоторых размеров блоков и DCT-2 для других размеров блоков.
Изменение 3: Комбинация DST-7 горизонтально и DST-7 вертикально (узел j), которая представляет собой наиболее общую комбинацию преобразований, перемещается в дереве кодирования на фиг. 5 в позицию, в данный момент занимаемую посредством DCT-X горизонтально (узла ee). Вследствие изменения 1, mts_tu_idx_ver не должен обязательно кодироваться, если mts_tu_idx_hor указывает DCT-X. Это изменение использует преимущество такого опускания.
Изменение 4: Поскольку флаг mts_tu_idx_ver кодируется только на основе значения флага mts_tu_idx_hor, оба флага удаляются и заменяются посредством двух новых флагов. Два новых флага (также проиллюстрированы на фиг. 5) представляют собой mts_dst_flag и mts_tu_flag.
a) mts_dst_flag указывает то, следует использовать DST-7 в обоих направлениях либо нет.
b) mts_tu_flag указывает то, в каком направлении должны использоваться DCT-X и DST-7.
Изменение 5: mts_tu_flag сигнализировать, следует использовать более предпочтительную комбинацию или менее предпочтительную комбинацию. Определение того, какая из доступных комбинаций является более предпочтительной, выполняется на основе направления внутреннего прогнозирования. Если блок использует взаимное прогнозирование, флаг также сигнализирует то, следует или нет использовать более предпочтительную комбинацию, но определение того, какая комбинация является более предпочтительной, основано на другой информации, например, на размере блока или форме блока.
Изменение 6: Ранее, выбор контекста mts_cu_flag выполнен на основе глубины разбиения. При этих изменениях, корректный контекст определяется на основе большей размерности (ширины или высоты) блока, а также направления внутреннего прогнозирования (предсказания). Если блок использует взаимное прогнозирование, контекст выбирается на основе другой информации, например, размера блока или формы блока.
Изменение 7 (см. фиг. 6): Флаг mts_tu_idx_hor заменяется посредством флага (например, mst_same_flag), указывающего то, являются или нет оба преобразования идентичными. Если флаг задан, то идентичное преобразование должно использоваться в обоих направлениях. Дополнительный бит кодируется, чтобы указывать, какое преобразование следует использовать. Если флаг не задан, то два разных преобразования должны использоваться в двух направлениях, причем дополнительный бит кодируется для того, чтобы указывать то, какое преобразование следует использовать в каком направлении.
[0040] Изменения 1-6 отражаются на фиг. 5, и изменение 7 отражается на фиг. 6. В нижеприведенном описании, должны описываться различные варианты осуществления, указывающие то, какие изменения вносятся для конкретных размеров блоков и для конкретных типов блоков (т.е. для взаимно кодированных блоков или внутренне кодированных блоков).
[0041] До описания различных вариантов осуществления на основе вышеуказанных изменений, должно описываться общее представление того, как кодер 100 и декодер 108 работают с реализованными изменениями. Обращаясь теперь к фиг. 7, кодер 100 на этапе 701 определяет характеристику блока видео, который должен кодироваться. Характеристика может представлять собой размер блока, тип блока (взаимный/внутренний, inter/intra), тип канала, режим прогнозирования, размерность (ширину или высоту) блока, а также направление внутреннего прогнозирования и т.д.
[0042] В ответ на то, что характеристика имеет тип, который указывает, что компонент множественного выбора преобразования используется, кодер 100 на этапе 703 выбирает первое преобразование из множества преобразований, используемых посредством компонента множественного выбора преобразования (MST), которое либо является самым вычислительно затратным, либо с наименьшей вероятностью должно использоваться при кодировании блока видео. Например, когда преобразования, используемые посредством MST, представляют собой DCT-2, DST-7 и DCT-8, DCT-8 зачастую является самым вычислительно затратным для использования. В таких сценариях, DCT-8-преобразование может выбираться и обозначаться в качестве первого преобразования.
[0043] На этапе 705 кодер 100 тестирует комбинации преобразований без тестирования комбинации, в которой первое преобразование используется как в горизонтальном направлении, так и в вертикальном направлении. Например, DCT-8-преобразование в сценарии, описанном на этапе 703, не должно тестироваться как в горизонтальном направлении, так и в вертикальном направлении.
[0044] На этапе 707 выбирается комбинация, которая обеспечивает наименьшее соотношение искажений к битрейту по сравнению с другими тестовыми комбинациями. Другие факторы принятия решений также могут использоваться в выборе комбинации, которую следует использовать. Например, если одно из преобразований является предпочтительным по сравнению с другим преобразованием, и оба преобразования имеют сравнимое соотношение искажений к битрейту, предпочтительное преобразование может использоваться.
[0045] На этапе 709 блок видео кодируется с использованием комбинации, выбранной, чтобы сформировать кодированный блок. На этапе 711 кодированный блок передается в декодер, к примеру, в декодер 108, с флагами, которые используются декодером для того, чтобы определять, какая комбинация использована при кодировании и должна использоваться в декодировании кодированного блока.
[0046] В ответ на то, что характеристика не представляет собой тип, блок видео кодируется с использованием преобразования по умолчанию в горизонтальном и вертикальном направлениях. В одном варианте осуществления, DCT-2-преобразование может использоваться в качестве преобразования по умолчанию. На этапе 715 кодированный блок передается в декодер, к примеру, в декодер 108, с флагами, которые используются декодером для того, чтобы определять, какая комбинация использована при кодировании и должна использоваться в декодировании кодированного блока.
[0047] Обращаясь теперь к фиг. 8, проиллюстрированы операции, которые может выполнять декодер 108. На этапе 801 декодер принимает кодированный блок видео, который имеет флаги. На этапе 803 получают первый флаг посредством синтаксического анализа, чтобы определить, задан или нет флаг. Первый флаг может представлять собой mts_cu_flag. Настройка флага может указывать, должно или нет первое преобразование использоваться для декодирования кодированного блока видео как в горизонтальном направлении, так и в вертикальном направлении. Например, в одном варианте осуществления, настройка может представлять собой двоичную настройку в 1 или 0. Другими словами, первый флаг равен первому значению или второму значению. Настройка в 1 может указывать то, что первое преобразование должно использоваться в обоих направлениях. В других вариантах осуществления, настройка в 0 может использоваться для того, чтобы указывать то, что первое преобразование должно использоваться в обоих направлениях.
[0048] На этапе 805 блок видео декодируется с использованием первого преобразования как в горизонтальном направлении, так и в вертикальном направлении в ответ на то, что первый флаг имеет значение, ассоциированное с первым преобразованием, используемым в обоих направлениях (например, первый флаг равен первому значению). Например, DCT-2-преобразование может использоваться как в горизонтальном направлении, так и в вертикальном направлении для того, чтобы декодировать блок видео.
[0049] На этапе 807 получают второй флаг посредством синтаксического анализа в ответ на настройку первого флага, имеющую значение, ассоциированное с первым преобразованием, не используемым в обоих направлениях. Второй флаг получается посредством синтаксического анализа для того, чтобы определить настройку второго флага. Настройка флага может указывать, должно или нет второе преобразование использоваться для декодирования кодированного блока видео как в горизонтальном направлении, так и в вертикальном направлении. Например, в одном варианте осуществления, настройка может представлять собой двоичную настройку в 1 или 0. Другими словами, второй флаг равен первому значению или второму значению. Настройка в 1 может указывать то, что второе преобразование должно использоваться в обоих направлениях. В других вариантах осуществления, настройка в 0 может использоваться для того, чтобы указывать то, что второе преобразование должно использоваться в обоих направлениях.
[0050] Второе преобразование может представлять собой одно из двух преобразований. Второй флаг может быть получен посредством синтаксического анализа, чтобы определить то, какое из двух преобразований должно использоваться для декодирования блока видео. Например, два преобразования в одном варианте осуществления могут представлять собой DST-7-преобразование и DCT-8-преобразование.
[0051] На этапе 809 блок видео декодируется с использованием второго преобразования как в горизонтальном направлении, так и в вертикальном направлении в ответ на то, что второй флаг имеет значение, ассоциированное со вторым преобразованием, используемым в обоих направлениях (например, второй флаг равен первому значению). Например, DST-7-преобразование может использоваться как в горизонтальном направлении, так и в вертикальном направлении для того, чтобы декодировать блок видео на этапе 809.
[0052] На этапе 811 третий флаг получают посредством синтаксического анализа в ответ на настройку второго флага, имеющую значение, ассоциированное со вторым преобразованием, не используемым в обоих направлениях. Третий флаг получают посредством синтаксического анализа для того, чтобы определить настройку третьего флага. Настройка третьего флага может указывать то, должно или нет второе преобразование использоваться для декодирования кодированного блока видео в горизонтальном направлении или вертикальном направлении, и то, должно или нет третье преобразование использоваться для декодирования в другом из горизонтального направления и вертикального направления. Она может представлять собой первую предпочтительную комбинацию преобразований. Например, в одном варианте осуществления, настройка может представлять собой двоичную настройку в 1 или 0. Настройка в 1 может указывать то, что второе преобразование должно использоваться в горизонтальном направлении, и третье преобразование должно использоваться в вертикальном направлении. В других вариантах осуществления, настройка в 0 может использоваться для того, чтобы указывать то, что второе преобразование должно использоваться в горизонтальном направлении, и третье преобразование должно использоваться в вертикальном направлении. Она может представлять собой первую вторую предпочтительную комбинацию преобразований. Третье преобразование в варианте осуществления может представлять собой первое преобразование.
[0053] На этапе 813 блок видео декодируется с использованием второго преобразования либо в горизонтальном направлении, либо в вертикальном направлении на основе настройки третьего флага. Например, DST-7-преобразование может использоваться в горизонтальном направлении, и DCT-2 или DCT-8-преобразование может использоваться в вертикальном направлении для того, чтобы декодировать блок видео на этапе 813. Альтернативно, DST-7-преобразование может использоваться в вертикальном направлении, и DCT-2 или DCT-8-преобразование может использоваться в горизонтальном направлении для того, чтобы декодировать блок видео на этапе 813.
[0054] На этапе 815 декодер может выводить декодированный блок видео в мультимедийный проигрыватель для воспроизведения декодированного блока видео.
[0055] Обращаясь теперь к фиг. 9, в альтернативном варианте осуществления, декодер 108 на этапе 901 определяет то, удовлетворяется или нет первый критерий, на основе размера блока для кодированного блока видео. Критерий может представлять собой размер блока, тип блока (взаимный/внутренний), тип канала, режим прогнозирования, размерность (ширину или высоту) блока и т.д.
[0056] На этапе 903, в ответ на удовлетворение первого критерия, декодер выбирает комбинацию преобразований из одного из: первого преобразования как в вертикальном направлении, так и в горизонтальном направлении; третьего преобразования как в вертикальном направлении, так и в горизонтальном направлении; первого преобразования в вертикальном направлении и третьего преобразования в горизонтальном направлении; и третьего преобразования в вертикальном направлении и первого преобразования в горизонтальном направлении.
[0057] На этапе 905, в ответ на удовлетворение первого критерия, декодер выбирает комбинацию преобразований из одного из: первого преобразования как в вертикальном направлении, так и в горизонтальном направлении; третьего преобразования как в вертикальном направлении, так и в горизонтальном направлении; второго преобразования в вертикальном направлении и третьего преобразования в горизонтальном направлении; и третьего преобразования в вертикальном направлении и второго преобразования в горизонтальном направлении.
[0058] На этапе 907 декодер декодирует блок с использованием выбранной комбинации. На этапе 909 декодер может передавать кодированный блок в мультимедийный проигрыватель.
[0059] Первое преобразование в вариантах осуществления, описанных ниже, представляет собой DCT-2-преобразование, второе преобразование представляет собой DCT-8-преобразование, и третье преобразование представляет собой DST-7-преобразование. В нижеприведенном описании вариантов осуществления, первый критерий представляет собой размер блока.
[0060] В первом варианте осуществления, изменение 1 вносится для всех размеров блоков, при которых инструментальное MTS-средство разрешается, и изменение 2 вносится для всех блоков, для которых по меньшей мере одна размерность имеет длину в 32 выборки. В этом первом варианте осуществления, все блоки размера 16×16 или меньше оценивают следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-8 вертикально
- DCT-8 горизонтально и DST-7 вертикально
[0061] Для блоков размера 32xN или Nx32 в первом варианте осуществления, где N может быть равным 4, 8, 16 или 32, оцениваются следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-2 вертикально
- DCT-2 горизонтально и DST-7 вертикально
[0062] Декодер может определять корректную комбинацию преобразований на основе флагов, полученных синтаксическим анализом, и размера блока. Если блок имеет размер 16×16 или меньше, декодированные элементы разрешения могут указывать следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-8 вертикально
- DCT-8 горизонтально и DST-7 вертикально
[0063] Если блок имеет размер 32xN или Nx32 в первом варианте осуществления, где N может быть равным 4, 8, 16 или 32 (т.е. первый критерий по фиг. 9 удовлетворяется, когда кодированный блок имеет размер формы 32xN или Nx32, где N может предполагать значения 4, 8, 16 или 32), следующие комбинации могут указываться:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-2 вертикально
- DCT-2 горизонтально и DST-7 вертикально
[0064] Таблица 1 показывает случай, когда DCT-2 и DCT-8 используются в первом варианте осуществления:
Ширина блока
4
8
16
32
Высота блока
4
DCT-8
DCT-8
DCT-8
DCT-2
8
DCT-8
DCT-8
DCT-8
DCT-2
16
DCT-8
DCT-8
DCT-8
DCT-2
32
DCT-2
DCT-2
DCT-2
DCT-2
Табл. 1
[0065] Во втором варианте осуществления, изменение 1 вносится для всех размеров блоков, при которых инструментальное MTS-средство разрешается, и изменение 2 вносится для всех блоков размера 16×32, 32×16 или 32×32. В этом варианте осуществления, все блоки размера 16×16 или меньше, 4×32, 8×32, 32×4 и 32×8 оценивают следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-8 вертикально
- DCT-8 горизонтально и DST-7 вертикально
[0066] Для блоков размера 32×16, 16×32 или 32×32 во втором варианте осуществления, оцениваются следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-2 вертикально
- DCT-2 горизонтально и DST-7 вертикально
[0067] Декодер имеет возможность определять корректную комбинацию преобразований на основе флагов, полученных синтаксическим анализом, и размера блока. Если блок имеет размер 16×16 или меньше, 4×32, 8×32, 32×4 или 32×8, декодированные элементы разрешения могут указывать следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-8 вертикально
- DCT-8 горизонтально и DST-7 вертикально
[0068] Если блок имеет размер 32×16, 16×32 или 32×32 во втором варианте осуществления (т.е. первый критерий по фиг. 9 удовлетворяется, когда кодированный блок имеет размер формы 32×32 или 32×16 или 16×32), следующие комбинации могут указываться:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-2 вертикально
- DCT-2 горизонтально и DST-7 вертикально
[0069] Таблица 2 показывает случай, когда DCT-2 и DCT-8 используются во втором варианте осуществления:
Ширина блока
4
8
16
32
Высота блока
4
DCT-8
DCT-8
DCT-8
DCT-8
8
DCT-8
DCT-8
DCT-8
DCT-8
16
DCT-8
DCT-8
DCT-8
DCT-2
32
DCT-8
DCT-8
DCT-2
DCT-2
Табл. 2
[0070] В третьем варианте осуществления, изменения 1, 3 и 4 вносятся для всех размеров блоков. Если шаг вправо на фиг. 5 кодируется как "1", а шаг влево кодируется как "0", комбинации должны кодироваться следующим образом:
Горизонтальное преобразование
Вертикальное преобразование
mts_cu_flag
mts_dst_flag
mts_tu_flag
DCT-2
DCT-2
0
DST-7
DST-7
1
0
DST-7
DCT-X
1
1
0
DCT-X
DST-7
1
1
1
Табл. 3
[0071] Декодер должен посредством синтаксического анализа получать флаги и определять комбинацию преобразований на основе декодированных элементов разрешения. Относительно фиг. 8, mts_cu_flag может представлять собой первый флаг, mts_dst_flag может представлять собой второй флаг, и mts_tu_flag может представлять собой третий флаг.
mts_cu_flag
mts_dst_flag
mts_tu_flag
Горизонтальное преобразование
Вертикальное преобразование
0
DCT-2
DCT-2
1
0
DST-7
DST-7
1
1
0
DST-7
DCT-X
1
1
1
DCT-X
DST-7
Табл. 4
[0072] В наборе вариантов осуществления, изменения 1, 3, 4 и 5 вносятся для всех размеров блоков. В качестве примера, более предпочтительная комбинация, описанная в изменении 5, может помечаться посредством задания mts_tu_flag равным "1", и менее предпочтительная комбинация, описанная в изменении 5, может помечаться посредством задания mts_tu_flag равным "0". Фиг. 10 иллюстрирует этот вариант осуществления. Обращаясь к фиг. 10, таблица 4 может использоваться посредством декодера для того, чтобы определять комбинацию преобразований, которую следует использовать. На этапе 1001, декодер получает посредством синтаксического анализа первый флаг, чтобы определить, равен ли первый флаг первому значению или второму значению. На этапе 1003, в ответ на то, что первый флаг равен первому значению, первое преобразование выбирается для декодирования кодированного блока как в вертикальном направлении, так и в горизонтальном направлении. На этапе 1005, в ответ на то, что первый флаг равен второму значению, посредством синтаксического анализа получают второй флаг, чтобы определить, равен ли второй флаг первому значению или второму значению. На этапе 1007, в ответ на то, что второй флаг равен первому значению, третье преобразование выбирается для декодирования кодированного блока как в вертикальном направлении, так и в горизонтальном направлении. На этапе 1009, в ответ на то, что второй флаг равен второму значению, посредством синтаксического анализа получают третий флаг, чтобы определить, равен ли третий флаг первому значению или второму значению. На этапе 1011, в ответ на то, что третий флаг равен первому значению, более предпочтительная комбинация преобразований выбирается для декодирования кодированного блока. На этапе 1013, в ответ на то, что третий флаг равен второму значению, менее предпочтительная комбинация преобразований выбирается для декодирования кодированного блока.
[0073] В пятом варианте осуществления, который представляет собой один из набора вариантов осуществления, если блок использует внутреннее (intra) прогнозирование, комбинация использования DST-7 горизонтально и DCT-X вертикально считается более предпочтительной, если внутреннее направление является более близким к горизонтальному, чем к вертикальному. Одновременно, если внутреннее направление является более близким к вертикальному, чем к горизонтальному, комбинация использования DCT-X горизонтально и DST-7 вертикально считается более предпочтительной. Таким образом, декодер должен определять комбинацию на основе внутреннего направления блока.
[0074] Если внутреннее направление, например, является чисто горизонтальным и декодер считывает mts_tu_flag в качестве "1", он должен использовать комбинацию преобразований DST-7 горизонтально и DCT-X вертикально. Если флаг считывается в качестве "0", то декодер должен использовать комбинацию преобразований DCT-X горизонтально и DST-7 вертикально.
[0075] Если внутреннее направление, например, является чисто вертикальным и декодер считывает mts_tu_flag в качестве "1", он должен использовать комбинацию преобразований DCT-X горизонтально и DST-7 вертикально. Если флаг считывается в качестве "0", то декодер должен использовать комбинацию преобразований DST-7 горизонтально и DCT-X вертикально.
[0076] В шестом варианте осуществления, который представляет собой один из набора вариантов осуществления, если блок использует взаимное (inter) прогнозирование, комбинация использования DST-7 горизонтально и DCT-X вертикально считается более вероятной, если блок имеет большую ширину, чем высоту. Если блок имеет большую высоту, чем ширину, комбинация использования DCT-X горизонтально и DST-7 вертикально считается более вероятной.
[0077] Если блок имеет, например, размер дискретных отсчетов (выборок) 16×4 и декодер считывает mts_tu_flag в качестве "1", он использует комбинацию преобразований DST-7 горизонтально и DCT-X вертикально. Если флаг считывается в качестве "0", то декодер должен использовать комбинацию преобразований DCT-X горизонтально и DST-7 вертикально.
[0078] Если блок имеет, например, размер выборок 4×16 и декодер считывает mts_tu_flag в качестве "1", он использует комбинацию преобразований DCT-X горизонтально и DST-7 вертикально. Если флаг считывается в качестве "0", то декодер должен использовать комбинацию преобразований DST-7 горизонтально и DCT-X вертикально.
[0079] В вышеприведенных вариантах осуществления, направление прогнозирования в 45 градусов является в равной степени близким к вертикальному и к горизонтальному. Следовательно, декодер и кодер должны согласовывать правило разрешения спорных ситуаций, чтобы трактовать направления в 45 градусов идентичным способом. В наборе вышеприведенных вариантов осуществления, это обрабатывается посредством трактовки направлений в 45 градусов как более вертикальных, чем горизонтальных. В другом варианте осуществления, может быть преимущественным использовать другое правило разрешения спорных ситуаций, к примеру, трактовку направлений в 45 градусов как горизонтальных. Другая возможность заключается в изменении согласно другому значению в градусах, чем направления в 45 градусов. В качестве примера, может быть преимущественным трактовать не только направления в 45 градусов как вертикальные, но также и трактовать, например, направления в 43 градуса как вертикальные, хотя математически они являются более близкими к горизонтальному направлению. В общем, в силу этого можно использовать любой угол в правиле разрешения спорных ситуаций, а не только диагональные направления.
[0080] Другой случай, в котором должно задаваться правило разрешения спорных ситуаций, представляет собой режимы ненаправленного внутреннего прогнозирования (плоскими или DC-). В наборе вышеприведенных вариантов осуществления, эти прогнозирования трактуются как более горизонтальные, чем вертикальные. В немного отличающемся варианте осуществления, может быть преимущественным трактовать их как более вертикальные, чем горизонтальные. Например, в реализации, внутренние режимы 0-34 трактуются более близкие к горизонтальным, и внутренние режимы 35-66 трактуются более близкие к вертикальным.
[0081] В седьмом варианте осуществления, изменение 6 используется для внутренне кодированных блоков. Выбор того, какой контекст следует использовать для кодирования и декодирования mts_cu_flag, выполняется на основе более длинной стороны блока и внутреннего направления. Внутренние направления разделяются на две группы, одну, в которой использование DCT-2 горизонтально и вертикально является более предпочтительным, и одну, в которой использование DCT-2 горизонтально и вертикально является менее предпочтительным. Эти группы могут быть идентичными для разных размеров блоков. Использование DCT-2 как горизонтально, так и вертикально, например, может быть более предпочтительным, если внутренний режим является близким к горизонтальному или вертикальному. В идентичном примере, комбинация должна быть менее предпочтительной, если внутреннее направление является близким к диагональному.
[0082] Обращаясь к фиг. 11, на этапе 1101, декодер определяет то, имеет либо нет блок размер 32xN или Nx32, где N может быть равным 4, 8, 16 или 32. На этапе 1103, в ответ то, что блок имеет один из размера 32xN и Nx32, и внутреннее направление является близким к горизонтальному или близким к вертикальному (т.е. оно проходит один из теста на горизонтальную близость или теста на вертикальную близость, как определено на этапе 1103), например, если оно является чисто горизонтальным, то один контекст должен выбираться, например, с первым идентификатором 0 на этапе 1105.
[0083] В ответ то, что блок имеет размер 32xN или Nx32, где N может быть равным 4, 8, 16 или 32, и внутреннее направление является близким к диагональному (т.е. оно не проходит один из теста на горизонтальную близость или теста на вертикальную близость, как определено на этапе 1103), например, если оно является чисто диагональным, то другой контекст должен выбираться, например, со вторым идентификатором 1 на этапе 1107.
[0084] На этапе 1108, декодер определяет то, имеет либо нет блок размер 16xN или Nx16, где N может быть равным 4, 8 или 16. На этапе 1111, в ответ то, что блок имеет один из размера 16xN и Nx16, и внутреннее направление является близким к горизонтальному или близким к вертикальному (т.е. оно проходит один из теста на горизонтальную близость или теста на вертикальную близость, как определено на этапе 1111), например, если оно является чисто вертикальным, то другой контекст должен выбираться, например, с третьим идентификатором 2 на этапе 1113.
[0085] В ответ то, что блок имеет размер 16xN или Nx16, где N может быть равным 4, 8 или 16, и внутреннее направление является близким к диагональному (т.е. оно не проходит один из теста на горизонтальную близость или теста на вертикальную близость, как определено на этапе 1111), например, если оно является чисто диагональным, то другой контекст должен выбираться, например, с четвертым идентификатором 3 на этапе 1115.
[0086] На этапе 1117 декодер определяет то, имеет или нет блок размер 8×8, 8×4, 4×8 или 4×4. На этапе 1119, в ответ то, что блок имеет один из размера 8×8, 8×4, 4×8 и 4×4, и внутреннее направление является близким к горизонтальному или близким к вертикальному (т.е. оно проходит один из теста на горизонтальную близость или теста на вертикальную близость, как определено на этапе 1119), например, если оно является чисто горизонтальным, то другой контекст должен выбираться, например, с пятым идентификатором 4 на этапе 1121.
[0087] В ответ то, что блок имеет размер 8×8, 8×4, 4×8 или 4×4, и внутреннее направление является близким к диагональному (т.е. оно не проходит один из теста на горизонтальную близость или теста на вертикальную близость, как определено на этапе 1119), например, если оно является чисто диагональным, то другой контекст должен выбираться, например, с шестым идентификатором 5 на этапе 1123.
[0088] Это может обобщаться в следующей таблице:
Тип внутреннего направления
Более близкое к горизонтальному или вертикальному
Более близкое к диагональному
Размеры блоков
32xN или Nx32
Идентификатор 0
Идентификатор 1
16xN или Nx16
Идентификатор 2
Идентификатор 3
4xN, 8xN, Nx4 или Nx8
Идентификатор 4
Идентификатор 5
Табл. 5
[0089] Как описано в предыдущем варианте осуществления, набор правил разрешения спорных ситуаций должен задаваться для кодера и декодера для случаев, в которых направление прогнозирования является одинаково близким к горизонтальному и вертикальному. Правила разрешения спорных ситуаций должны также задаваться для режимов ненаправленного внутреннего прогнозирования (плоских или DC-). Например, в одной реализации, внутренние режимы 10-22 могут считаться близкими к горизонтальным и могут трактоваться как горизонтальные, внутренние режимы 46-57 могут считаться близкими к вертикальным и могут трактоваться как вертикальные, и оставшиеся внутренние режимы 0-9, 23-45 и 58-66 могут считаться близкими к диагональным и трактоваться как диагональные.
[0090] В восьмом варианте осуществления, изменение 6 используется для взаимно кодированных блоков. Выбор того, какой контекст следует использовать для кодирования и декодирования mts_cu_flag, выполняется на основе размера и формы блока. Например, шесть контекстов могут выбираться следующим образом:
a) Если блок имеет размер 4×32 или 32×4 в восьмом варианте осуществления, один контекст используется, например, с идентификатором 0.
b) Если блок имеет размер 4×16, 8×32, 32×8 или 16×4 в восьмом варианте осуществления, другой контекст используется, например, с идентификатором 1.
c) Если блок имеет размер 4×8 или 8×4 в восьмом варианте осуществления, другой контекст используется, например, с идентификатором 2.
d) Если блок имеет размер 8×16, 16×32, 32×16 или 16×8 в восьмом варианте осуществления, другой контекст используется, например, с идентификатором 3.
e) Если блок имеет размер 16×16 или 32×32 в восьмом варианте осуществления, другой контекст используется, например, с идентификатором 4.
f) Если блок имеет размер 8×8 или 4×4 в восьмом варианте осуществления, другой контекст используется, например, с идентификатором 5.
[0091] Восьмой вариант осуществления может обобщаться в таблице 6:
Ширина блока
4
8
16
32
Высота блока
4
Идентификатор 5
Идентификатор 2
Идентификатор 1
Идентификатор 0
8
Идентификатор 2
Идентификатор 5
Идентификатор 3
Идентификатор 1
16
Идентификатор 1
Идентификатор 3
Идентификатор 4
Идентификатор 3
32
Идентификатор 0
Идентификатор 1
Идентификатор 3
Идентификатор 4
Табл. 6
[0092] В девятом варианте осуществления, изменение 1 вносится для всех размеров блоков, при которых инструментальное MTS-средство разрешается, и изменение 2 вносится для всех блоков, для которых по меньшей мере одна размерность имеет длину в 16 или 32 выборки. В этом варианте осуществления, все блоки размера 8×8 или меньше оценивают следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-8 вертикально
- DCT-8 горизонтально и DST-7 вертикально
[0093] Для блоков размера 16xN, Nx16, 32xN или Nx32 в девятом варианте осуществления, где N может быть равным 4, 8, 16 или 32, оцениваются следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-2 вертикально
- DCT-2 горизонтально и DST-7 вертикально
[0094] Декодер может определять корректную комбинацию преобразований на основе флагов, полученных синтаксическим анализом, и размера блока. Если блок имеет размер 8×8 или меньше, декодированные элементы разрешения могут указывать следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-8 вертикально
- DCT-8 горизонтально и DST-7 вертикально
[0095] Если блок имеет размер 16xN, Nx16, 32xN или Nx32 в девятом варианте осуществления, где N может быть равным 4, 8, 16 или 32 (т.е. первый критерий по фиг. 9 удовлетворяется, когда кодированный блок имеет размер формы 16xN, Nx16, 32xN или Nx32, где N может предполагать значения 4, 8, 16 или 32), следующие комбинации могут указываться:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-2 вертикально
- DCT-2 горизонтально и DST-7 вертикально
[0096] Таблица 7 показывает случай, когда DCT-2 и DCT-8 используются в девятом варианте осуществления:
Ширина блока
4
8
16
32
Высота блока
4
DCT-8
DCT-8
DCT-2
DCT-2
8
DCT-8
DCT-8
DCT-2
DCT-2
16
DCT-2
DCT-2
DCT-2
DCT-2
32
DCT-2
DCT-2
DCT-2
DCT-2
Табл. 7
[0097] В десятом варианте осуществления, изменение 1 вносится для всех размеров блоков, при которых инструментальное MTS-средство разрешается, и изменение 2 вносится для всех блоков, для которых по меньшей мере одна размерность имеет длину в 32 выборки или в 4 выборки. В этом варианте осуществления, все блоки размера 8×8, 8×16, 16×8 или 16×16 оценивают следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-8 вертикально
- DCT-8 горизонтально и DST-7 вертикально
[0098] Для блоков размера 4xN, Nx4, 32xN или Nx32 в десятом варианте осуществления, где N может быть равным 4, 8, 16 или 32, оцениваются следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-2 вертикально
- DCT-2 горизонтально и DST-7 вертикально
[0099] Декодер может определять корректную комбинацию преобразований на основе флагов, полученных синтаксическим анализом, и размера блока. Если блок имеет размер 8×8, 8×16, 16×8 или 16×16, декодированные элементы разрешения могут указывать следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-8 вертикально
- DCT-8 горизонтально и DST-7 вертикально
[00100] Если блок имеет размер 4xN, Nx4, 32xN или Nx32 в десятом варианте осуществления, где N может быть равным 4, 8, 16 или 32 (т.е. первый критерий по фиг. 9 удовлетворяется, когда кодированный блок имеет размер формы 4xN, Nx4, 32xN или Nx32, где N может предполагать значения 4, 8, 16 или 32), следующие комбинации могут указываться:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-2 вертикально
- DCT-2 горизонтально и DST-7 вертикально
[00101] Таблица 8 показывает случай, когда DCT-2 и DCT-8 используются в десятом варианте осуществления:
Ширина блока
4
8
16
32
Высота блока
4
DCT-2
DCT-2
DCT-2
DCT-2
8
DCT-2
DCT-8
DCT-8
DCT-2
16
DCT-2
DCT-8
DCT-8
DCT-2
32
DCT-2
DCT-2
DCT-2
DCT-2
Табл. 8
[00102] В одиннадцатом варианте осуществления, изменение 1 вносится для всех размеров блоков, при которых инструментальное MTS-средство разрешается, и изменение 2 вносится для всех блоков, для которых по меньшей мере одна размерность имеет длину в 32 выборки, или блок имеет размер выборок 4×4. В этом варианте осуществления, все блоки размера 16×16 или меньше, но больше 4×4 оценивают следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-8 вертикально
- DCT-8 горизонтально и DST-7 вертикально
[00103] Для блоков размера 4×4, 32xN или Nx32 в одиннадцатом варианте осуществления, где N может быть равным 4, 8, 16 или 32, оцениваются следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-2 вертикально
- DCT-2 горизонтально и DST-7 вертикально
[00104] Декодер может определять корректную комбинацию преобразований на основе флагов, полученных синтаксическим анализом, и размера блока. Если блок имеет размер 16×16 или меньше, но больше 4×4, декодированные элементы разрешения могут указывать следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-8 вертикально
- DCT-8 горизонтально и DST-7 вертикально
[00105] Если блок имеет размер 4×4, 32xN или Nx32 в одиннадцатом варианте осуществления, где N может быть равным 4, 8, 16 или 32 (т.е. первый критерий по фиг. 9 удовлетворяется, когда кодированный блок имеет размер формы 4×4, 32xN или Nx32, где N может предполагать значения 4, 8, 16 или 32), следующие комбинации могут указываться:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-2 вертикально
- DCT-2 горизонтально и DST-7 вертикально
[00106] Таблица 9 показывает случай, когда DCT-2 и DCT-8 используются в одиннадцатом варианте осуществления:
Ширина блока
4
8
16
32
Высота блока
4
DCT-2
DCT-8
DCT-8
DCT-2
8
DCT-8
DCT-8
DCT-8
DCT-2
16
DCT-8
DCT-8
DCT-8
DCT-2
32
DCT-2
DCT-2
DCT-2
DCT-2
Табл. 9
[00107] В двенадцатом варианте осуществления, изменения 1 и 2 вносятся для всех размеров блоков, при которых разрешается инструментальное MTS-средство. В этом варианте осуществления, все блоки оценивают следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-2 вертикально
- DCT-2 горизонтально и DST-7 вертикально
[00108] Декодер может определять корректную комбинацию преобразований на основе флагов, полученных синтаксическим анализом. Декодированные элементы разрешения могут указывать следующие комбинации:
- DCT-2 горизонтально и DCT-2 вертикально
- DST-7 горизонтально и DST-7 вертикально
- DST-7 горизонтально и DCT-2 вертикально
- DCT-2 горизонтально и DST-7 вертикально
[00109] В дополнительном наборе вариантов осуществления, изменение 7 включается. Новый флаг, называемый "mts_same_flag", сигнализируется, чтобы указывать то, использует или нет блок идентичное преобразование в горизонтальном и вертикальном направлении. В одном варианте осуществления, если флаг имеет значение 1, блок использует идентичные преобразования в обоих направлениях, тогда как, если флаг имеет значение 0, используются два разных преобразования.
[00110] В варианте осуществления, mts_same_flag указывает то, что блок использует идентичное преобразование в горизонтальном и вертикальном направлении. Дополнительный флаг mts_tu_idx сообщается, чтобы указывать то, следует ли использовать DCT-8 или DST-7 в обоих направлениях либо нет.
[00111] В другом варианте осуществления, mts_same_flag указывает то, что блок использует разные преобразования в горизонтальном и вертикальном направлении. Дополнительный флаг mts_tu_idx сообщается, чтобы указывать то, следует ли использовать DCT-8 в горизонтальном направлении и DST-7 в вертикальном направлении либо DST-7 в горизонтальном направлении и DCT-8 в вертикальном направлении.
[00112] Обработка в декодере проводится аналогично. Во-первых, mts_same_flag получается путем синтаксического анализа посредством декодера, далее выполняется получение mts_tu_idx посредством синтаксического анализа, чтобы определить корректную комбинацию преобразований, которую следует использовать.
[00113] В другом варианте осуществления, mts_same_flag получается путем синтаксического анализа посредством декодера, причем он указывает то, что идентичное преобразование должно использоваться в горизонтальном и вертикальном направлении. Впоследствии, mts_tu_idx получается путем синтаксического анализа посредством декодера, причем он указывает то, следует ли использовать DST-7 или DCT-8 в обоих направлениях либо нет.
[00114] В другом варианте осуществления, mts_same_flag получается путем синтаксического анализа посредством декодера, причем он указывает то, что два разных преобразования должны использоваться для текущего блока. mts_tu_idx получается путем синтаксического анализа посредством декодера, чтобы определить, следует ли использовать DCT-8 в горизонтальном и DST-7 в вертикальном направлении, либо DST-7 в горизонтальном и DCT-8 в вертикальном направлении.
[00115] Таким образом, деактивация одной из комбинации преобразований, которая обеспечивает изменение CABAC-кодирования, посредством замены двух существующих флагов, как описано в данном документе, двумя новыми флагами. Другой ключевой аспект состоит в том, чтобы заменять одно преобразование в определенных случаях посредством другого преобразования.
Ссылочные материалы
[1] F. Bossen, J. Boyce, X. Li, V. Seregin, K. Sühring (редакторы): "JVET common test conditions and software reference configurations for SDR video", JVET-L1010, Макао, октябрь 2018 года.
[2] G. J. Sullivan, J.-R. Ohm: "Meeting Report of the 11th JVET Meeting, (Ljubljana, 10-18 July 2018)", раздел 6.6, JVET-K1000, Любляна, июль 2018 года.