МЕЖКОМПОНЕНТНАЯ АДАПТИВНАЯ КОНТУРНАЯ ФИЛЬТРАЦИЯ ДЛЯ КОДИРОВАНИЯ ВИДЕО Российский патент 2024 года по МПК H04N19/117 

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

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

Варианты осуществления настоящей заявки (раскрытия) обычно относятся к области обработки изображений и, более конкретно, к межкомпонентному адаптивному контурному фильтру (CC-ALF) в качестве внутриконтурного фильтра или в качестве постконтурного фильтра и синтаксису высокого уровня для межкомпонентного ALF (CCALF).

УРОВЕНЬ ТЕХНИКИ

Кодирование изображения (кодирование и декодирование) используется в широком спектре приложений для работы с цифровыми изображениями, например, в широковещательном цифровом телевидении, при передаче видео через Интернет и мобильные сети, в приложениях для разговоров в реальном времени, таких как видеочат, видеоконференции, DVD и Blu-ray диски, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.

С момента разработки блочного гибридного подхода к кодированию видео в стандарте H.261 в 1990 году были разработаны новые методики и инструменты кодирования видео, которые легли в основу новых стандартов кодирования видео. Одной из целей большинства стандартов кодирования видео было достижение снижения скорости передачи по сравнению с его предшественником без ущерба для качества изображения. Другие стандарты кодирования видео включают видео MPEG-1, видео MPEG-2, ITU-T H.262/MPEG-2, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, улучшенное кодирование видео (AVC), ITU-T H.265, высокоэффективное кодирование видео (HEVC), ITU-T H.266/универсальное кодирование видео (VVC) и расширения, например масштабируемое и/или трехмерное (3D) расширения этих стандартов.

Схемы кодирования изображений на основе блоков имеют общее то, что вдоль краев блоков могут появляться краевые артефакты. Эти артефакты возникают из-за независимого кодирования блоков кодирования. Эти краевые артефакты часто легко видны пользователю. Целью блочного кодирования изображений является уменьшение краевых артефактов ниже порогового значения видимости. Это делается путем выполнения контурной фильтрации, такой как фильтр устранения блочности, SAO и адаптивный контурный фильтр (ALF). Порядок процесса фильтрации следующий: фильтр устранения блочности, затем SAO и затем ALF. Кроме того, дополнительно используется межкомпонентный адаптивный контурный фильтр (CC-ALF).

Специально для межкомпонентного адаптивного контурного фильтра (CC-ALF) значения выборок яркости используются для уточнения каждого компонента цветности. Процесс должен выполняться как в компонентах Cb, так и в компонентах Cr, межкомпонентная адаптивная контурная фильтрация может быть сложной в вычислительном отношении и, следовательно, может добавить дополнительную задержку конвейерной обработки, особенно для аппаратных реализаций.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

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

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

Варианты осуществления настоящей заявки обеспечивают устройства и способы кодирования и декодирования в соответствии с независимыми пунктами формулы изобретения, таким образом, сложность межкомпонентного ALF может быть уменьшена, а производительность межкомпонентного адаптивного контурного фильтра (CC-ALF) как встроенного контурный фильтр или постконтурный фильтр, соответственно, можно улучшить.

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

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

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

выполнение процесса фильтрации (такого как процесс межкомпонентной фильтрации) путем применения межкомпонентного адаптивного контурного фильтра (CC-ALF);

формирование битового потока, включающего в себя множество синтаксических элементов, относящихся к CC-ALF (таких как M синтаксических элементов, относящихся к CC-ALF, и M>=1, а M является целым числом), при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, указывает информацию, относящуюся к CC-ALF,

при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, сигнализируется на любом одном или более из уровня набора параметров видео (VPS), уровня набора параметров последовательности (SPS), уровня набора параметров изображения (PPS), заголовка изображения, заголовка слайса или заголовка тайла; или

при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, сигнализируется на уровне набора параметров последовательности (SPS) и/или в заголовке изображения.

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

Согласно второму аспекту раскрытие относится к способу декодирования, реализуемому устройством декодирования, содержащему:

синтаксический анализ одного или более синтаксических элементов из битового потока видеосигнала, при этом синтаксические элементы указывают информацию, относящуюся к межкомпонентному адаптивному контурному фильтру (CC-ALF), при этом синтаксические элементы получаются из любого одного или более из уровня набора параметров видео (VPS), уровня набора параметров последовательности (SPS), уровня набора параметров изображения (PPS), заголовка изображения, заголовка слайса или заголовка тайла битового потока; или при этом синтаксические элементы получаются из уровня набора параметров последовательности (SPS) и/или заголовка изображения; и

выполнение процесса фильтрации (такого как процесс межкомпонентной фильтрации) путем применения CC-ALF на основе синтаксических элементов или на основе значений синтаксических элементов.

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

Согласно третьему аспекту изобретение относится к устройству для декодирования видеоданных. Устройство содержит: схему обработки для осуществления способа согласно первому аспекту раскрытия.

Согласно четвертому аспекту изобретение относится к устройству для кодирования видеоданных. Устройство содержит: схему обработки для осуществления способа согласно второму аспекту изобретения.

Способ согласно первому аспекту настоящего раскрытия может быть осуществлен устройством согласно третьему аспекту раскрытия. Дополнительные признаки и формы реализации способа согласно третьему аспекту раскрытия соответствуют признакам и формам реализации устройства согласно первому аспекту раскрытия.

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

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

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

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

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

Настоящее раскрытие обеспечивает способ кодирования, реализуемый устройством кодирования, при этом способ содержит:

применение межкомпонентного адаптивного контурного фильтра CC-ALF для уточнения компонента цветности;

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

при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, сигнализируется на любом одном или более из уровня набора параметров последовательности (SPS), заголовка изображения или заголовка слайса;

при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит первый синтаксический элемент, который указывает, включен или нет адаптивный контурный фильтр (ALF), содержащий межкомпонентный адаптивный контурный фильтр, на уровне последовательности, и первый синтаксический элемент сигнализируется на уровне SPS, и второй синтаксический элемент, который указывает, включен или нет межкомпонентный адаптивный контурный фильтр на уровне последовательности, и второй синтаксический элемент сигнализируется на уровне SPS.

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

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

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

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

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

Этот третий синтаксический элемент также может упоминаться как pic_ccalf_enabled_flag. В этом варианте осуществления релевантная информация CC-ALF, относящаяся к полному изображению, может передаваться при сохранении небольшого размера битового потока. Например, Слайс 1.. Слайс N совместно использует одну и ту же информацию CCALF, поэтому общая информация может быть напрямую унаследована от заголовка изображения вместо того, чтобы каждый заголовок слайса передавал их избыточно.

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

Четвертый синтаксический элемент может, например, обозначаться как pic_cross_component_alf_cb_enabled_flag. Однако это не является обязательным. Четвертый синтаксический элемент может эффективно сигнализировать CC-ALF для цветового компонента Cb, сохраняя при этом небольшим количество избыточной информации, например, в заголовке слайса.

Кроме того, может быть предусмотрено, что если четвертый синтаксический элемент имеет значение 1, это указывает, что CC-ALF для цветового компонента Cb включен для текущего изображения, и/или, если четвертый синтаксический элемент имеет значение 0, это указывает, что CC-ALF для цветового компонента Cb отключен для текущего изображения.

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

Кроме того, может быть предусмотрено, что упомянутое множество синтаксических элементов, связанных с CC-ALF, содержит седьмой синтаксический элемент, когда второй синтаксический элемент указывает, что CC-ALF включен, при этом седьмой синтаксический элемент сигнализируется в заголовке изображения, и седьмой синтаксический элемент указывает, включен ли CC-ALF для цветового компонента Cr для текущего изображения видеопоследовательности, связанной с битовым потоком. Этот синтаксический элемент может, например, обозначаться как pic_cross_component_alf_cr_enabled_flag без ограничения настоящего раскрытия. С помощью этого синтаксического элемента можно надежно сигнализировать о включении CC-ALF для цветовых компонентов Cr.

Кроме того, может быть предусмотрено, что, если седьмой синтаксический элемент имеет значение 1, это указывает, что CC-ALF для цветового компонента Cr включен для текущего изображения, и/или, если седьмой синтаксический элемент имеет значение 0, это указывает, что CC-ALF для цветового компонента Cr отключен для текущего изображения.

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

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

В дополнительном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит десятый синтаксический элемент, когда второй синтаксический элемент указывает, что CC-ALF включен, при этом десятый синтаксический элемент сигнализируется в заголовке слайса, и десятый синтаксический элемент указывает, включен ли CCALF для цветового компонента Cb для текущего слайса текущего изображения видеопоследовательности, связанной с битовым потоком. Этот синтаксический элемент может, без намерения ограничить настоящее раскрытие, называться slice_cross_component_alf_cb_enabled_flag. Таким образом, может быть обеспечена эффективная сигнализация того, должен ли CC-ALF включаться для цветовых компонентов Cb.

Кроме того, может быть предусмотрено, что если десятый синтаксический элемент имеет значение 1, это указывает, что CCALF для цветового компонента Cb включен для текущего слайса, и/или, если десятый синтаксический элемент имеет значение 0, это указывает, что CCALF для цветового компонента Cb отключен для текущего слайса.

В дополнительном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит одиннадцатый синтаксический элемент, когда десятый синтаксический элемент указывает, что CC-ALF для цветового компонента Cb включен для текущего слайса, при этом десятый синтаксический элемент сигнализируется в заголовок слайса и десятый синтаксический элемент указывает набор параметров, на который ссылается цветовой компонент Cb текущего слайса. Этот синтаксический элемент может быть обозначен как pic_cross_component_alf_cb_aps_id, хотя это не предназначено для ограничения настоящего раскрытия.

В дополнительном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит двенадцатый синтаксический элемент, когда второй синтаксический элемент указывает, что CC-ALF включен, при этом двенадцатый синтаксический элемент сигнализируется в заголовке слайса, и двенадцатый синтаксический элемент указывает, включен ли CCALF для цветового компонента Cr для текущего слайса текущего изображения видеопоследовательности, связанной с битовым потоком. Двенадцатый синтаксический элемент может, например, обозначаться как slice_cross_component_alf_cr_enabled_flag.

В дополнительном варианте осуществления предусмотрено, что, если двенадцатый синтаксический элемент имеет значение 1, это указывает, что CCALF для цветового компонента Cr включен для текущего слайса, и/или, если двенадцатый синтаксический элемент имеет значение 0, это указывает, что CCALF для цветового компонента Cr отключен для текущего слайса.

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

Может быть предусмотрено, что сигнализируется второй синтаксический элемент, если первый синтаксический элемент имеет первое значение, или второй синтаксический элемент сигнализируется условно по меньшей мере на основе значения первого синтаксического элемента. Если ALF не включен (о чем сигнализирует первый синтаксический элемент), CC-ALF также не будет включен. Не предоставляя в этом случае второй синтаксический элемент, можно дополнительно уменьшить размер битового потока.

В одном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит четырнадцатый синтаксический элемент, сигнализируемый на уровне SPS, при этом четырнадцатый синтаксический элемент указывает тип ввода в CC-ALF. Четырнадцатый синтаксический элемент может быть обозначен ChromaArrayType, хотя это не ограничивает настоящее раскрытие.

Более конкретно, второй синтаксический элемент сигнализируется, когда первый синтаксический элемент имеет первое значение, а четырнадцатый синтаксический элемент имеет второе значение. Второе значение может быть любым значением, отличным от определенного значения, которое указывает, что CC-ALF не должен быть включен.

В еще одном конкретном варианте осуществления второй синтаксический элемент сигнализируется, когда первый синтаксический элемент имеет значение, равное 1, а четырнадцатый синтаксический элемент имеет значение, не равное 0.

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

Настоящее раскрытие дополнительно обеспечивает способ декодирования, реализуемый устройством декодирования, при этом способ содержит:

синтаксический анализ множества синтаксических элементов, связанных с межкомпонентным адаптивным контурным фильтром, CC-ALF, из битового потока, при этом упомянутое множество синтаксических элементов, при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, получается из любого одного или более из уровня набора параметров последовательности (SPS), заголовка изображения или заголовка слайса;

при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит первый синтаксический элемент, который указывает, включен или нет адаптивный контурный фильтр (ALF), содержащий межкомпонентный адаптивный контурный фильтр, на уровне последовательности, и первый синтаксический элемент сигнализируется на уровне SPS, и второй синтаксический элемент, который указывает, включен или нет межкомпонентный адаптивный контурный фильтр на уровне последовательности, и второй синтаксический элемент сигнализируется на уровне SPS;

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

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

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

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

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

В дополнительном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит четвертый синтаксический элемент, когда получен второй синтаксический элемент, указывающий, что CC-ALF включен, при этом четвертый синтаксический элемент получается из заголовка изображения и четвертый синтаксический элемент указывает, включен ли CC-ALF для цветового компонента Cb для текущего изображения видеопоследовательности. Четвертый синтаксический элемент может, например, обозначаться как pic_cross_component_alf_cb_enabled_flag. Однако это не является обязательным. Четвертый синтаксический элемент может эффективно заставить декодер включать CC-ALF для цветового компонента Cb, сохраняя при этом небольшим количество избыточной информации, например, в заголовке слайса.

В дополнительном варианте осуществления может быть предусмотрено, что если четвертый синтаксический элемент имеет значение 1, это указывает, что CC-ALF для цветового компонента Cb включен для текущего изображения, и/или, если четвертый синтаксический элемент имеет значение 0, это указывает, что CC-ALF для цветового компонента Cb отключен для текущего изображения.

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

В дополнительном варианте осуществления упомянутое множество синтаксических элементов, связанных с CC-ALF, содержит седьмой синтаксический элемент, когда получен второй синтаксический элемент, указывающий, что CC-ALF включен, при этом седьмой синтаксический элемент получается из заголовка изображения и седьмой синтаксический элемент указывает, включен ли CC-ALF для цветового компонента Cr для текущего изображения видеопоследовательности, связанной с битовым потоком. Этот синтаксический элемент может, например, обозначаться как pic_cross_component_alf_cr_enabled_flag без ограничения настоящего раскрытия. С помощью этого синтаксического элемента CC-ALF декодер может надежно определить, включен ли CC-ALF для цветовых компонентов Cr.

Может быть предусмотрено, что если седьмой синтаксический элемент имеет значение 1, это указывает, что CC-ALF для цветового компонента Cr включен для текущего изображения, и/или, если седьмой синтаксический элемент имеет значение 0, это указывает, что CC-ALF для цветового компонента Cr отключен для текущего изображения.

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

Кроме того, может быть предусмотрено, что четвертый синтаксический элемент, пятый синтаксический элемент, шестой синтаксический элемент, седьмой синтаксический элемент, восьмой синтаксический элемент и девятый синтаксический элемент получаются, когда получен третий синтаксический элемент, указывающий, что CC-ALF включен для текущего изображения видеопоследовательности, связанной с битовым потоком.

В одном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит десятый синтаксический элемент, когда получен второй синтаксический элемент, указывающий, что CC-ALF включен, при этом десятый синтаксический элемент получается из заголовка слайса, и десятый синтаксический элемент указывает, включен ли CCALF для цветового компонента Cb для текущего слайса текущего изображения видеопоследовательности, связанной с битовым потоком. Этот синтаксический элемент может, без намерения ограничить настоящее раскрытие, называться slice_cross_component_alf_cb_enabled_flag. Таким образом, декодер может определить, должен ли быть включен CC-ALF для цветовых компонентов Cb.

Кроме того, может быть предусмотрено, что если десятый синтаксический элемент имеет значение 1, это указывает, что CCALF для цветового компонента Cb включен для текущего слайса, и/или, если десятый синтаксический элемент имеет значение 0, это указывает, что CCALF для цветового компонента Cb отключен для текущего слайса.

В одном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит одиннадцатый синтаксический элемент, когда получен десятый синтаксический элемент, указывающий, что CC-ALF для цветового компонента Cb включен для текущего слайса, при этом десятый синтаксический элемент получается из заголовка слайса, и десятый синтаксический элемент указывает набор параметров, на который ссылается цветовой компонент Cb текущего слайса. Этот синтаксический элемент может быть обозначен как pic_cross_component_alf_cb_aps_id, хотя это не предназначено для ограничения настоящего раскрытия.

Может быть предусмотрено, что упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит двенадцатый синтаксический элемент, когда получен второй синтаксический элемент, указывающий, что CC-ALF включен, при этом двенадцатый синтаксический элемент получается из заголовка слайса и двенадцатый синтаксический элемент указывает, включен ли CCALF для цветового компонента Cr для текущего слайса текущего изображения видеопоследовательности, связанной с битовым потоком. Двенадцатый синтаксический элемент может, например, обозначаться как slice_cross_component_alf_cr_enabled_flag.

В более конкретном варианте осуществления, если двенадцатый синтаксический элемент имеет значение 1, это указывает, что CCALF для цветового компонента Cr включен для текущего слайса, и/или, если двенадцатый синтаксический элемент имеет значение 0, это указывает, что CCALF для цветового компонента Cr отключен для текущего слайса.

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

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

Кроме того, может быть предусмотрено, что упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит четырнадцатый синтаксический элемент, полученный из уровня SPS, при этом четырнадцатый синтаксический элемент указывает тип ввода в CC-ALF. Четырнадцатый синтаксический элемент может быть обозначен ChromaArrayType, хотя это не ограничивает настоящее раскрытие.

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

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

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

Настоящее раскрытие также относится к

устройству для кодирования видеоданных, содержащему:

память видеоданных; и

видеокодер, при этом видеокодер выполнен с возможностью: применения межкомпонентного адаптивного контурного фильтра CC-ALF для уточнения компонента цветности; формировать битовый поток, включающий в себя множество синтаксических элементов, относящихся к CC-ALF, при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, указывают информацию, относящуюся к CC-ALF; при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, сигнализируется на любом одном или более из уровня набора параметров последовательности (SPS), заголовка изображения или заголовка слайса; при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит первый синтаксический элемент, который указывает, включен или нет адаптивный контурный фильтр (ALF), содержащий межкомпонентный адаптивный контурный фильтр, на уровне последовательности, и первый синтаксический элемент сигнализируется на уровне SPS, и второй синтаксический элемент, который указывает, включен или нет межкомпонентный адаптивный контурный фильтр на уровне последовательности, и второй синтаксический элемент сигнализируется на уровне SPS. При этом преимущества упомянутых выше способов кодирования предоставляются кодерам для кодирования, например, видео.

Настоящее раскрытие также относится к

устройству для декодирования видеоданных, содержащему:

память видеоданных; и

видеодекодер, при этом видеодекодер выполнен с возможностью: синтаксического анализа множества синтаксических элементов, связанных с межкомпонентным адаптивным контурным фильтром, CC-ALF, из битового потока, при этом упомянутое множество синтаксических элементов, при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF получен из любого одного или более из уровня набора параметров последовательности (SPS), заголовка изображения или заголовка слайса; при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит первый синтаксический элемент, который указывает, включен или нет адаптивный контурный фильтр (ALF), содержащий межкомпонентный адаптивный контурный фильтр, на уровне последовательности, и первый синтаксический элемент сигнализируется на уровне SPS, и второй синтаксический элемент, который указывает, включен или нет межкомпонентный адаптивный контурный фильтр на уровне последовательности, и второй синтаксический элемент сигнализируется на уровне SPS; и выполнения процесса CC-ALF с использованием по меньшей мере одного из упомянутого множества синтаксических элементов, относящихся к CC-ALF.

При этом реализуются преимущества уменьшенного размера битового потока при надежном декодировании видео.

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

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

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

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

при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, сигнализируются на любом одном или более из уровня набора параметров последовательности (SPS), заголовка изображения или заголовка слайса;

при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит первый синтаксический элемент, который указывает, включен или нет адаптивный контурный фильтр (ALF), содержащий межкомпонентный адаптивный контурный фильтр, на уровне последовательности, и первый синтаксический элемент сигнализируется на уровне SPS, и второй синтаксический элемент, который указывает, включен или нет межкомпонентный адаптивный контурный фильтр на уровне последовательности, и второй синтаксический элемент сигнализируется на уровне SPS.

Битовый поток может быть уменьшен в размере, обеспечивая при этом информацию, которая будет использоваться при декодировании при надежном применении CC-ALF.

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

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

Фиг. 1A является блок-схемой, показывающей пример системы видеокодирования, выполненной с возможностью реализации вариантов осуществления изобретения;

Фиг. 1B является блок-схемой, показывающей другой пример системы видеокодирования, выполненной с возможностью реализации вариантов осуществления изобретения;

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

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

Фиг. 4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;

Фиг. 5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования;

Фиг. 6 включает в себя фиг. 6a, 6b и 6c, где (6a) - размещение CC ALF по отношению к другим контурным фильтрам (6b и 6c) - ромбовидный фильтр;

Фиг. 7 является схемой, иллюстрирующей все заголовки слайсов, которые должны передавать данные CCALF в предшествующем уровне техники;

Фиг. 8 является схемой, иллюстрирующей пример усовершенствованных синтаксических элементов CC-ALF;

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

Фиг. 9B представляет собой схематическое представление, иллюстрирующее совместно расположенные блоки яркости и блоки цветности;

Фиг. 10 - блок-схема, показывающая примерную структуру системы 3100 доставки контента, которая реализует услугу доставки контента;

Фиг. 11 является блок-схемой, показывающей структуру примерного терминального устройства;

Фиг. 12 является блок-схемой, показывающей пример кодера;

Фиг. 13 является блок-схемой, показывающей пример декодера;

Фиг. 14 показывает блок-схему последовательности операций способа кодирования видео согласно одному варианту осуществления;

Фиг. 15 показывает блок-схему последовательности операций способа декодирования видео согласно одному варианту осуществления.

Фиг. 16 представляет собой схематическое представление структуры 5000 данных, то есть битового потока 500 видео.

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

ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ

Следующее определение предназначено для справки:

блок кодирования: Блок MxN дискретных выборок для некоторых значений M и N, так что разделение CTB на блоки кодирования является разделением.

блок дерева кодирования (CTB): Блок NxN дискретных выборок для некоторого значения N, такого, что разделение компонента на CTB является разделением.

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

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

компонент: Массив или одна выборка из одного из трех массивов (яркости и двух цветности), которые составляют изображение в цветовом формате 4:2:0, 4:2:2 или 4:4:4, или массив или одиночная выборка массива, из которого состоит изображение в монохромном формате.

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

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

Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина «изображение» термины «кадр» или «изображение» могут использоваться как синонимы в области видеокодирования. Кодирование видео (или кодирование (coding) в целом) содержит две части: кодирование видео (video encoding) и декодирование видео (video decoding). Кодирование видео выполняется на стороне источника и обычно содержит обработку (например, посредством сжатия) исходных видеоизображений для сокращения объема данных, требуемого для представления видеоизображений (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне получателя (адресата) и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или изображений в целом), должны пониматься как относящиеся к «кодированию» или «декодированию» видеоизображений или соответствующих видеопоследовательностей. Комбинация кодирующей части и декодирующей части также называется CODEC (Coding and Decoding).

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

Несколько стандартов видеокодирования принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области выборки и кодирование с 2D преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например с использованием пространственного (внутри изображения) предсказания и/или временного (между изображениями) предсказания для формирования блока предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается/подлежит обработке) для получения остаточного блока, остаточный блок преобразуется и этот остаточный блок квантуется в области преобразования для сокращения объема данных (сжатия), которые подлежат передаче, тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что они оба будут формировать идентичные предсказания (например, внутрикадровое и межкадровое предсказания) и/или восстановления для обработки, то есть кодирования (coding), последующих блоков.

В нижеследующих вариантах осуществления системы 10 видеокодирования, видеокодер 20 и видеодекодер 30 описаны на основе Фиг. 1-3.

Фиг. 1A представляет собой схематичное блочное представление, иллюстрирующее примерную систему 10 кодирования, например систему 10 видеокодирования (или сокращенно систему 10 кодирования), которая может использовать методы из настоящей заявки. Видеокодер 20 (или сокращенно кодер 20) и видеодекодер 30 (или сокращенно декодер 30) системы 10 видеокодирования представляют примеры устройств, которые могут быть выполнены с возможностью выполнения методов в соответствии с различными примерами, описанными в настоящей заявке.

Как показано на Фиг. 1A, система 10 кодирования содержит устройство-источник 12, выполненное с возможностью предоставления кодированных данных 21 изображения, например в устройство-получатель 14 для декодирования кодированных данных 13 изображения.

Устройство-источник 12 может содержать кодер 20 и может дополнительно, т.е. необязательно, содержать источник 16 изображений, препроцессор (или блок предварительной обработки) 18, например препроцессор 18 изображения, и интерфейс связи или блок 22 связи.

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

В отличие от препроцессора 18 и обработки, выполняемой посредством блока 18 предварительной обработки, изображение или данные 17 изображения также могут именоваться необработанным (raw) изображением или необработанными данными 17 изображения.

Препроцессор 18 может быть выполнен с возможностью приема (необработанных) данных 17 изображения и для выполнения предварительной обработки данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Предварительная обработка, выполняемая препроцессором 18, может, например, содержать обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или шумоподавление. Можно понять, что блок 18 предварительной обработки может быть необязательным компонентом.

Видеокодер 20 может быть выполнен с возможностью приема предварительно обработанных данных 19 изображения и предоставления закодированных данных 21 изображения (дополнительные подробности будут описаны ниже, например, на основе фиг. 2.

Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема кодированных данных 21 изображения и передачи этих кодированных данных 21 изображения (или любой их дальнейшей обработанной версии) по каналу 13 связи в другое устройство, например устройство-получатель 14 или любое другое устройство, для сохранения или непосредственного восстановления.

Устройство-получатель 14 может содержать декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. необязательно, содержать интерфейс связи или коммуникационный блок 28, постпроцессор 32 (или постпроцессор 32) и устройство отображения. 34.

Интерфейс 28 связи устройства-получателя 14 может быть выполнен с возможностью приема закодированных данных изображения 21 (или любой их дальнейшей обработанной версии), например, непосредственно от устройства-источника 12 или от любого другого источника, например, устройства хранения, например - запоминающего устройства для закодированных данных изображения, и предоставить закодированные данные 21 изображения в декодер 30.

Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема кодированных данных 21 изображения или кодированных данных 13 через прямую линию связи между устройством-источником 12 и устройством-получателем 14, например прямое проводное или беспроводное соединение, или через сеть любого типа, например проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание.

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

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

Оба или по меньшей мере один из интерфейса 22 связи и интерфейса 28 связи могут быть сконфигурированы как однонаправленные интерфейсы связи, как показано стрелкой для канала 13 связи на фиг. 1A, указывающей от устройства-источника 12 к устройству-получателю 14, или интерфейсы двунаправленной связи, и могут быть сконфигурированы, например, для отправки и приема сообщений, например, для установления соединения, для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, например передаче закодированных данных изображения.

Декодер 30 может быть выполнен с возможностью приема закодированных данных 21 изображения и предоставления декодированных данных 31 изображения или декодированного изображения 31 (дополнительные подробности будут описаны ниже, например, на основе фиг. 3 или фиг. 5).

Постпроцессор 32 устройства-получателя 14 может быть выполнен с возможностью постобработки декодированных данных 31 изображения (также называемых восстановленными данными изображения), например декодированного изображения 31, для получения данных 33 изображения после постобработки, например изображения после постобработки. 33. Постобработка, выполняемая блоком 32 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную дискретизацию, или любую другую обработку, например для подготовки декодированных данных 31 изображения для отображения, например с помощью устройства 34 отображения.

Устройство 34 отображения устройства-получателя 14 может быть выполнено с возможностью приема данных 33 изображения после обработки для отображения изображения, например, пользователю или зрителю. Устройство 34 отображения может представлять собой или содержать дисплей любого типа для представления восстановленного изображения, например, интегрированного или внешнего дисплея или монитора. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, дисплеи на микро-LED, жидких кристаллах на кремнии (LCoS), цифровой световой процессор (DLP) или другой дисплей любого типа.

Хотя Фиг. 1A иллюстрирует устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать обе или обе функциональные возможности, устройство-источник 12 или соответствующую функциональную возможность и устройство-получатель 14 или соответствующую функциональную возможность. В таких вариантах осуществления устройство-источник 12 или соответствующая функциональная возможность и устройство-получатель 14 или соответствующая функциональная возможность могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любой их комбинации.

Устройство-источник и/или устройство-получатель могут быть дополнительно реализованы с использованием специального аппаратного и/или программного обеспечения. Например, одно или оба этих устройства могут быть реализованы с использованием специально разработанного аппаратного обеспечения для реализации одной или более из упомянутых выше и ниже функциональных возможностей. В качестве альтернативы или дополнительно одна или более из описанных выше и ниже функциональных возможностей могут быть реализованы с использованием специально разработанного программного обеспечения, которое может выполняться на оборудовании общего назначения, таком как процессоры. Кроме того, также предусмотрены комбинации вышеперечисленного, где устройство-источник и/или устройство-получатель могут быть реализованы с использованием комбинации специально выделенного аппаратного обеспечения для реализации одной или более функций и программного обеспечения для реализации одной или более других функций.

Как будет очевидно для специального элемента на основании описания, наличие и (точное) разделение функциональных возможностей различных блоков или функций в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг. 1A, может варьироваться в зависимости от фактического устройства и применения.

Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или и кодер 20, и декодер 30 могут быть реализованы через схему обработки, как показано на Фиг. 1B, такую как один или более микропроцессоров, цифровые сигнальные процессоры (DSP), специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA), дискретная логика, аппаратное обеспечение, выделенное кодирование видео или любые их комбинации. Кодер 20 может быть реализован через схему 46 обработки для воплощения различных блоков, как обсуждалось в отношении кодера 20 с Фиг. 2 и/или любой другой системы кодера или подсистемы, описанной в данном документе. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных блоков, как обсуждалось в отношении декодера 30 с Фиг. 3 и/или любой другой системы декодера или подсистемы, описанной в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, которые будут описаны ниже. Как показано на Фиг. 5, если методики частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем долговременном считываемом компьютером носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения методик этого раскрытия. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на Фиг. 1B.

Устройство-источник 12 и устройство-получатель 14 могут содержать любое из широкого диапазона устройств, в том числе любые виды портативных или стационарных устройств, например ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые консоли, устройства потоковой передачи видео (например, серверы служб контента или серверы доставки контента), широковещательное приемное устройство, широковещательное передающее устройство или подобное, и могут использовать операционную систему любого типа или обходиться без нее. В некоторых случаях устройство-источник 12 и устройство-получатель 14 могут быть оборудованы для беспроводной связи. Таким образом, устройство-источник 12 и устройство-получатель 14 могут быть устройствами беспроводной связи.

В некоторых случаях система 10 видеокодирования, проиллюстрированная на Фиг. 1A, является лишь примером, а методы настоящей заявки могут применяться к настройкам видеокодирования (такого как кодирование видео или декодирование видео), которые не обязательно включают в себя передачу каких-либо данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковым образом по сети или подобное. Устройство видеокодирования может кодировать и сохранять данные в память, и/или устройство декодирования видео может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые связь друг с другом не осуществляют, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.

Для удобства описания здесь описаны варианты осуществления данного изобретения, например, со ссылкой на высокоэффективное кодирование видео (HEVC) или на эталонное программное обеспечение универсального видеокодирования (VVC), стандарт видеокодирования следующего поколения, разрабатываемый объединенной группой сотрудничества по видеокодированию (JCT-VC) экспертной группы по видеокодированию ITU-T (VCEG) и экспертной группы по движущимся изображениям ISO/IEC (MPEG). Специалист в данной области техники поймет, что варианты осуществления данного изобретения не ограничиваются HEVC или VVC.

Кодер и способ кодирования

Фиг. 2 показывает блок-схему примерного видеокодера 20, который может быть выполнен с возможностью реализации методов настоящего раскрытия. В примере на Фиг. 2 видеокодер 20 содержит ввод 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 (DPB) декодированных изображений, блок 260 выбора режима, блок 270 энтропийного кодирования и вывод 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 межкадрового предсказания, блок 254 внутрикадрового предсказания и блок 262 разделения. Блок 244 межкадрового предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг. 2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.

Блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима могут относится к формированию прямого пути прохождения сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания могут относится к формированию обратного пути прохождения сигнала видеокодера 20, при этом обратный путь прохождения сигнала видеокодера 20 соответствует пути прохождения сигнала декодера (см. видеодекодер 30 на Фиг. 3). Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер декодированных изображений (DPB) 230, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания также относятся к формированию «встроенного декодера» видеокодера 20.

Изображения и разделение изображений (изображения и блоки)

Кодер 20 может быть выполнен с возможностью приема, например - через ввод 201, изображения 17 (или данных 17 изображения), например изображения из последовательности изображений, образующих видео или видеопоследовательность. Принятое изображение или данные изображения также могут представлять собой предварительно обработанное изображение 19 (или предварительно обработанные данные 19 изображения). Для простоты нижеследующее описание ссылается на изображение 17. Изображение 17 также может именоваться текущим изображением или изображением, которое подлежит кодированию (в частности, при видеокодировании, чтобы отличать текущее изображение от других изображений, например, ранее кодированных и/или декодированных изображений той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущее изображение).

(Цифровое) изображение является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может упоминаться как пиксель (сокращенная форма элемента изображения) или пэл (picture element, pel). Число выборок в горизонтальном и вертикальном направлении (или оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовые компоненты, т.е. изображение может быть представлено или включать в себя три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий массив красных, зеленых или синих выборок. Однако при видеокодировании каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например YCbCr, которое содержит компоненту яркости, обозначаемую Y (иногда вместо этого также используется L), и две компоненты цветности (цветоразностные компоненты), обозначаемые Cb и Cr. Компонента Y яркости (luminance) (или сокращенно яркость (luma)) представляет яркость (brightness) или интенсивность уровня серого (например, как в полутоновом изображении), в то время как две компоненты Cb и Cr цветности (chrominance) представляют компоненты информации о цветности (chromaticity) или цвете. Соответственно, изображение в формате YCbCr содержит массив выборок яркости со значениями (Y) выборок яркости и два массива выборок цветности со значениями (Cb и Cr) цветности. Изображения в формате RGB могут быть конвертированы или преобразованы в формат YCbCr и наоборот, процесс также известен как цветовое преобразование или конвертация. Если изображение является монохромным, оно может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.

Варианты осуществления видеокодера 20 могут содержать блок разделения изображения (не показан на Фиг. 2), выполненный с возможностью разделения изображения 17 на множество (обычно не перекрывающихся) блоков 203 изображения. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB) или единицами дерева кодирования (CTU) (H.265/HEVC и VVC). Блок разделения изображения может быть выполнен с возможностью использования одного и того же размера блока для всех изображений в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями или подмножествами или группами изображений и разделения каждого изображения на соответствующие блоки.

В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема непосредственно блока 203 изображения 17, например одного, нескольких или всех блоков, формирующих изображение 17. Блок 203 изображения также может именоваться текущим блоком изображения или блоком изображения, подлежащим кодированию.

Подобно изображению 17, блок 203 изображения снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 17 или массив яркости или цветности в случае цветного изображения) или три массива выборок (например, яркость и два массива цветности в случае цветного изображения 17) или любое другое число и/или вид массивов в зависимости от применяемого цветового формата. Число выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, массив дискретных выборок MxN (M-столбец на N-строка) или массив MxN коэффициентов преобразования.

Варианты осуществления видеокодера 20, показанные на Фиг. 2, могут быть выполнены с возможностью кодирования изображения 17 блок за блоком, например кодирование и прогнозирование выполняется для каждого блока 203.

Варианты осуществления видеокодера 20, как показано на фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования изображения с использованием слайсов (также называемых видеослайсами), при этом изображение может быть разделено или кодировано с использованием одного или более слайсов (обычно без перекрытия), и каждый слайс может содержать один или более блоков (например, CTU) или одну или более групп блоков (например, тайлы (tile) (H.265/HEVC и VVC) или брики (bricks) (VVC)).

Варианты осуществления видеокодера 20, как показано на фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования изображения с использованием групп слайсов/тайлов (также называемых группами тайлов) и/или тайлов (также называемых видеотайлами, в котором изображение может быть разделено или кодировано с использованием одной или более групп слайсов/тайлов (обычно не перекрывающихся), и каждая группа слайсов/тайлов может содержать, например, один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например полные или дробные блоки.

Вычисление остатка

Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также именуемого остатком 205) на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания приведены ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборок.

Преобразование

Блок 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например дискретного косинусного преобразования (DCT) или дискретного синусного преобразования (DST), к значениям выборок остаточного блока 205, чтобы получить коэффициенты 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также именоваться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.

Блок 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, определенные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, дополнительные коэффициенты масштабирования применяются как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основе определенных ограничений, например коэффициентов масштабирования, являющихся степенью двойки для операций сдвига, битовой глубины коэффициентов преобразования, компромисса между точностью и затратами на реализацию и т. д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например блоком 212 обработки обратного преобразования (и соответствующим обратным преобразованием, например блоком 312 обработки обратного преобразования в видеодекодере 30), и соответствующие коэффициенты масштабирования для прямого преобразования, например блоком 206 обработки преобразования, могут быть заданы надлежащим образом в кодере 20.

Варианты осуществления видеокодера 20 (соответственно блок 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например типа преобразования или преобразований, например, непосредственно или кодированы или сжаты через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.

Квантование

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

Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена посредством регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, представлять собой индекс для предопределенного набора применимых размеров шагов квантования. Например, небольшие параметры квантования могут соответствовать тонкому квантованию (небольшим размерам шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, а соответствующее и/или обратное деквантование, например, блоком 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления в соответствии с некоторыми стандартами, например HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Как правило, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации фиксированной точки уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, которая могла быть изменена из-за масштабирования, используемого в аппроксимации фиксированной точки упомянутого уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы настроенные таблицы квантования могут использоваться и сигнализироваться от кодера к декодеру, например в битовом потоке. Квантование является операцией с потерями, при которой потери возрастают с увеличением размеров шагов квантования.

Варианты осуществления видеокодера 20 (соответственно блок 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или кодированных через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.

Обратное квантование

Блок 210 обратного квантования может быть выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, путем применения обратной схемы квантования, применяемой блоком 208 квантования, на основе или с использованием того же самого квантования размер шага в качестве блока 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя они обычно не идентичны коэффициентам преобразования из-за потери при квантовании - коэффициентам 207 преобразования.

Обратное преобразование

Блок 212 обработки обратного преобразования может быть выполнен с возможностью применения обратного преобразования преобразования, примененного блоком 206 обработки преобразования, например, обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусоидального преобразования (DST) или других обратных преобразований, для получения восстановленного остаточного блока 213 (или соответствующие деквантованные коэффициенты 213) в области выборки. Восстановленный остаточный блок 213 также может именоваться блоком 213 преобразования.

Восстановление

Блок 214 восстановления (например, сумматор или сумматор 214) может быть выполнен с возможностью добавления блока 213 преобразования (т. е. восстановленного остаточного блока 213) к блоку 265 предсказания для получения восстановленного блока 215 в области выборки, например, путем добавления - выборка за выборкой - значения выборки восстановленного остаточного блока 213 и значения выборки блока 265 предсказания.

Фильтрация

Блок 220 контурного фильтра (или сокращенно «контурный фильтр» 220) может быть выполнен с возможностью фильтрации восстановленного блока 215 для получения отфильтрованного блока 221 или, в общем случае, для фильтрации восстановленных выборок для получения отфильтрованных значений выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр устранения блочности, фильтр с адаптивным смещением выборки (SAO) или один или более других фильтров, например, адаптивный контурный фильтр (ALF), фильтр подавления шума (NSF) или любую их комбинацию. В примере блок 220 контурного фильтра может содержать фильтр устранения блочности, SAO и ALF. Порядок процесса фильтрации может быть фильтром устранения блочности, SAO и ALF. В другом примере добавляется процесс, называемый отображением яркости с масштабированием цветности (LMCS) (а именно, адаптивный преобразователь в цикле). Этот процесс выполняется перед устранением блочности. В другом примере процесс фильтра устранения блочности может также применяться к внутренним краям субблоков, например, к краям аффинных субблоков, краям субблоков ATMVP, краям преобразования субблока (SBT) и краям внутреннего подраздела (ISP).

Чтобы эффективно удалить блокирующие артефакты, возникающие для больших «блоков», VVC использует фильтр устранения блочности с большим количеством отводов. Здесь термин «блоки» используется в очень общем смысле и может относиться к «блоку преобразования (TB), блоку предсказания (PB) или блоку единицы кодирования (CU)». Фильтр с большим количеством отводов применяется как к компонентам яркости, так и к компонентам цветности. Более длинный отводной фильтр для компонентов яркости изменяет максимум 7 выборок для каждой строки выборок, перпендикулярных и смежных с краем, и применяется к блокам размером >=32 выборок в направлении устранения блочности, т. е. для вертикальных краев блок ширина должна быть >=32 выборки, а для горизонтальных краев высота блока должна быть >=32 выборки.

Фильтр цветности с большим количеством отводов применяется к блокам цветности, когда оба блока, смежные с данным краем, имеют размер >=8 выборок, и он изменяет максимум три выборки по обе стороны от края. Поэтому для вертикальных краев ширина блока обоих блоков, примыкающих к краю, должна быть >=8 выборок, а для горизонтальных краев высота блока обоих блоков, примыкающих к краю, должна быть >=8 выборок. Хотя блок 220 контурного фильтра показан на Фиг. 2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221.

Варианты осуществления видеокодера 20 (соответственно блок 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как параметры фильтра SAO или параметры фильтра ALF или параметры LMCS), например, напрямую или кодированные с помощью блока 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять одни и те же параметры контурного фильтра или соответствующие контурные фильтры для декодирования.

Буфер декодированных изображений

Буфер 230 декодированных изображений (DPB) может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений для кодирования видеоданных посредством видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающие устройства других типов. Буфер 230 (DPB) декодированных изображений может быть выполнен с возможностью сохранения одного или более фильтрованных блоков 221. Буфер 230 декодированных изображений может быть дополнительно выполнен с возможностью сохранения других ранее отфильтрованных блоков, например ранее восстановленных и отфильтрованных блоков 221, того же самого текущего изображения или разных изображений, например ранее восстановленных изображений, и может предоставлять полные ранее восстановленные, т.е. декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для межкадрового предсказания. Буфер 230 декодированных изображений (DPB) также может быть выполнен с возможностью сохранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например если восстановленный блок 215 не фильтруется блоком 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или выборок.

Выбор режима (разделение и предсказание)

Блок 260 выбора режима содержит блок 262 разделения, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания и выполнен с возможностью приема или получения исходных данных изображения, например исходного блока 203 (текущего блока 203 текущего изображения 17), и восстановленных данных изображения, например отфильтрованных и/или нефильтрованных восстановленных выборок или блоков того же самого (текущего) изображения и/или из одного или множества ранее декодированных изображений, например из буфера 230 декодированных изображений или других буферов (например, линейного (строкового) буфера, не показан). Данные восстановленного изображения используются в качестве данных опорного изображения для предсказания, например межкадрового предсказания или внутрикадрового предсказания, чтобы получить блок 265 предсказания или предиктор 265.

Блок 260 выбора режима может быть выполнен с возможностью определения или выбора разделения для текущего режима предсказания блока (включая отсутствие разделения) и режима предсказания (например, режима внутреннего или межкадрового предсказания) и формирования соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.

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

Другими словами, блок 262 разделения может быть выполнен с возможностью разделения изображения из видеопоследовательности на последовательность единиц дерева кодирования (CTU), а CTU 203 может быть дополнительно разделен на более мелкие блочные разделы или субблоки (которые снова образуют блоков), например, итеративно с использованием разделения на квадранты (QT), двоичного разделения (BT) или разделения на троичное дерево (TT) или любого их сочетания, и для выполнения, например, предсказания для каждого из разделений блока или субблоков, при этом выбор режима содержит выбор древовидной структуры разделенного блока 203, и режимы предсказания применяются к каждому из разделений или субблоков блока.

Далее более подробно поясняется разделение (например, посредством блока 260 разделения) и обработка предсказания (посредством блока 244 межкадрового предсказания и блока 254 внутрикадрового предсказания), выполняемые примерным видеокодером 20.

Разделен ие

Блок 262 разделения может быть выполнен с возможностью разделения изображения из видеопоследовательности на последовательность единиц дерева кодирования (CTU), и блок 262 разделения может разделять (или разделять) единицу дерева кодирования (CTU) 203 на более мелкие части, например более мелкие блоки квадратного или прямоугольного размера. Для изображения, которое имеет три массива выборок, CTU состоит из блока N×N выборок яркости вместе с двумя соответствующими блоками выборок цветности. Максимально допустимый размер блока яркости в CTU указан равным 128×128 при разработке универсального кодирования видео (VVC), но в будущем он может быть указан как значение, отличное от 128×128, например, 256×256. CTU изображения могут быть кластеризованы/сгруппированы в виде групп слайсов/тайлов, тайлов или бриков. Тайл покрывает прямоугольную область изображения, и тайл может быть разделен на один или более бриков. Брик состоит из нескольких рядов CTU внутри тайла. Тайл, который не разделен на несколько бриков, может называться бриком. Однако брик является настоящим подмножеством тайла и не называется тайлом. В VVC поддерживаются два режима групп тайлов, а именно режим растрового сканирования слайса/группы тайлов и режим прямоугольного слайса. В режиме растрового сканирования группы тайлов группа слайсов/тайлов содержит последовательность тайлов в тайловом растровом сканировании изображения. В режиме прямоугольного слайса слайс содержит ряд бриков изображения, которые совместно образуют прямоугольную область изображения. Брики прямоугольного слайса располагаются в порядке бриков растрового сканирования слайса. Эти меньшие блоки (которые также могут именоваться субблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например на корневом уровне 0 дерева (уровне 0 иерархии, глубине 0), может быть рекурсивно разделен, например разделен на два или более блоков следующего более низкого уровня дерева, например узлов на уровне 1 дерева (уровне 1 иерархии, глубине 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например уровня 2 дерева (уровня 2 иерархии, глубины 2), и т. д. пока разделение не будет завершено, например из-за выполнения критерия прекращения, например достижения максимальной глубины дерева или минимального размера блока. Блоки, которые далее не разделяются, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется троичным деревом (TT), а дерево, использующее разделение на четыре раздела, называется квадродеревом (QT).

Например, единица дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть N×N блоком выборок для некоторого значения N, так что деление компоненты на CTB является разделением. Единица кодирования (CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодирования (CB) может быть M×N блоком выборок для некоторых значений M и N, так что деление CTB на блоки кодирования является разделением.

В вариантах осуществления, например, согласно HEVC, единица дерева кодирования (CTU) может быть разделена на CU с использованием структуры квадродерева, обозначенной в качества дерева кодирования. Решение о том, кодировать ли область изображения с использованием межкадрового (временного) или внутрикадрового (пространственного) предсказания, принимается на уровне конечного CU. Каждая листовая CU может быть дополнительно разделена на одну, две или четыре PU в соответствии с типом разделения PU. Внутри одной PU применяется один и тот же процесс предсказания, а релевантная информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания, основанного на типе разделения PU, листовая CU может быть разделена на единицы преобразования (TU) в соответствии с другой структурой дерева квадрантов, аналогичной дереву кодирования для CU.

В вариантах осуществления, например, в соответствии с последним разрабатываемым в настоящее время стандартом кодирования видео, который упоминается как универсальное кодирование видео (VVC), комбинированное вложенное многотипное дерево квадродерева с использованием структуры сегментации двоичных и троичных разделений, например, используется для разделения единица дерева кодирования. В структуре дерева кодирования в единице дерева кодирования CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодирования (CTU) сначала разделяется четверичным деревом. Затем листовые узлы четвертичного дерева могут быть дополнительно разделены многотипной древовидной структурой. Существует четыре типа разделения в многотипной древовидной структуре: вертикальное двоичное разделение (SPLIT_BT_VER), горизонтальное двоичное разделение (SPLIT_BT_HOR), вертикальное троичное разделение (SPLIT_TT_VER) и горизонтальное троичное разделение (SPLIT_TT_HOR). Листовые узлы многотипного дерева называются единицами кодирования (CU), и, если CU не слишком велика для максимальной длины преобразования, эта сегментация используется для прогнозирования и обработки преобразования без какого-либо дальнейшего разделения. Это означает, что в большинстве случаев CU, PU и TU имеют одинаковый размер блока в дереве квадрантов с вложенной блочной структурой многотипного древовидного кодирования. Исключение возникает, когда максимальная поддерживаемая длина преобразования меньше, чем ширина или высота цветового компонента CU. VVC развивает уникальный механизм сигнализации разделения информации о разделении в дереве квадрантов с вложенной многотипной древовидной структурой дерева кодирования. В механизме сигнализации единица дерева кодирования (CTU) рассматривается как корень четвертичного дерева и сначала разделяется четвертичной древовидной структурой. Каждый листовой узел четвертичного дерева (когда он достаточно велик, чтобы позволить это) затем дополнительно разделяется многотипной древовидной структурой. В многотипной древовидной структуре сигнализируется первый флаг (mtt_split_cu_flag), указывающий, разделен ли узел дальше; когда узел дополнительно разделяется, сигнализируется второй флаг (mtt_split_cu_vertical_flag), указывающий направление разделения, а затем сигнализируется третий флаг (mtt_split_cu_binary_flag), указывающий, является ли разделение двоичным или тройным разделением. Основываясь на значениях mtt_split_cu_vertical_flag и mtt_split_cu_binary_flag, режим разрезания многотипного дерева (MttSplitMode) CU может быть получен декодером на основе предопределенного правила или таблицы. Следует отметить, что для определенного дизайна, например, для схемы конвейерной обработки с блоками яркости размером 64×64 и блоками цветности размером 32×32 в аппаратных декодерах VVC, разделение TT запрещено, когда ширина или высота блока кодирования яркости больше 64, т.к. показано на рисунке 6. Разделение TT также запрещено, когда ширина или высота блока кодирования цветности больше 32. Схема конвейерной обработки разделит изображение на блоки данных виртуального конвейера s (VPDU), которые определяются как неперекрывающиеся блоки изображения. В аппаратных декодерах последовательные VPDU обрабатываются несколькими этапами конвейера одновременно. Размер VPDU примерно пропорционален размеру буфера на большинстве этапов конвейера, поэтому важно, чтобы размер VPDU был небольшим. В большинстве аппаратных декодеров размер VPDU может быть установлен равным максимальному размеру блока преобразования (TB). Однако в VVC разделение троичного дерева (TT) и двоичного дерева (BT) может привести к увеличению размера VPDU.

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

В качестве примера инструмент внутрикадровых-подразделений (Intra Sub-Partitions (ISP)) может разделять блоки яркости с внутрикадровым предсказанием по вертикали или горизонтали на 2 или 4 подразделения в зависимости от размера блока.

В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания способов разделения, описанных в данном документе.

Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, предопределенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутрикадрового предсказания и/или режимы межкадрового предсказания.

Внутрикадровое предсказание

Набор режимов внутрикадрового предсказания может содержать 35 различных режимов внутрикадрового предсказания, например ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определено в HEVC, или может содержать 67 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены для VVC. Например, несколько обычных режимов углового внутрикадрового предсказания адаптивно заменяются режимами широкоугольного внутрикадрового предсказания для неквадратных блоков, например, как определено в VVC. В качестве другого примера, чтобы избежать операций деления для DC-предсказания, только более длинная сторона используется для вычисления среднего значения для неквадратных блоков. Кроме того, результаты внутрикадрового предсказания планарного режима могут быть дополнительно изменены с помощью способа комбинации внутрикадрового предсказания, зависящего от положения (PDPC).

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

Блок 254 внутрикадрового предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутрикадрового предсказания (или, в общем, информации, указывающей выбранный режим внутрикадрового предсказания для блока) в блок 270 энтропийного кодирования в форме синтаксического элемента 266 для включения в кодированные данные 21 изображения, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.

Межкадровое предсказание

Набор (или возможно) режимы межкадрового предсказания зависит от доступных опорных изображений (т.е. предыдущим по меньшей мере частично декодированных изображений, например, хранится в DBP 230) и других параметрах межкадрового предсказания, например, используется ли все опорное изображение или только часть, например, область поиска окна вокруг области текущего блока, опорного изображения для поиска наилучшего соответствия опорного блока, и/или, например, применяются ли интерполяции пикселей, например, половина/полу-пиксель, четверть пикселя и/или интерполяция 1/16 пикселя, или нет.

В дополнение к вышеупомянутым режимам предсказания может применяться режим пропуска (skip mode), прямой режим (direct mode) и/или другой режим межкадрового предсказания.

Например, расширенное прогнозирование слияния, список кандидатов на слияние в таком режиме создается путем включения следующих пяти типов кандидатов по порядку: Пространственный MVP из соседних пространственных CU, Временной MVP из совместно расположенных CU, MVP на основе истории из таблицы FIFO, Парный средний MVP и нулевые MV. И уточнение вектора движения стороны декодера на основе двустороннего согласования (DMVR) может применяться для повышения точности MV режима слияния. Режим слияния с MVD (MMVD), который исходит из режима слияния с различиями векторов движения. Флаг MMVD сигнализируется сразу после отправки флага пропуска и флага слияния, чтобы указать, используется ли режим MMVD для CU. И может применяться схема адаптивного разрешения вектора движения (AMVR) на уровне CU. AMVR позволяет кодировать MVD для CU с разной точностью. В зависимости от режима прогнозирования для текущего CU можно адаптивно выбирать MVD текущего CU. Когда CU кодируется в режиме слияния, режим комбинированного внешнего/внутрикадрового предсказания (CIIP) может применяться к текущей CU. Взвешенное усреднение сигналов внешнего и внутрикадрового предсказания выполняется для получения предсказания CIIP. Предсказание с компенсацией аффинного движения, поле аффинного движения блока описывается информацией о движении двух векторов движения контрольных точек (4 параметра) или трех векторов движения контрольных точек (6 параметров). Предсказание временного вектора движения на основе субблока (SbTMVP), которое аналогично предсказанию временного вектора движения (TMVP) в HEVC, но предсказывает векторы движения субъединиц CU в пределах текущей CU. Двунаправленный оптический поток (BDOF), ранее называемый BIO, представляет собой более простую версию, требующую гораздо меньше вычислений, особенно с точки зрения количества умножений и размера множителя. Режим треугольного разделения, в таком режиме CU равномерно делится на два треугольных раздела, используя либо диагональное разделение, либо антидиагональное разделение. Кроме того, режим двойного предсказания расширен за пределы простого усреднения, чтобы обеспечить взвешенное усреднение двух сигналов предсказания.

Блок 244 межкадрового предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба на Фиг. 2 не показаны). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 изображения (текущего блока 203 изображения текущего изображения 17) и декодированного изображения 231, или по меньшей мере одного или множества ранее восстановленных блоков, например восстановленных блоков одного или множества других/отличных ранее декодированных изображений 231, для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.

Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из упомянутого множества опорных блоков одинаковых или разных изображений из множества других изображений и обеспечения опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещения) между позицией (координатами x, y) опорного блока и позицией текущего блока в качестве параметров межкадрового предсказания в блок оценки движения. Это смещение также называется вектором движения (MV).

Блок компенсации движения может быть выполнен с возможностью получения, например, приема параметра межкадрового предсказания и для выполнения межкадрового предсказания на основе или с использованием параметра межкадрового предсказания для получения блока 265 межкадрового предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя получение или формирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно с выполнением интерполяций с точностью до субпикселя. Интерполяционная фильтрация может формировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая число блоков предсказания-кандидатов, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных изображений.

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

Энтропийное кодирование

Блок 270 энтропийного кодирования может быть выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), контекстно-адаптивной схемы VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстного кодирования), адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разделением вероятностных интервалов (PIPE) или другой методологии или метода энтропийного кодирования) или обхода (без сжатия) квантованных коэффициентов 209, параметров межкадрового предсказания, параметров внутрикадрового предсказания, параметров контурного фильтра и/или других синтаксических элементов для получения кодированных данных 21 изображения, которые могут быть выведены через выход 272, например, в форме кодированного битового потока 21, так что, например, видеодекодер 30 может получать и использовать параметры для декодирования. Битовый поток может, например, иметь форму, как указано дополнительно на фиг. 16 ниже. Таким образом, варианты осуществления, описанные в связи с этой фигурой, считаются включенными также в битовый поток 21, описанный здесь. Кроме того, любая структура битового потока, упомянутого здесь, может быть предоставлена как битовый поток 21 в смысле этого варианта осуществления. Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.

Другие изменения в структуре видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.

Декодер и способ декодирования

Фиг. 3 показывает пример видеодекодера 30, который может быть выполнен с возможностью реализации методов настоящего раскрытия. Видеодекодер 30 может быть выполнен с возможностью приема закодированных данных 21 изображения (например, закодированного битового потока 21), например, закодированных кодером 20, для получения декодированного изображения 331. Кодированные данные изображения или битовый поток содержит информацию для декодирования кодированных данных изображения, например данных, которые представляют блоки изображения кодированного видеослайса (и/или тайлов или групп тайлов) и связанные синтаксические элементы.

В примере на Фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных изображений, блок 360 применения режима, блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания. Блок 344 межкадрового предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на Фиг. 2.

Как объяснялось в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер декодированных изображений (DPB) 230, блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания также упоминаются как формирующий «встроенный декодер» видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функции блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функции блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функции блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных изображений может быть идентичен по функции буферу 230 декодированных изображений. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.

Энтропийное декодирование

Блок 304 энтропийного декодирования может быть выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем случае, кодированных данных 21 изображения) и выполнения, например, энтропийного декодирования кодированных данных 21 изображения для получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования. (не показано на фиг. 3), например, любой или все параметры межкадрового предсказания (например, индекс опорного изображения и вектор движения), параметр внутрикадрового предсказания (например, режим или индекс внутрикадрового предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и /или другие синтаксические элементы. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров межкадрового предсказания, параметра внутрикадрового предсказания и/или других синтаксических элементов блоку 360 применения режима и других параметров другим блокам декодера 30. Видеодекодер 30 может принимать синтаксические элементы на уровне видеослайса и/или уровне видеоблока. В дополнение или в качестве альтернативы слайсам и соответствующим синтаксическим элементам могут приниматься и/или использоваться группы тайлов и/или тайлы и соответствующие синтаксические элементы.

Обратное квантование

Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 изображения (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применения, на основе параметров квантования, обратного квантования в отношении декодированным квантованных коэффициентов 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеослайсе (или тайле или группе тайлов), для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.

Обратное преобразование

Блок 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также именуемых коэффициентами 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для того, чтобы получить восстановленные остаточные блоки 213 в области выборок. Восстановленные остаточные блоки 213 также могут именоваться блоками 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое подлежит применению к деквантованным коэффициентам 311.

Восстановление

Блок 314 восстановления (например, блок сложения или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания, чтобы получить восстановленный блок 315 в области выборок, например посредством сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.

Фильтрация

Блок 320 контурного фильтра (либо в цикле кодирования, либо после цикла кодирования) может быть выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр устранения блочности, фильтр с адаптивным смещением выборки (SAO) или один или более других фильтров, например, адаптивный контурный фильтр (ALF), фильтр подавления шума ( NSF) или любую их комбинацию. В примере блок 220 контурного фильтра может содержать фильтр устранения блочности, SAO-фильтр и ALF-фильтр. Порядок процесса фильтрации может быть фильтром устранения блочности. В другом примере добавляется процесс, называемый отображением яркости с масштабированием цветности (LMCS) (а именно, адаптивный преобразователь в цикле). Этот процесс выполняется перед устранением блочности. В другом примере процесс фильтра устранения блочности может также применяться к внутренним краям субблоков, например, к краям аффинных субблоков, краям субблоков ATMVP, краям преобразования субблока (SBT) и краям внутреннего подраздела (ISP). Хотя блок 320 контурного фильтра показан на Фиг. 3 как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.

JVET-P0080 и JVET-O0630 предлагают новый внутриконтурный фильтр, называемый межкомпонентным фильтром ALF, который также упоминается здесь как CC-ALF или CCALF. CC-ALF работает как часть процесса адаптивной контурный фильтрации и использует значения выборок яркости для уточнения каждого компонента цветности (т.е. компонента Cr или Cb, например, первый компонент цветности представляет собой именно компонент Cb, а второй компонент цветности представляет собой именно компонент Cr). CC-ALF работает путем применения ромбовидного фильтра к компоненту яркости для каждой выборки цветности компонента цветности, а затем выходное отфильтрованное значение затем используется в качестве коррекции для вывода процесса цветности ALF.

Межкомпонентный адаптивный контурный фильтр (CC-ALF) может использоваться как контурный фильтр и как этап постобработки соответственно.

Буфер декодированных изображений

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

Декодер 30 может быть выполнен с возможностью вывода декодированного изображения 311, например, через выход 312, для представления или просмотра пользователю.

Предсказание

Блок 344 межкадрового предсказания может быть идентичен блоку 244 межкадрового предсказания (в частности, блоку компенсации движения), а блок 354 внутрикадрового предсказания может быть идентичен блоку 254 межкадрового предсказания по функции, и принимает решения по разделению или разделению и выполняет предсказание на основе параметров разделения и/или предсказания или соответствующей информации, принимаемой из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 применения режима может быть выполнен с возможностью осуществления предсказания (внутрикадрового или межкадрового предсказания) для каждого блока на основе восстановленных изображений, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.

Когда видеослайс кодируется как внутрикадрово-кодируемый (I) слайс, блок 354 внутрикадрового предсказания блока 360 применения режима выполнен с возможностью формирования блока 365 предсказания для блока изображения текущего видеослайса на основе просигнализированного режима внутрикадрового предсказания и данных из ранее декодированных блоков текущего изображения. Когда видеоизображение кодируется как межкадрово-кодируемый (т.е. B или P) слайс, блок 344 межкадрового предсказания (например, блок компенсации движения) блока 360 применения режима выполнен с возможностью создания блоков 365 предсказания для видеоблока текущего видеослайса на основе векторов движения и других синтаксических элементов, принимаемых от блока 304 энтропийного декодирования. Для межкадрового предсказания блоки предсказания могут быть созданы из одного из опорных изображений в пределах одного из списков опорных изображений. Видеодекодер 30 может строить списки опорных кадров, Список 0 и Список 1, используя методы построения по умолчанию на основе опорных изображений, хранящихся в DPB 330. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.

Блок 360 применения режима может быть выполнен с возможностью определения информации прогнозирования для видеоблока текущего видеослайса путем синтаксического анализа векторов движения или связанной информации и других синтаксических элементов, и использует информацию прогнозирования для создания блоков предсказания для текущего видеоблока, расшифровано. Например, блок 360 применения режима использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, внутрикадрового или межкадрового предсказания), используемого для кодирования видеоблоков видеослайса, типа слайса межкадрового предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или более списков опорных изображений для слайса, векторов движения для каждого межкадрово-кодированного видеоблока слайса, статуса межкадрового предсказания для каждого межкадрово-кодированного видеоблока слайса, а также другой информации для декодирования видеоблоков в текущем видеослайсе. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.

Варианты осуществления видеодекодера 30, как показано на фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования изображения с использованием слайсов (также называемых видеослайсами), при этом изображение может быть разделено на или декодировано с использованием одного или более слайсов (обычно без перекрытия), и каждый слайс может содержать один или более блоков (например, CTU) или одну или более групп блоков (например, тайлы (H.265/HEVC и VVC) или брики (VVC)).

Варианты осуществления видеодекодера 30, как показано на фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования изображения с использованием групп слайсов/тайлов (также называемых группами тайлов) и/или тайлов (также называемых видеотайлами, при этом изображение может быть разделено на или декодировано с использованием одной или более групп слайсов/тайлов (обычно не перекрывающихся), и каждая группа слайсов/тайлов может содержать, например, один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например полные или дробные блоки.

Другие варианты видеодекодера 30 могут использоваться для декодирования кодированных данных 21 изображения. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурного фильтра. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.

Следует понимать, что в кодере 20 и декодере 30 результат обработки некоторого текущего этапа может быть обработан дополнительно, а затем выведен на следующий этап. Например, после интерполяционной фильтрации, получения вектора движения или контурной фильтрации, дополнительная операция, такая как усечение (Clip) или смещение (Shift), может выполняться над результатом обработки интерполяционной фильтрации, получения вектора движения или контурной фильтрации.

Следует отметить, что дополнительные операции могут применяться к получаемым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения субблока в аффинном, планарном, ATMVP режимах, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается предопределенным диапазоном в соответствии с его представляющим битом. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где «^» означает возведение в степень. Например, если bitDepth установлена равной 16, диапазон составляет -32768 ~ 32767; если bitDepth установлена равной 18, диапазон составляет -131072~131071. Например, значение получаемого вектора движения (например, MV четырех субблоков 4×4 в одном блоке 8×8) ограничивается таким образом, чтобы максимальная разность между целыми частями MV четырех субблоков 4×4 не превышала N пикселей, например была не более 1 пикселя. Здесь представлены два способа ограничения вектора движения в соответствии с bitDepth.

Фиг. 4 является схематичным представлением устройства 400 видеокодирования согласно варианту осуществления настоящего раскрытия. Устройство 400 видеокодирования подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 видеокодирования может быть декодером, таким как видеодекодер 30 по Фиг. 1A, или кодером, таким как видеокодер 20 по Фиг. 1A.

Устройство 400 видеокодирования содержит входные порты 410 (или порты 410 ввода) и блоки 420 (Rx) приемника для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 (Tx) передатчика и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для обеспечения входа или выхода оптических или электрических сигналов.

Процессор 430 реализуется аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Следовательно, включение модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодирования и обеспечивает трансформацию устройства 400 видеокодирования в другое состояние. В качестве альтернативы модуль 470 кодирования реализуется как инструкции, хранящиеся в памяти 460 и исполняемые процессором 430.

Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных переполнения для хранения программ, когда такие программы выбраны для исполнения, и для хранения инструкций и данных, которые считываются во время исполнения программ. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянной памятью (ROM), оперативной памятью (RAM), троичной ассоциативной памятью (TCAM) и/или статической оперативной памятью (SRAM).

Фиг. 5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства-источника 12 и устройства-получателя 14 с Фиг. 1 согласно примерному варианту осуществления.

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

Память 504 в устройстве 500 может быть постоянной памятью (ROM) или устройством оперативной памяти (RAM) в реализации. В качестве памяти 504 может использоваться запоминающее устройство любого другого подходящего типа устройства. Память 504 может включать в себя код и данные 506, доступ к которым осуществляется процессором 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, при этом прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные в данном документе способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение видеокодирования, которое выполняет описанные в данном документе способы.

Устройство 500 может также включать в себя одно или более устройств вывода, например дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, способным воспринимать сенсорные вводы (касанием). Дисплей 518 может быть соединен с процессором 502 через шину 512.

Хотя здесь изображена как одна шина, шина 512 устройства 500 может состоять из многочисленных шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один встраиваемый блок, такой как карта памяти, или множество блоков, таких как множество карт памяти. Таким образом, устройство 500 может быть реализовано в самых разнообразных конфигурациях.

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

Кодирование видео может выполняться на основе цветового пространства и цветового формата. Например, цветное видео играет важную роль в мультимедийных системах, где для эффективного представления цвета используются различные цветовые пространства. Цветовое пространство задает цвет числовыми значениями с использованием нескольких компонентов. Популярным цветовым пространством является цветовое пространство RGB, в котором цвет представлен как комбинация значений трех основных цветовых компонентов (т. е. красного, зеленого и синего). Для сжатия цветного видео широко используется цветовое пространство YCbCr, как описано в A. Ford и A. Roberts, «Colour space converts», Вестминстерский университет, Лондон, Tech. Rep., август 1998 г.

YCbCr можно легко преобразовать из цветового пространства RGB посредством линейного преобразования, а избыточность между различными компонентами, а именно межкомпонентная избыточность, значительно снижается в цветовом пространстве YCbCr. Одним из преимуществ YCbCr является обратная совместимость с черно-белым телевидением, поскольку сигнал Y передает информацию о яркости. Кроме того, пропускная способность цветности может быть уменьшена за счет субдискретизации компонентов Cb и Cr в формате дискретизации цветности 4:2:0 со значительно меньшим субъективным воздействием, чем субдискретизация в цветовом пространстве RGB. Из-за этих преимуществ YCbCr является основным цветовым пространством для сжатия видео. Существуют и другие цветовые пространства, такие как YCoCg, используемые при сжатии видео. В этом раскрытии, независимо от фактического используемого цветового пространства, яркость (или L, или Y) и две цветности (Cb и Cr) используются для представления трех цветовых компонентов в схеме сжатия видео.

Например, когда структура дискретизации формата цветности представляет собой дискретизацию 4:2:0, каждый из двух массивов цветности имеет половину высоты и половину ширины массива яркости. Номинальные вертикальные и горизонтальные относительные положения выборок яркости и цветности на изображениях показаны на фиг. 9A. фиг. 9B иллюстрирует пример дискретизации 4:2:0. Фиг. 9B иллюстрирует пример совмещенного блока яркости и блока цветности. Если формат видео YUV4:2:0, то имеется один блок яркости 16×16 и два блока цветности 8×8.

В частности, блок кодирования или блок преобразования содержит блок яркости и два блока цветности.

Как показано, блок яркости содержит в четыре раза больше выборок, чем блок цветности. В частности, блок цветности содержит N выборок на N выборок, в то время как блок яркости содержит 2N выборок на 2N выборок. Следовательно, блок яркости в четыре раза превышает разрешение блока цветности. Например, когда используется формат YUV4:2:0, выборки яркости могут быть уменьшены в четыре раза (например, ширина в два раза и высота в два раза). YUV - это система кодирования цвета, которая использует цветовое пространство с точки зрения компонентов яркости Y и двух компонентов цветности U и V.

Заголовок изображения:

Концепция заголовка изображения была недавно введена в стандарте VVC (как представлено в JVET-P1006, P0095, P0120, P0239). См. раздел 7.3.2.6 в JVET-P2001-VE для получения информации о синтаксисе заголовка изображения.

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

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

7.3.2.6 Синтаксис RBSP заголовка изображения

picture_header_rbsp( ) { Дескриптор …… if( sps_alf_enabled_flag ) { pic_alf_enabled_present_flag u(1) if( pic_alf_enabled_present_flag ) { pic_alf_enabled_flag u(1) if( pic_alf_enabled_flag ) { pic_num_alf_aps_ids_luma u(3) for( i = 0; i < pic_num_alf_aps_ids_luma; i++ ) pic_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) pic_alf_chroma_idc u(2) if( pic_alf_chroma_idc ) pic_alf_aps_id_chroma u(3) } } } ……

Здесь синтаксическими элементами являются pic_alf_enabled_present_flag, pic_alf_enabled_flag, pic_num_alf_aps_ids_luma, pic_alf_aps_id_luma[i], pic_alf_chroma_idc, pic_alf_aps_id_chroma. Эти синтаксические элементы предоставляются в заголовке изображения, где их присутствие потенциально зависит от других синтаксических элементов, о которых ранее или иным образом сообщалось. Например, sps_alf_enabled_flag и ChromaArrayType являются такими другими синтаксическими элементами.

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

В заголовке слайса внесены следующие изменения синтаксиса для ALF.

7.3.7.1 Общий синтаксис заголовка слайса

slice_header( ) { Дескриптор …… if( sps_alf_enabled_flag && !pic_alf_enabled_present_flag ) { slice_alf_enabled_flag u(1) if( slice_alf_enabled_flag ) { slice_num_alf_aps_ids_luma u(3) for( i = 0; i < slice_num_alf_aps_ids_luma; i++ ) slice_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) slice_alf_chroma_idc u(2) if( slice_alf_chroma_idc ) slice_alf_aps_id_chroma u(3) } } ……..

Семантика записей заголовка изображения ALF и записей заголовка слайса следующая:

pic_alf_enabled_present_flag, равный 1, указывает, что pic_alf_enabled_flag, pic_num_alf_aps_ids_luma, pic_alf_aps_id_luma[i], pic_alf_chroma_idc и pic_alf_aps_id_chroma присутствуют в PH. pic_alf_enabled_present_flag, равный 0, указывает, что pic_alf_enabled_flag, pic_num_alf_aps_ids_luma, pic_alf_aps_id_luma[i], pic_alf_chroma_idc и pic_alf_aps_id_chroma не присутствуют в PH. Когда pic_alf_enabled_present_flag отсутствует, предполагается, что он равен 0.

pic_alf_enabled_flag, равный 1, указывает, что адаптивный контурный фильтр включен для всех слайсов, связанных с PH, и может применяться к цветовому компоненту Y, Cb или Cr в слайсах. Значение pic_alf_enabled_flag, равное 0, указывает, что адаптивный контурный фильтр может быть отключен для одного, нескольких или всех слайсов, связанных с PH. Если pic_alf_enabled_flag отсутствует, предполагается, что он равен 0.

pic_num_alf_aps_ids_luma задает количество ALF APS, к которым относятся слайсы, связанные с PH.

pic_alf_aps_id_luma[i] задает adaptation_parameter_set_id i-го ALF APS, к которому относится компонент яркости слайсов, связанных с PH.

Значение alf_luma_filter_signal_flag блока NAL APS, имеющего aps_params_type, равное ALF_APS, и Adaptation_parameter_set_id, равное pic_alf_aps_id_luma[i], должно быть равно 1.

pic_alf_chroma_idc, равное 0, указывает, что адаптивный контурный фильтр не применяется к цветовым компонентам Cb и Cr. pic_alf_chroma_idc, равное 1, указывает, что адаптивный контурный фильтр применяется к цветовому компоненту Cb. pic_alf_chroma_idc, равное 2, указывает, что адаптивный контурный фильтр применяется к цветовому компоненту Cr. Значение pic_alf_chroma_idc, равное 3, указывает, что адаптивный контурный фильтр применяется к цветовым компонентам Cb и Cr. Когда pic_alf_chroma_idc отсутствует, предполагается, что он равен 0.

pic_alf_aps_id_chroma задает id_adaptation_parameter_set_id ALF APS, на который ссылается компонент цветности слайсов, связанных с PH.

alf_chroma_filter_signal_flag блока NAL APS, имеющего aps_params_type, равное ALF_APS, и Adaptation_parameter_set_id, равное pic_alf_aps_id_chroma, должен быть равен 1.

slice_alf_enabled_flag, равный 1, указывает, что адаптивный контурный фильтр включен и может применяться к цветовому компоненту Y, Cb или Cr в слайсе. slice_alf_enabled_flag, равный 0, указывает, что адаптивный контурный фильтр отключен для всех цветовых компонентов в слайсе. Если он отсутствует, предполагается, что значение slice_alf_enabled_flag равно pic_alf_enabled_flag.

slice_num_alf_aps_ids_luma указывает количество ALF APS, на которые ссылается слайс. Когда slice_alf_enabled_flag равен 1, а slice_num_alf_aps_ids_luma отсутствует, предполагается, что значение slice_num_alf_aps_ids_luma равно значению pic_num_alf_aps_ids_luma.

slice_alf_aps_id_luma[i] задает adaptation_parameter_set_id i-го ALF APS, на который ссылается компонент яркости слайса. TemporalId блока NAL APS, имеющего тип aps_params_type, равный ALF_APS, и adaptation_parameter_set_id, равный slice_alf_aps_id_luma[i], должен быть меньше или равен TemporalId блока NAL кодированного слайса. Когда slice_alf_enabled_flag равен 1, а slice_alf_aps_id_luma[i] отсутствует, значение slice_alf_aps_id_luma[i] предполагается равным значению pic_alf_aps_id_luma[i].

Значение alf_luma_filter_signal_flag блока NAL APS, имеющего aps_params_type, равное ALF_APS, и Adaptation_parameter_set_id, равное slice_alf_aps_id_luma[i], должно быть равно 1.

slice_alf_chroma_idc, равное 0, указывает, что адаптивный контурный фильтр не применяется к цветовым компонентам Cb и Cr. slice_alf_chroma_idc, равное 1, указывает, что адаптивный контурный фильтр применяется к цветовому компоненту Cb. slice_alf_chroma_idc, равное 2, указывает, что адаптивный контурный фильтр применяется к цветовому компоненту Cr. slice_alf_chroma_idc, равное 3, указывает, что адаптивный контурный фильтр применяется к цветовым компонентам Cb и Cr. Когда slice_alf_chroma_idc отсутствует, предполагается, что он равен pic_alf_chroma_idc.

slice_alf_aps_id_chroma задает id_adaptation_parameter_set_id для ALF APS, на который ссылается компонент цветности слайса. TemporalId блока NAL APS, имеющего aps_params_type, равного ALF_APS, и adaptation_parameter_set_id, равного slice_alf_aps_id_chroma, должен быть меньше или равен TemporalId блока NAL кодированного слайса. Когда slice_alf_enabled_flag равен 1, а slice_alf_aps_id_chroma отсутствует, предполагается, что значение slice_alf_aps_id_chroma равно значению pic_alf_aps_id_chroma.

Значение alf_chroma_filter_signal_flag блока NAL APS, имеющего aps_params_type, равное ALF_APS, и Adaptation_parameter_set_id, равное slice_alf_aps_id_chroma, должно быть равно 1.

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

Настоящее раскрытие собирает все общие синтаксические элементы CCALF, которые сигнализируются в заголовке каждого слайса изображения и определяются в заголовке изображения. Настоящее раскрытие пытается распространить тот же принцип передачи сигналов ALF также на межкомпонентный ALF (CCALF). В настоящее время для CCALF каждый из заголовков слайсов должен передавать следующую информацию обычным способом:

7.3.7.1 Общий синтаксис заголовка слайса

slice_header( ) { Дескриптор …… if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if( slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_alf_cb_aps_id u(3) slice_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_alf_cr_aps_id u(3) slice_cross_component_cr_filters_signalled_minus1 ue(v) } ……..

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

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

1.1 Технические проблемы, решаемые настоящим изобретением

Настоящее раскрытие вводит записи заголовка изображения для CCALF, чтобы уменьшить накладные расходы слайса. Как показано на фиг. 7, слайсы с 1 по N содержат одну и ту же информацию 7001 фильтра CCALF. Следовательно, каждый заголовок слайса должен передавать одни и те же данные, что приводит к избыточности и накладным расходам на сигнализацию битов слайса. Как показано на фиг. 8, чтобы устранить эту избыточность в данных CCALF, вводятся записи 8001 заголовка изображения для CCALF, которые определяют общие данные CCALF (а также информацию, относящуюся к CCALF), и все слайсы могут затем наследовать эту общую информацию 8002. Следовательно, это устраняет избыточность в сигнализации и уменьшает накладные расходы на синтаксический анализ заголовков слайсов.

1.2 Варианты осуществления технической реализации настоящего раскрытия

Следует отметить, что каждый из нижеприведенных вариантов осуществления, раскрытых как «альтернативный», может быть предоставлен в сочетании с любым из других (альтернативных) вариантов осуществления и может быть конкретно реализован с использованием любого из вышеописанных устройств, таких как кодер и/или декодер, как упоминается на приведенных выше рисунках.

1.2.1 Альтернативный вариант осуществления 1

На первом этапе вводится новый синтаксический элемент набора параметров последовательности (SPS), называемый «вторым синтаксическим элементом» (обозначенный ниже, например, с помощью sps_ccalf_enabled_flag), который контролирует, включен ли CCALF или нет. Синтаксис показан ниже: второй синтаксический элемент (sps_ccalf_enabled_flag) полностью разделяет операцию ALF и операцию CCALF и, следовательно, позволяет отдельно включать и выключать ALF и CCALF на уровне последовательности.

7.3.2.3 Синтаксис RBSP набора параметров последовательности

seq_parameter_set_rbsp( ) { Дескриптор …… sps_alf_enabled_flag u(1) sps_ccalf_enabled_flag u(1) …….

Здесь sps_alf_enabled_flag является примером первого синтаксического элемента, который также предоставляется в синтаксисе уровня SPS. Первый и второй синтаксические элементы могут сигнализироваться независимо друг от друга, как показано в приведенной выше таблице. Однако, как, например, предусмотрено в альтернативном варианте осуществления 5 ниже, второй синтаксический элемент также может сигнализироваться в зависимости, например, от значения, которое имеет или принимает первый синтаксический элемент.

Новые записи заголовка изображения (выделены жирным шрифтом и курсивом) показаны ниже:

7.3.2.6 Синтаксис RBSP заголовка изображения

picture_header_rbsp( ) { Дескриптор …….. if( sps_alf_enabled_flag ) { pic_alf_enabled_present_flag u(1) if( pic_alf_enabled_present_flag ) { pic_alf_enabled_flag u(1) if( pic_alf_enabled_flag ) { pic_num_alf_aps_ids_luma u(3) for( i = 0; i < pic_num_alf_aps_ids_luma; i++ ) pic_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) pic_alf_chroma_idc u(2) if( pic_alf_chroma_idc ) pic_alf_aps_id_chroma u(3) } } } if( sps_ccalf_enabled_flag ) { pic_ccalf_enabled_present_flag u(1) if( pic_ccalf_enabled_present_flag ) { pic_ccalf_enabled_flag u(1) if( pic_ccalf_enabled_flag ) { if( ChromaArrayType != 0 ) pic_cross_component_alf_cb_enabled_flag u(1) if( pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_alf_cb_aps_id u(3) pic_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) pic_cross_component_alf_cr_enabled_flag u(1) if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_alf_cr_aps_id u(3) pic_cross_component_cr_filters_signalled_minus1 ue(v) } } } ……

Здесь дополнительные синтаксические элементы вводятся в заголовок изображения, где эти дополнительные синтаксические элементы могут присутствовать только в том случае, если первый и/или второй синтаксические элементы принимают определенные значения. Это обозначается синтаксисом «если», в зависимости от значения первого синтаксического элемента и/или второго синтаксического элемента.

В частности, в заголовке изображения может быть предоставлен третий синтаксический элемент (обозначенный здесь как pic_ccalf_enabled_flag) в зависимости от значения второго синтаксического элемента. Этот синтаксический элемент может указывать (как объяснено ниже), следует ли включить CCALF для текущего изображения.

Четвертый синтаксический элемент (например, pic_cross_component_alf_cb_enabled_flag) может быть дополнительно предоставлен в заголовке изображения в зависимости от второго синтаксического элемента.

В зависимости, например, от значения второго синтаксического элемента и/или значения третьего синтаксического элемента и/или четвертого синтаксического элемента может быть предоставлен пятый синтаксический элемент, такой как pic_cross_component_alf_cb_aps_id. Кроме того, в заголовке изображения может быть предусмотрен шестой синтаксический элемент, обозначенный здесь как pic_cross_component_cb_filters_signalled_minus1, потенциально также зависящий от второго синтаксического элемента, и/или третьего синтаксического элемента, и/или четвертого синтаксического элемента.

Параллельно с этим может быть предоставлен седьмой синтаксический элемент, обозначенный выше как pic_cross_component_alf_cr_enabled_flag, в зависимости от второго синтаксического элемента и/или третьего синтаксического элемента.

В зависимости, например, от значения седьмого синтаксического элемента, но потенциально также в зависимости от второго синтаксического элемента и/или третьего синтаксического элемента, может быть предоставлен восьмой элемент (например, pic_cross_component_alf_cr_aps_id) и/или девятый синтаксический элемент (например, pic_cross_component_cr_filters_signalled_minus1).

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

Синтаксис заголовка слайса следующий:

7.3.7.1 Общий синтаксис заголовка слайса

slice_header( ) { Дескриптор ……. if( sps_alf_enabled_flag && !pic_alf_enabled_present_flag ) { slice_alf_enabled_flag u(1) if( slice_alf_enabled_flag ) { slice_num_alf_aps_ids_luma u(3) for( i = 0; i < slice_num_alf_aps_ids_luma; i++ ) slice_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) slice_alf_chroma_idc u(2) if( slice_alf_chroma_idc ) slice_alf_aps_id_chroma u(3) } if( sps_ccalf_enabled_flag && ! pic_ccalf_enabled_present_flag) { slice_ccalf_enabled_flag u(1) if( slice_ccalf_enabled_flag ) { if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if( slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_alf_cb_aps_id u(3) slice_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_alf_cr_aps_id u(3) slice_cross_component_cr_filters_signalled_minus1 ue(v) } } …..

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

В частности, как показано выше, десятый синтаксический элемент, такой как slice_cross_component_alf_cb_enabled_flag, может предоставляться в зависимости от значения второго синтаксического элемента и потенциально также в зависимости от четырнадцатого синтаксического элемента (факультативно предоставляемого на уровне SPS и обозначенного здесь как ChromaArrayType), который не является равно 0. Кроме того, может быть предусмотрен одиннадцатый синтаксический элемент, который обозначен выше как slice_cross_component_alf_cb_aps_id, в зависимости от значения второго синтаксического элемента и/или в зависимости от значения десятого синтаксического элемента.

Соответственно, двенадцатый синтаксический элемент, такой как slice_cross_component_alf_cr_enabled_flag, может предоставляться в зависимости от значения второго синтаксического элемента и потенциально также в зависимости от того, что четырнадцатый синтаксический элемент не равен 0. Кроме того, может быть предусмотрен тринадцатый синтаксический элемент, который обозначен выше как slice_cross_component_alf_cr_aps_id, в зависимости от значения второго синтаксического элемента и/или в зависимости от значения двенадцатого синтаксического элемента.

Однако также подразумевается, что синтаксические элементы (в частности, синтаксические элементы с десятого по тринадцатый), представленные в заголовке слайса, могут присутствовать независимо от значения других синтаксических элементов, таких как второй синтаксический элемент или четырнадцатый синтаксический элемент. В частности, может быть предусмотрено, что синтаксические элементы, относящиеся к CC-ALF в заголовке слайса (например, синтаксические элементы с десятого по тринадцатый), принимают значение по умолчанию, если первый синтаксический элемент, второй синтаксический элемент или другой синтаксический элемент указывает, что CC-ALF не включен.

Семантика вновь введенных синтаксических элементов следующая:

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

pic_ccalf_enabled_present_flag равный 1 указывает, что pic_ccalf_enabled_flag, pic_cross_component_alf_cb_enabled_flag, pic_cross_component_alf_cb_aps_id, pic_cross_component_alf_cb_filter_count_minus1, pic_cross_component_alf_cr_enabled_flag, pic_cross_component_alf_cr_aps_id и pic_cross_component_alf_cr_filter_count_minus1 представлены в PH (заголовок изображения, picture header). pic_alf_enabled_present_flag равный 0 указывает, что pic_ccalf_enabled_flag, pic_cross_component_alf_cb_enabled_flag, pic_cross_component_alf_cb_aps_id, pic_cross_component_alf_cb_filter_count_minus1, pic_cross_component_alf_cr_enabled_flag, pic_cross_component_alf_cr_aps_id и pic_cross_component_alf_cr_filter_count_minus1 не представлены в PH. Когда pic_ccalf_enabled_present_flag отсутствует, предполагается, что он равен 0.

Значение третьего синтаксического элемента (обозначенного здесь как pic_ccalf_enabled_flag), равное 1, указывает, что межкомпонентный адаптивный контурный фильтр включен для всех слайсов, связанных с PH, и может применяться к цветовому компоненту Cb или Cr в слайсах. Значение третьего синтаксического элемента, равное 0, указывает, что межкомпонентный адаптивный контурный фильтр может быть отключен для одного, нескольких или всех слайсов, связанных с PH (заголовок изображения). Если он отсутствует, значение третьего синтаксического элемента может быть принято равным 0.

Четвертый синтаксический элемент упоминался выше и может быть обозначен здесь с помощью pic_cross_component_alf_cb_enabled_flag. Значение четвертого синтаксического элемента, равное 0, указывает, что межкомпонентный фильтр Cb не применяется к цветовому компоненту Cb всех слайсов, связанных с PH. Когда значение четвертого синтаксического элемента равно 1, это указывает, что межкомпонентный фильтр Cb применяется к цветовому компоненту Cb всех слайсов, связанных с PH. Когда четвертый синтаксический элемент отсутствует, предполагается, что он равен 0.

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

Шестой синтаксический элемент может быть обозначен здесь с помощью pic_cross_component_cb_filters_signalled_minus1. Значение шестого синтаксического элемента плюс 1 указывает количество межкомпонентных Cb-фильтров всех слайсов, связанных с PH. Значение шестого синтаксического элемента должно быть в диапазоне от 0 до 3.

Когда четвертый синтаксический элемент равен 1, требование соответствия битового потока состоит в том, что шестой синтаксический элемент должен быть меньше или равен значению alf_cross_component_cb_filters_signalled_minus1 в ALF APS, на который ссылается пятый синтаксический элемент текущего изображения.

Седьмой синтаксический элемент, упомянутый выше, обозначается как pic_cross_component_alf_cr_enabled_flag. Значение седьмого синтаксического элемента, равное 0, указывает, что межкомпонентный фильтр Cr не применяется к цветовому компоненту Cr всех слайсов, связанных с PH. Значение седьмого синтаксического элемента, равное 1, указывает, что межкомпонентный фильтр Cr применяется к цветовому компоненту Cr всех слайсов, связанных с PH. Когда седьмой синтаксический элемент отсутствует, предполагается, что он равен 0.

Восьмой синтаксический элемент также был упомянут и в качестве примера обозначен с как pic_cross_component_alf_cr_aps_id. Значение восьмого синтаксического элемента предназначено для указания adaptation_parameter_set_id, который является цветовым компонентом Cr всех слайсов, связанных с PH.

Более того, упомянут девятый синтаксический элемент, который может быть обозначен как pic_cross_component_cr_filters_signalled_minus1. Значение девятого синтаксического элемента плюс 1 указывает количество межкомпонентных фильтров Cr всех слайсов, связанных с PH. Значение девятого синтаксического элемента должно находиться в диапазоне от 0 до 3.

Когда значение седьмого синтаксического элемента равно 1, требованием соответствия битового потока является то, что значение девятого синтаксического элемента должно быть меньше или равно значению alf_cross_component_cr_filters_signalled_minus1 в ALF APS, на которое ссылается восьмой синтаксический элемент текущего изображения.

Семантика синтаксических элементов заголовка слайса CCALF дополнительно уточняется следующим образом:

slice_ccalf_enabled_flag, равный 1, указывает, что межкомпонентный адаптивный контурный фильтр включен и может применяться к цветовому компоненту Cb или Cr в слайсе. slice_alf_enabled_flag, равный 0, указывает, что межкомпонентный адаптивный контурный фильтр отключен для всех цветовых компонентов в слайсе. Если он отсутствует, предполагается, что значение slice_ccalf_enabled_flag равно третьему синтаксическому элементу.

Десятый синтаксический элемент, упомянутый выше, может быть обозначен как slice_cross_component_alf_cb_enabled_flag, и может быть предусмотрено, что значение десятого синтаксического элемента, равное 0, указывает, что межкомпонентный фильтр Cb не применяется к цветовому компоненту Cb. Десятый синтаксический элемент, равный 1, указывает, что межкомпонентный фильтр Cb применяется к цветовому компоненту Cb. Когда десятый синтаксический элемент отсутствует, предполагается, что он равен четвертому синтаксическому элементу (например, pic_cross_component_alf_cb_enabled_flag).

Одиннадцатый синтаксический элемент, упомянутый выше, может упоминаться как slice_cross_component_alf_cb_aps_id. Значение одиннадцатого синтаксического элемента задает adaptation_parameter_set_id, на который ссылается цветовой компонент Cb слайса.

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

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

slice_cross_component_cb_filters_signalled_minus1 плюс 1 указывает количество межкомпонентных фильтров Cb. Значение slice_cross_component_cb_filters_signalled_minus1 должно находиться в диапазоне от 0 до 3.

Когда десятый синтаксический элемент равен 1, требованием соответствия битового потока является то, что slice_cross_component_cb_filters_signalled_minus1 должен быть меньше или равен значению alf_cross_component_cb_filters_signalled_minus1 в ALF APS, на который ссылается одиннадцатый из текущего слайса.

Когда десятый синтаксический элемент равен 1, а одиннадцатый отсутствует, значение slice_cross_component_cb_filters_signalled_minus1 считается равным значению pic_cross_component_cb_filters_signalled_minus1.

Упомянутый двенадцатый синтаксический элемент может упоминаться как slice_cross_component_alf_cr_enabled_flag. Значение двенадцатого синтаксического элемента, равное 0, указывает, что межкомпонентный фильтр Cr не применяется к цветовому компоненту Cr. Значение двенадцатого синтаксического элемента, равное 1, указывает, что межкомпонентный адаптивный контурный фильтр применяется к цветовому компоненту Cr. Когда двенадцатый синтаксический элемент отсутствует, предполагается, что он равен седьмому синтаксическому элементу, например pic_cross_component_alf_cr_enabled_flag.

Был упомянут тринадцатый синтаксический элемент, который далее может упоминаться как slice_cross_component_alf_cr_aps_id. Значение тринадцатого синтаксического элемента указывает id_adaptation_parameter_set_id, на который ссылается цветовой компонент Cr слайса.

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

Когда значение двенадцатого синтаксического элемента равно 1, а тринадцатый синтаксический элемент отсутствует, предполагается, что значение тринадцатого синтаксического элемента равно значению восьмого синтаксического элемента.

slice_cross_component_cr_filters_signalled_minus1 плюс 1 указывает количество межкомпонентных фильтров Cr. Значение slice_cross_component_cr_filters_signalled_minus1 должно находиться в диапазоне от 0 до 3.

Когда двенадцатый синтаксический элемент равен 1, требованием соответствия битового потока является то, что slice_cross_component_cr_filters_signalled_minus1 должен быть меньше или равен значению alf_cross_component_cr_filters_signalled_minus1 в ALF APS, на который ссылается тринадцатый синтаксический элемент текущего слайса.

Когда двенадцатый синтаксический элемент равен 1, а тринадцатый синтаксический элемент отсутствует, предполагается, что значение slice_cross_component_cr_filters_signalled_minus1 равно значению pic_cross_component_cr_filters_signalled_minus1.

Вариант осуществления 2:

В варианте 2 второй синтаксический элемент на уровне SPS (например, sps_ccalf_enabled_flag) больше не вводится, поэтому первый синтаксический элемент (например, sps_alf_enabled_flag) также управляет применением фильтра ccalf.

Синтаксис альтернативы 2 следующий:

7.3.2.6 Синтаксис RBSP заголовка изображения

picture_header_rbsp( ) { Дескриптор …….. if( sps_alf_enabled_flag ) { pic_alf_enabled_present_flag u(1) if( pic_alf_enabled_present_flag ) { pic_alf_enabled_flag u(1) if( pic_alf_enabled_flag ) { pic_num_alf_aps_ids_luma u(3) for( i = 0; i < pic_num_alf_aps_ids_luma; i++ ) pic_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) pic_alf_chroma_idc u(2) if( pic_alf_chroma_idc ) pic_alf_aps_id_chroma u(3) } } pic_ccalf_enabled_present_flag u(1) if( pic_ccalf_enabled_present_flag ) { pic_ccalf_enabled_flag u(1) if( pic_ccalf_enabled_flag ) { if( ChromaArrayType != 0 ) pic_cross_component_alf_cb_enabled_flag u(1) if( pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_alf_cb_aps_id u(3) pic_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) pic_cross_component_alf_cr_enabled_flag u(1) if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_alf_cr_aps_id u(3) pic_cross_component_cr_filters_signalled_minus1 ue(v) } } } ……

В этом втором варианте осуществления второй синтаксический элемент, которым может быть sps_ccalf_enabled_flag, может быть предоставлен на уровне SPS. В этом варианте осуществления может быть указано, следует ли включать CCALF или нет, на основе дополнительного синтаксического элемента, такого как pic_ccalf_enabled_present_flag, который указывает, присутствуют ли CCALF, что дополнительные синтаксические элементы, относящиеся к CCALF, и из которого можно дополнительно получить, что для текущего изображения, к которому относится pic_ccalf_enabled_present_flag, должен быть включен CCALF.

Синтаксис заголовка слайса следующий:

7.3.7.1 Общий синтаксис заголовка слайса

slice_header( ) { Дескриптор ……. if( sps_alf_enabled_flag && !pic_alf_enabled_present_flag ) { slice_alf_enabled_flag u(1) if( slice_alf_enabled_flag ) { slice_num_alf_aps_ids_luma u(3) for( i = 0; i < slice_num_alf_aps_ids_luma; i++ ) slice_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) slice_alf_chroma_idc u(2) if( slice_alf_chroma_idc ) slice_alf_aps_id_chroma u(3) } if( sps_alf_enabled_flag && ! pic_ccalf_enabled_present_flag) { slice_ccalf_enabled_flag u(1) if( slice_ccalf_enabled_flag ) { if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if( slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_alf_cb_aps_id u(3) slice_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_alf_cr_aps_id u(3) slice_cross_component_cr_filters_signalled_minus1 ue(v) } } …..

Как видно из вышеизложенного, наличие синтаксических элементов в заголовке слайса, как например slice_ccalf_enabled_flag, slice_cross_component_alf_cb_enabled_flag, slice_cross_component_alf_cb_aps_id, slice_cross_component_cb_filters_signalled_minus1, slice_cross_component_alf_cr_enabled_flag, slice_cross_component_alf_cr_aps_id и slice_cross_component_cr_filters_signalled_minus1, и/или синтаксических элементов с десятого по тринадцатый, уже упомянутых выше, может зависеть от первого синтаксического элемента, предоставленного на уровне SPS, например, sps_alf_enabled_flag, и синтаксического элемента, предоставленного в заголовке изображения, например, pic_ccalf_enabled_present_flag, и, возможно, дополнительного синтаксического элемента, который предоставляется в заголовке слайса, например, slice_ccalf_enabled_flag.

Вариант осуществления 3:

Другая альтернатива для записей заголовка изображения CCALF следующая: в этой альтернативе pic_alf_enabled_present_flag, pic_alf_enabled_flag управляет записями заголовка изображения CCALF и заголовком слайса CCALF соответственно.

7.3.2.6 Синтаксис RBSP заголовка изображения

picture_header_rbsp( ) { Дескриптор …….. if( sps_alf_enabled_flag ) { pic_alf_enabled_present_flag u(1) if( pic_alf_enabled_present_flag ) { pic_alf_enabled_flag u(1) if( pic_alf_enabled_flag ) { pic_num_alf_aps_ids_luma u(3) for( i = 0; i < pic_num_alf_aps_ids_luma; i++ ) pic_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) pic_alf_chroma_idc u(2) if( pic_alf_chroma_idc ) pic_alf_aps_id_chroma u(3) if( ChromaArrayType != 0 ) pic_cross_component_alf_cb_enabled_flag u(1) if( pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_alf_cb_aps_id u(3) pic_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) pic_cross_component_alf_cr_enabled_flag u(1) if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_alf_cr_aps_id u(3) pic_cross_component_cr_filters_signalled_minus1 ue(v) } /* end of pic_alf_enabled_flag */ } /* end of pic_alf_enabled_present_flag */ } /* end of sps_alf_enabled_flag */ ……

Синтаксис заголовка слайса следующий:

7.3.7.1 Общий синтаксис заголовка слайса

slice_header( ) { Дескриптор ……. if( sps_alf_enabled_flag && !pic_alf_enabled_present_flag ) //пояснение: если sps_alf_enabled_flag имеет значение «истина» (и) если pic_alf_enabled_present_flag имеет значение «ложь»)//{ slice_alf_enabled_flag u(1) if( slice_alf_enabled_flag ) { slice_num_alf_aps_ids_luma u(3) for( i = 0; i < slice_num_alf_aps_ids_luma; i++ ) slice_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) slice_alf_chroma_idc u(2) if( slice_alf_chroma_idc ) slice_alf_aps_id_chroma u(3) if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if( slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_alf_cb_aps_id u(3) slice_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_alf_cr_aps_id u(3) slice_cross_component_cr_filters_signalled_minus1 ue(v) } } /* end of slice_alf_enabled_flag loop */ } /* end of sps_alf_enabled_flag && !pic_alf_enabled_present_flag */ …..

Можно заметить, что !(0)=1 или !(1)=0.

Вариант осуществления 4:

Поскольку в текущем дизайне CCALF существует ограничение на то, что slice_cross_component_alf_cb_aps_id, slice_cross_component_alf_cr _aps_id должны быть одинаковыми во всех слайсах, нет смысла повторять этот синтаксический элемент в заголовке слайса, а только сигнализировать pic_cross_component_alf_cb_aps_id и pic_cross_component_alf_cr_aps_id в заголовок изображения. Затем можно сделать вывод, что значения синтаксических элементов slice_cross_component_alf_cb_aps_id и slice_cross_component_alf_cr совпадают со значениями pic_cross_component_alf_cb_aps_id и pic_cross_component_alf_cr_aps_id. Таким образом, объем информации в битовом потоке может быть дополнительно уменьшен.

Возможный синтаксис следующий:

7.3.2.6 Синтаксис RBSP заголовка изображения

picture_header_rbsp( ) { Дескриптор …….. if( sps_alf_enabled_flag ) { pic_alf_enabled_present_flag u(1) if( pic_alf_enabled_present_flag ) { pic_alf_enabled_flag u(1) if( pic_alf_enabled_flag ) { pic_num_alf_aps_ids_luma u(3) for( i = 0; i < pic_num_alf_aps_ids_luma; i++ ) pic_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) pic_alf_chroma_idc u(2) if( pic_alf_chroma_idc ) pic_alf_aps_id_chroma u(3) } } } if( sps_ccalf_enabled_flag ) { pic_cross_component_alf_cb_aps_id u(3) pic_cross_component_alf_cr_aps_id u(3) pic_ccalf_enabled_present_flag u(1) if( pic_ccalf_enabled_present_flag ) { pic_ccalf_enabled_flag u(1) if( pic_ccalf_enabled_flag ) { if( ChromaArrayType != 0 ) pic_cross_component_alf_cb_enabled_flag u(1) if( pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) pic_cross_component_alf_cr_enabled_flag u(1) if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_cr_filters_signalled_minus1 ue(v) } } } ……

Здесь дополнительные синтаксические элементы, которые относятся к CCALF (т.е. по меньшей мере синтаксические элементы, содержащие элемент ccalf или cross_component_alf или cc_alf, предоставляются в зависимости от значения второго синтаксического элемента, сигнализируемого на уровне SPS, то есть в этом варианте осуществления sps_ccalf_enabled_flag.

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

Кроме того, в заголовке изображения могут быть предусмотрены четвертый синтаксический элемент, такой как pic_cross_component_alf_cb_enabled_flag, и седьмой синтаксический элемент, такой как pic_cross_component_alf_cb_enabled_flag, в зависимости от значения второго синтаксического элемента.

Синтаксис заголовка слайса может быть следующим:

7.3.7.1 Общий синтаксис заголовка слайса

slice_header( ) { Дескриптор ……. if( sps_alf_enabled_flag && !pic_alf_enabled_present_flag ) { slice_alf_enabled_flag u(1) if( slice_alf_enabled_flag ) { slice_num_alf_aps_ids_luma u(3) for( i = 0; i < slice_num_alf_aps_ids_luma; i++ ) slice_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) slice_alf_chroma_idc u(2) if( slice_alf_chroma_idc ) slice_alf_aps_id_chroma u(3) } if( sps_ccalf_enabled_flag && ! pic_ccalf_enabled_present_flag) { slice_ccalf_enabled_flag u(1) if( slice_ccalf_enabled_flag ) { if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if( slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_cr_filters_signalled_minus1 ue(v) } } …..

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

slice_cross_component_alf_cb_aps_id всегда может считаться таким же, как значение pic_cross_component_alf_cb_aps_id.

slice_cross_component_alf_cr_aps_id всегда может считаться таким же, как значение pic_cross_component_alf_cr_aps_id.

Другой возможный синтаксис выглядит следующим образом:

7.3.2.6 Синтаксис RBSP заголовка изображения

picture_header_rbsp( ) { Дескриптор …….. if( sps_alf_enabled_flag ) { pic_alf_enabled_present_flag u(1) if( pic_alf_enabled_present_flag ) { pic_alf_enabled_flag u(1) if( pic_alf_enabled_flag ) { pic_num_alf_aps_ids_luma u(3) for( i = 0; i < pic_num_alf_aps_ids_luma; i++ ) pic_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) pic_alf_chroma_idc u(2) if( pic_alf_chroma_idc ) pic_alf_aps_id_chroma u(3) } } pic_cross_component_alf_cb_aps_id u(3) pic_cross_component_alf_cr_aps_id u(3) pic_ccalf_enabled_present_flag u(1) if( pic_ccalf_enabled_present_flag ) { pic_ccalf_enabled_flag u(1) if( pic_ccalf_enabled_flag ) { if( ChromaArrayType != 0 ) pic_cross_component_alf_cb_enabled_flag u(1) if( pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_alf_cb_aps_id u(3) pic_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) pic_cross_component_alf_cr_enabled_flag u(1) if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_alf_cr_aps_id u(3) pic_cross_component_cr_filters_signalled_minus1 ue(v) } } } ……

В синтаксисе в соответствии с приведенной выше таблицей наличие синтаксических элементов, относящихся к CCALF, зависит от значения первого синтаксического элемента, предоставленного на уровне SPS, например, sps_alf_enabled_flag. Второй синтаксический элемент, такой как sps_ccalf_enabled_flag, может быть предоставлен или не предоставлен на уровне SPS в этом варианте осуществления.

Синтаксис заголовка слайса может быть следующим:

7.3.7.1 Общий синтаксис заголовка слайса

slice_header( ) { Дескриптор ……. if( sps_alf_enabled_flag && !pic_alf_enabled_present_flag ) { slice_alf_enabled_flag u(1) if( slice_alf_enabled_flag ) { slice_num_alf_aps_ids_luma u(3) for( i = 0; i < slice_num_alf_aps_ids_luma; i++ ) slice_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) slice_alf_chroma_idc u(2) if( slice_alf_chroma_idc ) slice_alf_aps_id_chroma u(3) } if( sps_alf_enabled_flag && ! pic_ccalf_enabled_present_flag) { slice_ccalf_enabled_flag u(1) if( slice_ccalf_enabled_flag ) { if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if( slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_cr_filters_signalled_minus1 ue(v) } } …..

slice_cross_component_alf_cb_aps_id всегда подразумевается таким же, как значение pic_cross_component_alf_cb_aps_id.

slice_cross_component_alf_cr_aps_id всегда подразумевается таким же, как значение pic_cross_component_alf_cr_aps_id.

Другой возможный синтаксис выглядит следующим образом:

Синтаксис RBSP заголовка изображения

picture_header_rbsp( ) { Дескриптор …….. if( sps_alf_enabled_flag ) { pic_cross_component_alf_cb_aps_id u(3) pic_cross_component_alf_cr_aps_id u(3) pic_alf_enabled_present_flag u(1) if( pic_alf_enabled_present_flag ) { pic_alf_enabled_flag u(1) if( pic_alf_enabled_flag ) { pic_num_alf_aps_ids_luma u(3) for( i = 0; i < pic_num_alf_aps_ids_luma; i++ ) pic_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) pic_alf_chroma_idc u(2) if( pic_alf_chroma_idc ) pic_alf_aps_id_chroma u(3) if( ChromaArrayType != 0 ) pic_cross_component_alf_cb_enabled_flag u(1) if( pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) pic_cross_component_alf_cr_enabled_flag u(1) if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_cr_filters_signalled_minus1 ue(v) } /* end of pic_alf_enabled_flag */ } /* end of pic_alf_enabled_present_flag */ } /* end of sps_alf_enabled_flag */ ……

Синтаксис заголовка слайса следующий:

7.3.7.1 Общий синтаксис заголовка слайса

slice_header( ) { Дескриптор ……. if( sps_alf_enabled_flag && !pic_alf_enabled_present_flag ) { slice_alf_enabled_flag u(1) if( slice_alf_enabled_flag ) { slice_num_alf_aps_ids_luma u(3) for( i = 0; i < slice_num_alf_aps_ids_luma; i++ ) slice_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) slice_alf_chroma_idc u(2) if( slice_alf_chroma_idc ) slice_alf_aps_id_chroma u(3) if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if( slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_cr_filters_signalled_minus1 ue(v) } } /* end of slice_alf_enabled_flag loop */ } /* end of sps_alf_enabled_flag && !pic_alf_enabled_present_flag */ …..

В этом варианте осуществления предполагается, что slice_cross_component_alf_cb_aps_id всегда совпадает со значением pic_cross_component_alf_cb_aps_id.

В этом варианте осуществления двенадцатый синтаксический элемент, такой как slice_cross_component_alf_cr_aps_id, всегда считается таким же, как значение восьмого синтаксического элемента, такого как pic_cross_component_alf_cr_aps_id).

Вариант осуществления 5:

Другой альтернативный синтаксис может быть следующим: В этом синтаксисе параметры CCALF условно сигнализируются на основе значения второго синтаксического элемента, как уже упоминалось выше. Этот второй синтаксический элемент может быть предоставлен или может содержать флаг, такой как sps_ccalf_enabled_flag.

Синтаксис RBSP набора параметров последовательности

seq_parameter_set_rbsp( ) { Дескриптор sps_decoding_parameter_set_id u(4) sps_video_parameter_set_id u(4) sps_max_sublayers_minus1 u(3) sps_reserved_zero_4bits u(4) sps_ptl_dpb_hrd_params_present_flag u(1) if( sps_ptl_dpb_hrd_params_present_flag ) profile_tier_level( 1, sps_max_sublayers_minus1 ) gdr_enabled_flag u(1) sps_seq_parameter_set_id u(4) chroma_format_idc u(2) if( chroma_format_idc = = 3 ) separate_colour_plane_flag u(1) ref_pic_resampling_enabled_flag u(1) pic_width_max_in_luma_samples ue(v) pic_height_max_in_luma_samples ue(v) sps_log2_ctu_size_minus5 u(2) subpics_present_flag u(1) if( subpics_present_flag ) { sps_num_subpics_minus1 u(8) for( i = 0; i <= sps_num_subpics_minus1; i++ ) { subpic_ctu_top_left_x[ i ] u(v) subpic_ctu_top_left_y[ i ] u(v) subpic_width_minus1[ i ] u(v) subpic_height_minus1[ i ] u(v) subpic_treated_as_pic_flag[ i ] u(1) loop_filter_across_subpic_enabled_flag[ i ] u(1) } } sps_subpic_id_present_flag u(1) if( sps_subpics_id_present_flag ) { sps_subpic_id_signalling_present_flag u(1) if( sps_subpics_id_signalling_present_flag ) { sps_subpic_id_len_minus1 ue(v) for( i = 0; i <= sps_num_subpics_minus1; i++ ) sps_subpic_id[ i ] u(v) } } bit_depth_minus8 ue(v) min_qp_prime_ts_minus4 ue(v) sps_weighted_pred_flag u(1) sps_weighted_bipred_flag u(1) log2_max_pic_order_cnt_lsb_minus4 u(4) sps_poc_msb_flag u(1) if( sps_poc_msb_flag ) poc_msb_len_minus1 ue(v) if( sps_max_sublayers_minus1 > 0 ) sps_sublayer_dpb_params_flag u(1) if( sps_ptl_dpb_hrd_params_present_flag ) dpb_parameters( 0, sps_max_sublayers_minus1, sps_sublayer_dpb_params_flag ) long_term_ref_pics_flag u(1) inter_layer_ref_pics_present_flag u(1) sps_idr_rpl_present_flag u(1) rpl1_same_as_rpl0_flag u(1) for( i = 0; i < !rpl1_same_as_rpl0_flag ? 2 : 1; i++ ) { num_ref_pic_lists_in_sps[ i ] ue(v) for( j = 0; j < num_ref_pic_lists_in_sps[ i ]; j++) ref_pic_list_struct( i, j ) } if( ChromaArrayType != 0 ) qtbtt_dual_tree_intra_flag u(1) log2_min_luma_coding_block_size_minus2 ue(v) partition_constraints_override_enabled_flag u(1) sps_log2_diff_min_qt_min_cb_intra_slice_luma ue(v) sps_log2_diff_min_qt_min_cb_inter_slice ue(v) sps_max_mtt_hierarchy_depth_inter_slice ue(v) sps_max_mtt_hierarchy_depth_intra_slice_luma ue(v) if( sps_max_mtt_hierarchy_depth_intra_slice_luma != 0 ) { sps_log2_diff_max_bt_min_qt_intra_slice_luma ue(v) sps_log2_diff_max_tt_min_qt_intra_slice_luma ue(v) } if( sps_max_mtt_hierarchy_depth_inter_slice != 0 ) { sps_log2_diff_max_bt_min_qt_inter_slice ue(v) sps_log2_diff_max_tt_min_qt_inter_slice ue(v) } if( qtbtt_dual_tree_intra_flag ) { sps_log2_diff_min_qt_min_cb_intra_slice_chroma ue(v) sps_max_mtt_hierarchy_depth_intra_slice_chroma ue(v) if( sps_max_mtt_hierarchy_depth_intra_slice_chroma != 0 ) { sps_log2_diff_max_bt_min_qt_intra_slice_chroma ue(v) sps_log2_diff_max_tt_min_qt_intra_slice_chroma ue(v) } } sps_max_luma_transform_size_64_flag u(1) sps_joint_cbcr_enabled_flag u(1) if( ChromaArrayType != 0 ) { same_qp_table_for_chroma u(1) numQpTables = same_qp_table_for_chroma ? 1 : ( sps_joint_cbcr_enabled_flag ? 3 : 2 ) for( i = 0; i < numQpTables; i++ ) { qp_table_start_minus26[ i ] se(v) num_points_in_qp_table_minus1[ i ] ue(v) for( j = 0; j <= num_points_in_qp_table_minus1[ i ]; j++ ) { delta_qp_in_val_minus1[ i ][ j ] ue(v) delta_qp_diff_val[ i ][ j ] ue(v) } } } sps_sao_enabled_flag u(1) sps_alf_enabled_flag u(1) if( sps_alf_enabled_flag && ChromaArrayType != 0 ) sps_ccalf_enabled_flag u(1) sps_transform_skip_enabled_flag u(1) if( sps_transform_skip_enabled_flag ) sps_bdpcm_enabled_flag u(1) if( sps_bdpcm_enabled_flag && chroma_format_idc = = 3 ) sps_bdpcm_chroma_enabled_flag u(1) sps_ref_wraparound_enabled_flag u(1) if( sps_ref_wraparound_enabled_flag ) sps_ref_wraparound_offset_minus1 ue(v) sps_temporal_mvp_enabled_flag u(1) if( sps_temporal_mvp_enabled_flag ) sps_sbtmvp_enabled_flag u(1) sps_amvr_enabled_flag u(1) sps_bdof_enabled_flag u(1) if( sps_bdof_enabled_flag ) sps_bdof_pic_present_flag u(1) sps_smvd_enabled_flag u(1) sps_dmvr_enabled_flag u(1) if( sps_dmvr_enabled_flag) sps_dmvr_pic_present_flag u(1) sps_mmvd_enabled_flag u(1) sps_isp_enabled_flag u(1) sps_mrl_enabled_flag u(1) sps_mip_enabled_flag u(1) if( ChromaArrayType != 0 ) sps_cclm_enabled_flag u(1) if( chroma_format_idc = = 1 ) { sps_chroma_horizontal_collocated_flag u(1) sps_chroma_vertical_collocated_flag u(1) } sps_mts_enabled_flag u(1) if( sps_mts_enabled_flag ) { sps_explicit_mts_intra_enabled_flag u(1) sps_explicit_mts_inter_enabled_flag u(1) } sps_sbt_enabled_flag u(1) sps_affine_enabled_flag u(1) if( sps_affine_enabled_flag ) { sps_affine_type_flag u(1) sps_affine_amvr_enabled_flag u(1) sps_affine_prof_enabled_flag u(1) if( sps_affine_prof_enabled_flag ) sps_prof_pic_present_flag u(1) } if( chroma_format_idc = = 3 ) { sps_palette_enabled_flag u(1) sps_act_enabled_flag u(1) } sps_bcw_enabled_flag u(1) sps_ibc_enabled_flag u(1) sps_ciip_enabled_flag u(1) if( sps_mmvd_enabled_flag ) sps_fpel_mmvd_enabled_flag u(1) sps_triangle_enabled_flag u(1) sps_lmcs_enabled_flag u(1) sps_lfnst_enabled_flag u(1) sps_ladf_enabled_flag u(1) if( sps_ladf_enabled_flag ) { sps_num_ladf_intervals_minus2 u(2) sps_ladf_lowest_interval_qp_offset se(v) for( i = 0; i < sps_num_ladf_intervals_minus2 + 1; i++ ) { sps_ladf_qp_offset[ i ] se(v) sps_ladf_delta_threshold_minus1[ i ] ue(v) } } sps_scaling_list_enabled_flag u(1) sps_loop_filter_across_virtual_boundaries_disabled_present_flag u(1) if( sps_loop_filter_across_virtual_boundaries_disabled_present_flag ) { sps_num_ver_virtual_boundaries u(2) for( i = 0; i < sps_num_ver_virtual_boundaries; i++ ) sps_virtual_boundaries_pos_x[ i ] u(13) sps_num_hor_virtual_boundaries u(2) for( i = 0; i < sps_num_hor_virtual_boundaries; i++ ) sps_virtual_boundaries_pos_y[ i ] u(13) } if( sps_ptl_dpb_hrd_params_present_flag ) { sps_general_hrd_params_present_flag u(1) if( sps_general_hrd_params_present_flag ) { general_hrd_parameters( ) if( sps_max_sublayers_minus1 > 0 ) sps_sublayer_cpb_params_present_flag u(1) firstSubLayer = sps_sublayer_cpb_params_present_flag ? 0 :
sps_max_sublayers_minus1
ols_hrd_parameters( firstSubLayer, sps_max_sublayers_minus1 ) } } field_seq_flag u(1) vui_parameters_present_flag u(1) if( vui_parameters_present_flag ) vui_parameters( ) /* Specified in ITU-T H.SEI | ISO/IEC 23002-7 */ sps_extension_flag u(1) if( sps_extension_flag ) while( more_rbsp_data( ) ) sps_extension_data_flag u(1) rbsp_trailing_bits( ) }

Как видно из приведенной выше таблицы, второй синтаксический элемент sps_ccalf_enabled_flag предоставляется в зависимости от значения первого синтаксического элемента sps_alf_enabled_flag и, необязательно, в зависимости от четырнадцатого синтаксического элемента, такого как ChromaArrayType. В частности, второй синтаксический элемент может, в некоторых вариантах осуществления, сигнализироваться, если четырнадцатый синтаксический элемент принимает значение, отличное от нуля.

7.3.2.3 Синтаксис RBSP набора параметров последовательности

seq_parameter_set_rbsp( ) { Дескриптор …… sps_alf_enabled_flag u(1) if(sps_alf_enabled_flag && ChromaArrayType != 0 ) sps_ccalf_enabled_flag u(1) …….

Примечания: ChromaArrayType != 0, то есть это не компонент яркости, а компонент цветности Cb, Cr.

ChromaArrayType указывает выборку цветности относительно выборки яркости, как указано в следующей таблице.

ChromaArrayType Формат цветности 0 Монохромный 1 4:2:0 2 4:2:2 3 4:4:4

В монохромной выборке есть только один массив выборок, который номинально считается массивом яркости.

В выборке 4:2:0 каждый из двух массивов цветности имеет половину высоты и половину ширины массива яркости.

В выборке 4:2:2 каждый из двух массивов цветности имеет аналогичную высоту и половину ширины массива яркости.

При выборке 4:4:4 каждый из двух массивов цветности имеет ту же высоту и ширину, что и массив яркости.

Как показано в приведенной выше таблице, второй синтаксический элемент предоставляется, если первый синтаксический элемент указывает «истина», то есть в случае, когда первый синтаксический элемент представляет собой sps_alf_enabled_flag и указывает, что ALF должен быть включен. Кроме того, второй синтаксический элемент предоставляется, если четырнадцатый синтаксический элемент имеет значение, не равное 0.

1.1.1.1 Синтаксис RBSP набора параметров последовательности

seq_parameter_set_rbsp( ) { Дескриптор sps_decoding_parameter_set_id u(4) sps_video_parameter_set_id u(4) sps_max_sublayers_minus1 u(3) sps_reserved_zero_4bits u(4) sps_ptl_dpb_hrd_params_present_flag u(1) if( sps_ptl_dpb_hrd_params_present_flag ) profile_tier_level( 1, sps_max_sublayers_minus1 ) gdr_enabled_flag u(1) sps_seq_parameter_set_id u(4) chroma_format_idc u(2) if( chroma_format_idc = = 3 ) separate_colour_plane_flag u(1) ref_pic_resampling_enabled_flag u(1) pic_width_max_in_luma_samples ue(v) pic_height_max_in_luma_samples ue(v) sps_log2_ctu_size_minus5 u(2) subpics_present_flag u(1) if( subpics_present_flag ) { sps_num_subpics_minus1 u(8) for( i = 0; i <= sps_num_subpics_minus1; i++ ) { subpic_ctu_top_left_x[ i ] u(v) subpic_ctu_top_left_y[ i ] u(v) subpic_width_minus1[ i ] u(v) subpic_height_minus1[ i ] u(v) subpic_treated_as_pic_flag[ i ] u(1) loop_filter_across_subpic_enabled_flag[ i ] u(1) } } sps_subpic_id_present_flag u(1) if( sps_subpics_id_present_flag ) { sps_subpic_id_signalling_present_flag u(1) if( sps_subpics_id_signalling_present_flag ) { sps_subpic_id_len_minus1 ue(v) for( i = 0; i <= sps_num_subpics_minus1; i++ ) sps_subpic_id[ i ] u(v) } } bit_depth_minus8 ue(v) min_qp_prime_ts_minus4 ue(v) sps_weighted_pred_flag u(1) sps_weighted_bipred_flag u(1) log2_max_pic_order_cnt_lsb_minus4 u(4) sps_poc_msb_flag u(1) if( sps_poc_msb_flag ) poc_msb_len_minus1 ue(v) if( sps_max_sublayers_minus1 > 0 ) sps_sublayer_dpb_params_flag u(1) if( sps_ptl_dpb_hrd_params_present_flag ) dpb_parameters( 0, sps_max_sublayers_minus1, sps_sublayer_dpb_params_flag ) long_term_ref_pics_flag u(1) inter_layer_ref_pics_present_flag u(1) sps_idr_rpl_present_flag u(1) rpl1_same_as_rpl0_flag u(1) for( i = 0; i < !rpl1_same_as_rpl0_flag ? 2 : 1; i++ ) { num_ref_pic_lists_in_sps[ i ] ue(v) for( j = 0; j < num_ref_pic_lists_in_sps[ i ]; j++) ref_pic_list_struct( i, j ) } if( ChromaArrayType != 0 ) qtbtt_dual_tree_intra_flag u(1) log2_min_luma_coding_block_size_minus2 ue(v) partition_constraints_override_enabled_flag u(1) sps_log2_diff_min_qt_min_cb_intra_slice_luma ue(v) sps_log2_diff_min_qt_min_cb_inter_slice ue(v) sps_max_mtt_hierarchy_depth_inter_slice ue(v) sps_max_mtt_hierarchy_depth_intra_slice_luma ue(v) if( sps_max_mtt_hierarchy_depth_intra_slice_luma != 0 ) { sps_log2_diff_max_bt_min_qt_intra_slice_luma ue(v) sps_log2_diff_max_tt_min_qt_intra_slice_luma ue(v) } if( sps_max_mtt_hierarchy_depth_inter_slice != 0 ) { sps_log2_diff_max_bt_min_qt_inter_slice ue(v) sps_log2_diff_max_tt_min_qt_inter_slice ue(v) } if( qtbtt_dual_tree_intra_flag ) { sps_log2_diff_min_qt_min_cb_intra_slice_chroma ue(v) sps_max_mtt_hierarchy_depth_intra_slice_chroma ue(v) if( sps_max_mtt_hierarchy_depth_intra_slice_chroma != 0 ) { sps_log2_diff_max_bt_min_qt_intra_slice_chroma ue(v) sps_log2_diff_max_tt_min_qt_intra_slice_chroma ue(v) } } sps_max_luma_transform_size_64_flag u(1) sps_joint_cbcr_enabled_flag u(1) if( ChromaArrayType != 0 ) { same_qp_table_for_chroma u(1) numQpTables = same_qp_table_for_chroma ? 1 : ( sps_joint_cbcr_enabled_flag ? 3 : 2 ) for( i = 0; i < numQpTables; i++ ) { qp_table_start_minus26[ i ] se(v) num_points_in_qp_table_minus1[ i ] ue(v) for( j = 0; j <= num_points_in_qp_table_minus1[ i ]; j++ ) { delta_qp_in_val_minus1[ i ][ j ] ue(v) delta_qp_diff_val[ i ][ j ] ue(v) } } } sps_sao_enabled_flag u(1) sps_alf_enabled_flag u(1) if( sps_alf_enabled_flag && ChromaArrayType != 0 ) sps_ccalf_enabled_flag u(1) sps_transform_skip_enabled_flag u(1) if( sps_transform_skip_enabled_flag ) sps_bdpcm_enabled_flag u(1) if( sps_bdpcm_enabled_flag && chroma_format_idc = = 3 ) sps_bdpcm_chroma_enabled_flag u(1) sps_ref_wraparound_enabled_flag u(1) if( sps_ref_wraparound_enabled_flag ) sps_ref_wraparound_offset_minus1 ue(v) sps_temporal_mvp_enabled_flag u(1) if( sps_temporal_mvp_enabled_flag ) sps_sbtmvp_enabled_flag u(1) sps_amvr_enabled_flag u(1) sps_bdof_enabled_flag u(1) if( sps_bdof_enabled_flag ) sps_bdof_pic_present_flag u(1) sps_smvd_enabled_flag u(1) sps_dmvr_enabled_flag u(1) if( sps_dmvr_enabled_flag) sps_dmvr_pic_present_flag u(1) sps_mmvd_enabled_flag u(1) sps_isp_enabled_flag u(1) sps_mrl_enabled_flag u(1) sps_mip_enabled_flag u(1) if( ChromaArrayType != 0 ) sps_cclm_enabled_flag u(1) if( chroma_format_idc = = 1 ) { sps_chroma_horizontal_collocated_flag u(1) sps_chroma_vertical_collocated_flag u(1) } sps_mts_enabled_flag u(1) if( sps_mts_enabled_flag ) { sps_explicit_mts_intra_enabled_flag u(1) sps_explicit_mts_inter_enabled_flag u(1) } sps_sbt_enabled_flag u(1) sps_affine_enabled_flag u(1) if( sps_affine_enabled_flag ) { sps_affine_type_flag u(1) sps_affine_amvr_enabled_flag u(1) sps_affine_prof_enabled_flag u(1) if( sps_affine_prof_enabled_flag ) sps_prof_pic_present_flag u(1) } if( chroma_format_idc = = 3 ) { sps_palette_enabled_flag u(1) sps_act_enabled_flag u(1) } sps_bcw_enabled_flag u(1) sps_ibc_enabled_flag u(1) sps_ciip_enabled_flag u(1) if( sps_mmvd_enabled_flag ) sps_fpel_mmvd_enabled_flag u(1) sps_triangle_enabled_flag u(1) sps_lmcs_enabled_flag u(1) sps_lfnst_enabled_flag u(1) sps_ladf_enabled_flag u(1) if( sps_ladf_enabled_flag ) { sps_num_ladf_intervals_minus2 u(2) sps_ladf_lowest_interval_qp_offset se(v) for( i = 0; i < sps_num_ladf_intervals_minus2 + 1; i++ ) { sps_ladf_qp_offset[ i ] se(v) sps_ladf_delta_threshold_minus1[ i ] ue(v) } } sps_scaling_list_enabled_flag u(1) sps_loop_filter_across_virtual_boundaries_disabled_present_flag u(1) if( sps_loop_filter_across_virtual_boundaries_disabled_present_flag ) { sps_num_ver_virtual_boundaries u(2) for( i = 0; i < sps_num_ver_virtual_boundaries; i++ ) sps_virtual_boundaries_pos_x[ i ] u(13) sps_num_hor_virtual_boundaries u(2) for( i = 0; i < sps_num_hor_virtual_boundaries; i++ ) sps_virtual_boundaries_pos_y[ i ] u(13) } if( sps_ptl_dpb_hrd_params_present_flag ) { sps_general_hrd_params_present_flag u(1) if( sps_general_hrd_params_present_flag ) { general_hrd_parameters( ) if( sps_max_sublayers_minus1 > 0 ) sps_sublayer_cpb_params_present_flag u(1) firstSubLayer = sps_sublayer_cpb_params_present_flag ? 0 :
sps_max_sublayers_minus1
ols_hrd_parameters( firstSubLayer, sps_max_sublayers_minus1 ) } } field_seq_flag u(1) vui_parameters_present_flag u(1) if( vui_parameters_present_flag ) vui_parameters( ) /* Specified in ITU-T H.SEI | ISO/IEC 23002-7 */ sps_extension_flag u(1) if( sps_extension_flag ) while( more_rbsp_data( ) ) sps_extension_data_flag u(1) rbsp_trailing_bits( ) }

1.1.1.2 Синтаксис RBSP набора параметров изображения

pic_parameter_set_rbsp( ) { Дескриптор pps_pic_parameter_set_id ue(v) pps_seq_parameter_set_id u(4) pic_width_in_luma_samples ue(v) pic_height_in_luma_samples ue(v) conformance_window_flag u(1) if( conformance_window_flag ) { conf_win_left_offset ue(v) conf_win_right_offset ue(v) conf_win_top_offset ue(v) conf_win_bottom_offset ue(v) } scaling_window_flag u(1) if( scaling_window_flag ) { scaling_win_left_offset ue(v) scaling_win_right_offset ue(v) scaling_win_top_offset ue(v) scaling_win_bottom_offset ue(v) } output_flag_present_flag u(1) mixed_nalu_types_in_pic_flag u(1) pps_subpic_id_signalling_present_flag u(1) if( pps_subpics_id_signalling_present_flag ) { pps_num_subpics_minus1 ue(v) pps_subpic_id_len_minus1 ue(v) for( i = 0; i <= pps_num_subpic_minus1; i++ ) pps_subpic_id[ i ] u(v) } no_pic_partition_flag u(1) if( !no_pic_partition_flag ) { pps_log2_ctu_size_minus5 u(2) num_exp_tile_columns_minus1 ue(v) num_exp_tile_rows_minus1 ue(v) for( i = 0; i <= num_exp_tile_columns_minus1; i++ ) tile_column_width_minus1[ i ] ue(v) for( i = 0; i <= num_exp_tile_rows_minus1; i++ ) tile_row_height_minus1[ i ] ue(v) rect_slice_flag u(1) if( rect_slice_flag ) single_slice_per_subpic_flag u(1) if( rect_slice_flag && !single_slice_per_subpic_flag ) { num_slices_in_pic_minus1 ue(v) tile_idx_delta_present_flag u(1) for( i = 0; i < num_slices_in_pic_minus1; i++ ) { slice_width_in_tiles_minus1[ i ] ue(v) slice_height_in_tiles_minus1[ i ] ue(v) if( slice_width_in_tiles_minus1[ i ] = = 0 &&
slice_height_in_tiles_minus1[ i ] = = 0 ) {
num_slices_in_tile_minus1[ i ] ue(v) numSlicesInTileMinus1 = num_slices_in_tile_minus1[ i ] for( j = 0; j < numSlicesInTileMinus1; j++ ) slice_height_in_ctu_minus1[ i++ ] ue(v) } if( tile_idx_delta_present_flag && i < num_slices_in_pic_minus1 ) tile_idx_delta[ i ] se(v) } } loop_filter_across_tiles_enabled_flag u(1) loop_filter_across_slices_enabled_flag u(1) } entropy_coding_sync_enabled_flag u(1) if( !no_pic_partition_flag | | entropy_coding_sync_enabled_flag ) entry_point_offsets_present_flag u(1) cabac_init_present_flag u(1) for( i = 0; i < 2; i++ ) num_ref_idx_default_active_minus1[ i ] ue(v) rpl1_idx_present_flag u(1) init_qp_minus26 se(v) log2_transform_skip_max_size_minus2 ue(v) cu_qp_delta_enabled_flag u(1) pps_cb_qp_offset se(v) pps_cr_qp_offset se(v) pps_joint_cbcr_qp_offset_present_flag u(1) if( pps_joint_cbcr_qp_offset_present_flag ) pps_joint_cbcr_qp_offset_value se(v) pps_slice_chroma_qp_offsets_present_flag u(1) pps_cu_chroma_qp_offset_list_enabled_flag u(1) if( pps_cu_chroma_qp_offset_list_enabled_flag ) { chroma_qp_offset_list_len_minus1 ue(v) for( i = 0; i <= chroma_qp_offset_list_len_minus1; i++ ) { cb_qp_offset_list[ i ] se(v) cr_qp_offset_list[ i ] se(v) if( pps_joint_cbcr_qp_offset_present_flag ) joint_cbcr_qp_offset_list[ i ] se(v) } } pps_weighted_pred_flag u(1) pps_weighted_bipred_flag u(1) alf_present_in_ph_flag u(1) deblocking_filter_control_present_flag u(1) if( deblocking_filter_control_present_flag ) { deblocking_filter_override_enabled_flag u(1) pps_deblocking_filter_disabled_flag u(1) if( !pps_deblocking_filter_disabled_flag ) { pps_beta_offset_div2 se(v) pps_tc_offset_div2 se(v) } } constant_slice_header_params_enabled_flag u(1) if( constant_slice_header_params_enabled_flag ) { pps_dep_quant_enabled_idc u(2) for( i = 0; i < 2; i++ ) pps_ref_pic_list_sps_idc[ i ] u(2) pps_mvd_l1_zero_idc u(2) pps_collocated_from_l0_idc u(2) pps_six_minus_max_num_merge_cand_plus1 ue(v) pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 ue(v) } picture_header_extension_present_flag u(1) slice_header_extension_present_flag u(1) pps_extension_flag u(1) if( pps_extension_flag ) while( more_rbsp_data( ) ) pps_extension_data_flag u(1) rbsp_trailing_bits( ) }

Общий синтаксис информации об ограничениях

general_constraint_info( ) { Дескриптор general_progressive_source_flag u(1) general_interlaced_source_flag u(1) general_non_packed_constraint_flag u(1) general_frame_only_constraint_flag u(1) intra_only_constraint_flag u(1) max_bitdepth_constraint_idc u(4) max_chroma_format_constraint_idc u(2) frame_only_constraint_flag u(1) no_qtbtt_dual_tree_intra_constraint_flag u(1) no_partition_constraints_override_constraint_flag u(1) no_sao_constraint_flag u(1) no_alf_constraint_flag u(1) no_ccalf_constraint_flag u(1) no_joint_cbcr_constraint_flag u(1) no_ref_wraparound_constraint_flag u(1) no_temporal_mvp_constraint_flag u(1) no_sbtmvp_constraint_flag u(1) no_amvr_constraint_flag u(1) no_bdof_constraint_flag u(1) no_dmvr_constraint_flag u(1) no_cclm_constraint_flag u(1) no_mts_constraint_flag u(1) no_sbt_constraint_flag u(1) no_affine_motion_constraint_flag u(1) no_bcw_constraint_flag u(1) no_ibc_constraint_flag u(1) no_ciip_constraint_flag u(1) no_fpel_mmvd_constraint_flag u(1) no_triangle_constraint_flag u(1) no_ladf_constraint_flag u(1) no_transform_skip_constraint_flag u(1) no_bdpcm_constraint_flag u(1) no_qp_delta_constraint_flag u(1) no_dep_quant_constraint_flag u(1) no_sign_data_hiding_constraint_flag u(1) no_mixed_nalu_types_in_pic_constraint_flag u(1) no_trail_constraint_flag u(1) no_stsa_constraint_flag u(1) no_rasl_constraint_flag u(1) no_radl_constraint_flag u(1) no_idr_constraint_flag u(1) no_cra_constraint_flag u(1) no_gdr_constraint_flag u(1) no_aps_constraint_flag u(1) while( !byte_aligned( ) ) gci_alignment_zero_bit f(1) num_reserved_constraint_bytes u(8) for( i = 0; i < num_reserved_constraint_bytes; i++ ) gci_reserved_constraint_byte[ i ] u(8) }

7.3.3.2 Общий синтаксис информации об ограничениях

general_constraint_info( ) { Дескриптор …. no_alf_constraint_flag u(1) if (!no_alf_constraint_flag) no_ccalf_constraint_flag u(1)

ПРИМЕЧАНИЯ:

!(0)=1

!(1)=0

7.3.2.4 Синтаксис RBSP набора параметров изображения

Синтаксис RBSP заголовка изображения

picture_header_rbsp( ) { Дескриптор non_reference_picture_flag u(1) gdr_pic_flag u(1) no_output_of_prior_pics_flag u(1) if( gdr_pic_flag ) recovery_poc_cnt ue(v) ph_pic_parameter_set_id ue(v) if( sps_poc_msb_flag ) { ph_poc_msb_present_flag u(1) if( ph_poc_msb_present_flag ) poc_msb_val u(v) } if( sps_subpic_id_present_flag && !sps_subpic_id_signalling_flag ) { ph_subpic_id_signalling_present_flag u(1) if( ph_subpics_id_signalling_present_flag ) { ph_subpic_id_len_minus1 ue(v) for( i = 0; i <= sps_num_subpics_minus1; i++ ) ph_subpic_id[ i ] u(v) } } if( !sps_loop_filter_across_virtual_boundaries_disabled_present_flag ) { ph_loop_filter_across_virtual_boundaries_disabled_present_flag u(1) if( ph_loop_filter_across_virtual_boundaries_disabled_present_flag ) { ph_num_ver_virtual_boundaries u(2) for( i = 0; i < ph_num_ver_virtual_boundaries; i++ ) ph_virtual_boundaries_pos_x[ i ] u(13) ph_num_hor_virtual_boundaries u(2) for( i = 0; i < ph_num_hor_virtual_boundaries; i++ ) ph_virtual_boundaries_pos_y[ i ] u(13) } } if( separate_colour_plane_flag = = 1 ) colour_plane_id u(2) if( output_flag_present_flag ) pic_output_flag u(1) pic_rpl_present_flag u(1) if( pic_rpl_present_flag ) { for( i = 0; i < 2; i++ ) { if( num_ref_pic_lists_in_sps[ i ] > 0 && !pps_ref_pic_list_sps_idc[ i ] &&
( i = = 0 | | ( i = = 1 && rpl1_idx_present_flag ) ) )
pic_rpl_sps_flag[ i ] u(1) if( pic_rpl_sps_flag[ i ] ) { if( num_ref_pic_lists_in_sps[ i ] > 1 &&
( i = = 0 | | ( i = = 1 && rpl1_idx_present_flag ) ) )
pic_rpl_idx[ i ] u(v) } else ref_pic_list_struct( i, num_ref_pic_lists_in_sps[ i ] ) for( j = 0; j < NumLtrpEntries[ i ][ RplsIdx[ i ] ]; j++ ) { if( ltrp_in_slice_header_flag[ i ][ RplsIdx[ i ] ] ) pic_poc_lsb_lt[ i ][ j ] u(v) pic_delta_poc_msb_present_flag[ i ][ j ] u(1) if( pic_delta_poc_msb_present_flag[ i ][ j ] ) pic_delta_poc_msb_cycle_lt[ i ][ j ] ue(v) } } } if( partition_constraints_override_enabled_flag ) { partition_constraints_override_flag u(1) if( partition_constraints_override_flag ) { pic_log2_diff_min_qt_min_cb_intra_slice_luma ue(v) pic_log2_diff_min_qt_min_cb_inter_slice ue(v) pic_max_mtt_hierarchy_depth_inter_slice ue(v) pic_max_mtt_hierarchy_depth_intra_slice_luma ue(v) if( pic_max_mtt_hierarchy_depth_intra_slice_luma != 0 ) { pic_log2_diff_max_bt_min_qt_intra_slice_luma ue(v) pic_log2_diff_max_tt_min_qt_intra_slice_luma ue(v) } if( pic_max_mtt_hierarchy_depth_inter_slice != 0 ) { pic_log2_diff_max_bt_min_qt_inter_slice ue(v) pic_log2_diff_max_tt_min_qt_inter_slice ue(v) } if( qtbtt_dual_tree_intra_flag ) { pic_log2_diff_min_qt_min_cb_intra_slice_chroma ue(v) pic_max_mtt_hierarchy_depth_intra_slice_chroma ue(v) if( pic_max_mtt_hierarchy_depth_intra_slice_chroma != 0 ) { pic_log2_diff_max_bt_min_qt_intra_slice_chroma ue(v) pic_log2_diff_max_tt_min_qt_intra_slice_chroma ue(v) } } } } if( cu_qp_delta_enabled_flag ) { pic_cu_qp_delta_subdiv_intra_slice ue(v) pic_cu_qp_delta_subdiv_inter_slice ue(v) } if( pps_cu_chroma_qp_offset_list_enabled_flag ) { pic_cu_chroma_qp_offset_subdiv_intra_slice ue(v) pic_cu_chroma_qp_offset_subdiv_inter_slice ue(v) } if( sps_temporal_mvp_enabled_flag ) pic_temporal_mvp_enabled_flag u(1) if(!pps_mvd_l1_zero_idc ) mvd_l1_zero_flag u(1) if( !pps_six_minus_max_num_merge_cand_plus1 ) pic_six_minus_max_num_merge_cand ue(v) if( sps_affine_enabled_flag ) pic_five_minus_max_num_subblock_merge_cand ue(v) if( sps_fpel_mmvd_enabled_flag ) pic_fpel_mmvd_enabled_flag u(1) if( sps_bdof_pic_present_flag ) pic_disable_bdof_flag u(1) if( sps_dmvr_pic_present_flag ) pic_disable_dmvr_flag u(1) if( sps_prof_pic_present_flag ) pic_disable_prof_flag u(1) if( sps_triangle_enabled_flag && MaxNumMergeCand >= 2 &&
!pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 )
pic_max_num_merge_cand_minus_max_num_triangle_cand ue(v) if ( sps_ibc_enabled_flag ) pic_six_minus_max_num_ibc_merge_cand ue(v) if( sps_joint_cbcr_enabled_flag ) pic_joint_cbcr_sign_flag u(1) if( sps_sao_enabled_flag ) { pic_sao_enabled_present_flag u(1) if( pic_sao_enabled_present_flag ) { pic_sao_luma_enabled_flag u(1) if(ChromaArrayType != 0 ) pic_sao_chroma_enabled_flag u(1) } } if( sps_alf_enabled_flag && alf_present_in_ph_flag ) { pic_alf_enabled_present_flag u(1) if( pic_alf_enabled_present_flag ) { pic_alf_enabled_flag u(1) if( pic_alf_enabled_flag ) { pic_num_alf_aps_ids_luma u(3) for( i = 0; i < pic_num_alf_aps_ids_luma; i++ ) pic_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) pic_alf_chroma_idc u(2) if( pic_alf_chroma_idc ) pic_alf_aps_id_chroma u(3) } if( ChromaArrayType != 0 ) if (sps_ccalf_enabled_flag) { pic_cross_component_alf_cb_enabled_flag u(1) if( pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_alf_cb_aps_id u(3) pic_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 )
pic_cross_component_alf_cr_enabled_flag
u(1)
if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_alf_cr_aps_id u(3) pic_cross_component_cr_filters_signalled_minus1 ue(v) } } } } if ( !pps_dep_quant_enabled_flag ) pic_dep_quant_enabled_flag u(1) if( !pic_dep_quant_enabled_flag ) sign_data_hiding_enabled_flag u(1) if( deblocking_filter_override_enabled_flag ) { pic_deblocking_filter_override_present_flag u(1) if( pic_deblocking_filter_override_present_flag ) { pic_deblocking_filter_override_flag u(1) if( pic_deblocking_filter_override_flag ) { pic_deblocking_filter_disabled_flag u(1) if( !pic_deblocking_filter_disabled_flag ) { pic_beta_offset_div2 se(v) pic_tc_offset_div2 se(v) } } } } if( sps_lmcs_enabled_flag ) { pic_lmcs_enabled_flag u(1) if( pic_lmcs_enabled_flag ) { pic_lmcs_aps_id u(2) if( ChromaArrayType != 0 ) pic_chroma_residual_scale_flag u(1) } } if( sps_scaling_list_enabled_flag ) { pic_scaling_list_present_flag u(1) if( pic_scaling_list_present_flag ) pic_scaling_list_aps_id u(3) } if( picture_header_extension_present_flag ) { ph_extension_length ue(v) for( i = 0; i < ph_extension_length; i++) ph_extension_data_byte[ i ] u(8) } rbsp_trailing_bits( ) }

pic_parameter_set_rbsp( ) { Дескриптор …. if (sps_alf_enabled_flag) alf_present_in_ph_flag u(1) deblocking_filter_control_present_flag u(1) if( deblocking_filter_control_present_flag ) { …….

alf_present_in_ph_flag, равный 1, указывает синтаксические элементы для включения ALF, которые могут присутствовать в PH (заголовках изображений), относящихся к PPS. alf_present_in_ph_flag, равный 0, указывает, что синтаксические элементы для включения ALF могут присутствовать в заголовках слайсов, относящихся к PPS.

7.3.2.6 Синтаксис RBSP заголовка изображения

picture_header_rbsp( ) { Дескриптор …….. if( sps_alf_enabled_flag && alf_present_in_ph_flag) { pic_alf_enabled_flag u(1) if( pic_alf_enabled_flag ) { pic_num_alf_aps_ids_luma u(3) for( i = 0; i < pic_num_alf_aps_ids_luma; i++ ) pic_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) pic_alf_chroma_idc u(2) if( pic_alf_chroma_idc ) pic_alf_aps_id_chroma u(3) if( sps_ccalf_enabled_flag ) { pic_cross_component_alf_cb_enabled_flag u(1) if( pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_alf_cb_aps_id u(3) } pic_cross_component_alf_cr_enabled_flag u(1) if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_alf_cr_aps_id u(3) } } /* end of sps_ccalf_enabled_flag */ } /* end of pic_alf_enabled_flag */ } /* end of (sps_alf_enabled_flag && alf_present_in_ph_flag) */ ……

Как показано в приведенной выше таблице, наличие дополнительных синтаксических элементов, относящихся к CCALF, в заголовке изображения, таких как четвертый синтаксический элемент (например, pic_cross_component_alf_cb_enabled_flag) и седьмой синтаксический элемент (например, pic_cross_component_alf_cr_enabled_flag), может зависеть от присутствия и/ или значение второго синтаксического элемента. Наличие пятого синтаксического элемента, такого как pic_cross_component_alf_cb_aps_id, может затем зависеть от второго синтаксического элемента и/или наличия и/или значения четвертого синтаксического элемента, тогда как присутствие и/или значение восьмого синтаксического элемента, такого как pic_cross_component_alf_cr_aps_id, может зависеть о наличии и/или значении второго синтаксического элемента и/или наличии и/или значении седьмого синтаксического элемента.

7.3.7.1 Общий синтаксис заголовка слайса

slice_header( ) { Дескриптор ……. if( sps_alf_enabled_flag && !alf_present_in_ph_flag) { slice_alf_enabled_flag u(1) if( slice_alf_enabled_flag ) { slice_num_alf_aps_ids_luma u(3) for( i = 0; i < slice_num_alf_aps_ids_luma; i++ ) slice_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) slice_alf_chroma_idc u(2) if( slice_alf_chroma_idc ) slice_alf_aps_id_chroma u(3) if( sps_ccalf_enabled_flag) { slice_cross_component_alf_cb_enabled_flag u(1) if( slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_alf_cb_aps_id u(3) } slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_alf_cr_aps_id u(3) } } /* end of sps_ccalf_enabled_flag */ } /* end of slice_alf_enabled_flag */ } /* end of (sps_alf_enabled_flag && !alf_present_in_ph_flag) */ …..

В приведенной выше таблице дополнительные синтаксические элементы, относящиеся к CCALF, могут дополнительно зависеть от наличия и/или значения второго синтаксического элемента. Например, десятый синтаксический элемент, такой как slice_cross_component_alf_cb_enabled_flag, может быть предоставлен в зависимости от второго синтаксического элемента. В зависимости от наличия и/или значения этого десятого синтаксического элемента и/или второго синтаксического элемента может быть предоставлен одиннадцатый синтаксический элемент, такой как slice_cross_component_alf_cb_aps_id. Кроме того, в заголовке слайса может быть предусмотрен двенадцатый синтаксический элемент, такой как slice_cross_component_alf_cr_enabled_flag, в зависимости от значения второго синтаксического элемента. В зависимости от наличия и/или значения двенадцатого синтаксического элемента и/или в зависимости от второго синтаксического элемента в заголовке слайса может быть предусмотрен тринадцатый синтаксический элемент, такой как slice_cross_component_alf_cr_aps_id.

ПРИМЕЧАНИЯ:

!(0)=1

!(1)=0

if(sps_alf_enabled_flag && !alf_present_in_ph_flag) означает «если sps_alf_enabled_flag равен true (и) если alf_present_in_ph_flag равен false)»

Синтаксис заголовка слайса

Общий синтаксис заголовка слайса.

slice_header( ) { Дескриптор slice_pic_order_cnt_lsb u(v) if( subpics_present_flag ) slice_subpic_id u(v) if( rect_slice_flag | | NumTilesInPic > 1 ) slice_address u(v) if( !rect_slice_flag && NumTilesInPic > 1 ) num_tiles_in_slice_minus1 ue(v) slice_type ue(v) if( !pic_rpl_present_flag &&( ( nal_unit_type != IDR_W_RADL && nal_unit_type !=
IDR_N_LP ) | | sps_idr_rpl_present_flag ) ) {
for( i = 0; i < 2; i++ ) { if( num_ref_pic_lists_in_sps[ i ] > 0 && !pps_ref_pic_list_sps_idc[ i ] &&
( i = = 0 | | ( i = = 1 && rpl1_idx_present_flag ) ) )
slice_rpl_sps_flag[ i ] u(1) if( slice_rpl_sps_flag[ i ] ) { if( num_ref_pic_lists_in_sps[ i ] > 1 && ( i = = 0 | | ( i = = 1 && rpl1_idx_present_flag ) ) ) slice_rpl_idx[ i ] u(v) } else ref_pic_list_struct( i, num_ref_pic_lists_in_sps[ i ] ) for( j = 0; j < NumLtrpEntries[ i ][ RplsIdx[ i ] ]; j++ ) { if( ltrp_in_slice_header_flag[ i ][ RplsIdx[ i ] ] ) slice_poc_lsb_lt[ i ][ j ] u(v) slice_delta_poc_msb_present_flag[ i ][ j ] u(1) if( slice_delta_poc_msb_present_flag[ i ][ j ] ) slice_delta_poc_msb_cycle_lt[ i ][ j ] ue(v) } } } if( pic_rpl_present_flag | | ( ( nal_unit_type != IDR_W_RADL && nal_unit_type !=
IDR_N_LP ) | | sps_idr_rpl_present_flag ) ) {
if( ( slice_type != I && num_ref_entries[ 0 ][ RplsIdx[ 0 ] ] > 1 ) | |
( slice_type = = B && num_ref_entries[ 1 ][ RplsIdx[ 1 ] ] > 1 ) ) {
num_ref_idx_active_override_flag u(1) if( num_ref_idx_active_override_flag ) for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ ) if( num_ref_entries[ i ][ RplsIdx[ i ] ] > 1 ) num_ref_idx_active_minus1[ i ] ue(v) } } if( slice_type != I ) { if( cabac_init_present_flag ) cabac_init_flag u(1) if( pic_temporal_mvp_enabled_flag ) { if( slice_type = = B && !pps_collocated_from_l0_idc ) collocated_from_l0_flag u(1) if( ( collocated_from_l0_flag && NumRefIdxActive[ 0 ] > 1 ) | |
( !collocated_from_l0_flag && NumRefIdxActive[ 1 ] > 1 ) )
collocated_ref_idx ue(v) } if( ( pps_weighted_pred_flag && slice_type = = P ) | |
( pps_weighted_bipred_flag && slice_type = = B ) )
pred_weight_table( ) } slice_qp_delta se(v) if( pps_slice_chroma_qp_offsets_present_flag ) { slice_cb_qp_offset se(v) slice_cr_qp_offset se(v) if( sps_joint_cbcr_enabled_flag ) slice_joint_cbcr_qp_offset se(v) } if( pps_cu_chroma_qp_offset_list_enabled_flag ) cu_chroma_qp_offset_enabled_flag u(1) if( sps_sao_enabled_flag && !pic_sao_enabled_present_flag ) { slice_sao_luma_flag u(1) if( ChromaArrayType != 0 ) slice_sao_chroma_flag u(1) } if( sps_alf_enabled_flag && !alf_present_in_ph_flag pic_alf_enabled_present_flag ) { slice_alf_enabled_flag u(1) if( slice_alf_enabled_flag ) { slice_num_alf_aps_ids_luma u(3) for( i = 0; i < slice_num_alf_aps_ids_luma; i++ ) slice_alf_aps_id_luma[ i ] u(3) if( ChromaArrayType != 0 ) slice_alf_chroma_idc u(2) if( slice_alf_chroma_idc ) slice_alf_aps_id_chroma u(3) } if (sps_ccalf_enabled_flag) { if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if( slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_alf_cb_aps_id u(3) slice_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_alf_cr_aps_id u(3) slice_cross_component_cr_filters_signalled_minus1 ue(v) } } } } if( deblocking_filter_override_enabled_flag &&
!pic_deblocking_filter_override_present_flag )
slice_deblocking_filter_override_flag u(1) if( slice_deblocking_filter_override_flag ) { slice_deblocking_filter_disabled_flag u(1) if( !slice_deblocking_filter_disabled_flag ) { slice_beta_offset_div2 se(v) slice_tc_offset_div2 se(v) } } if( entry_point_offsets_present_flag && NumEntryPoints > 0 ) { offset_len_minus1 ue(v) for( i = 0; i < NumEntryPoints; i++ ) entry_point_offset_minus1[ i ] u(v) } if( slice_header_extension_present_flag ) { slice_header_extension_length ue(v) for( i = 0; i < slice_header_extension_length; i++) slice_header_extension_data_byte[ i ] u(8) } byte_alignment( ) }

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

Аналогично, синтаксические элементы, такие как slice_cross_component_cr_filters_signalled_minus1 и slice_cross_component_cb_filters_signalled_minus1, могут вообще не предоставляться (независимо от того, будет ли присутствовать такой синтаксический элемент, как ChromaArrayType).

Семантика вновь введенных синтаксических элементов следующая:

Значение второго синтаксического элемента, например (sps_ccalf_enabled_flag), равное 0, указывает, что межкомпонентный адаптивный контурный фильтр отключен. Значение первого синтаксического элемента, равное 1, указывает, что межкомпонентный адаптивный контурный фильтр включен. Это также может иметь обратное значение, т.е. если второй синтаксический элемент имеет значение, равное 1, CCALF может быть отключен, тогда как, если второй синтаксический элемент имеет значение, равное 0, CCALF может быть включен.

Значение no_ccalf_constraint_flag, равное 1, указывает, что первый синтаксический элемент (например, sps_ccalf_enabled_flag) должен быть равен 0. Значение no_ccalf_constraint_flag, равное 0, не накладывает такого ограничения.

В вариантах осуществления процесс фильтрации подробно представлен ниже.

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

8.8 Процесс внутриконтурной фильтрации

8.8.1 Общие положения

……

4. Когда первый синтаксический элемент (обозначенный выше как sps_alf_enabled_flag) равен 1, применяется следующее:

Когда второй синтаксический элемент (например, sps_ccalf_enabled_flag) равен 1, массив восстановленных выборок изображения (до адаптивного контурного фильтра) SL' устанавливается равным массиву восстановленных выборок изображений SL.

Процесс адаптивной контурный фильтрации, как указано в пункте 8.8.5.1, вызывается с массивом восcтановленных выборок изображения SL, и, когда четырнадцатый синтаксический элемент (в приведенных выше таблицах он обозначен как ChromaArrayType) не равен 0, массивами SCb и SCr в качестве входных данных, и модифицированным восстановленным массивом выборок изображения S'L и, когда четырнадцатый синтаксический элемент не равен 0, массивами S'Cb и S'Cr после адаптивного контурного фильтра в качестве выходных данных.

Массив S′L и, когда четырнадцатый синтаксический элемент не равен 0, массивы S′Cb и S′Cr присваиваются массиву SL, и, когда четырнадцатый синтаксический элемент не равен 0, массивам SCb и SCr (которые представляют собой декодированное изображение) соответственно.

Когда второй синтаксический элемент (например, sps_ccalf_enabled_flag) равен 1, применяется следующее:

Процесс межкомпонентной адаптивной контурный фильтрации, как указано в разделе x.x.x.x, вызывается с массивом восcтановленных выборок изображения SL и, когда четырнадцатый синтаксический элемент (например, ChromaArrayType) не равен 0, массивами SCb и SCr в качестве входных данных и модифицированным восстановленым массивом выборок изображения S'L и, когда четырнадцатый синтаксический элемент не равен 0, массивами S'Cb и S'Cr после межкомпонентного адаптивного контурного фильтра в качестве выходных данных.

Массив S′L и, когда четырнадцатый синтаксический элемент не равен 0, массивы S′Cb и S′Cr присваиваются массиву SL, и, когда четырнадцатый синтаксический элемент не равен 0, массивам SCb и SCr (которые представляют собой декодированное изображение) соответственно.

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

Изобретение также охватывает случай, когда конкретный синтаксический элемент CCALF, сигнализируемый в заголовке слайса, имеет одно и то же значение во всех слайсах (например, из-за некоторых требований соответствия битового потока), тогда этот конкретный синтаксический элемент больше не сигнализируется в заголовке слайса, а скорее сигнализируется только один раз в заголовке изображения, связанном со всеми слайсами.

Межкомпонентный адаптивный контурный фильтр (CC-ALF) может использоваться как контурный фильтр и как этап постобработки соответственно.

CC-ALF использует значения выборок яркости для уточнения каждого компонента цветности. CC_ALF применяется к выборкам яркости для получения поправочного коэффициента для фильтрации выборок цветности.

JVET-P0080 и JVET-O0630 предлагают новый внутриконтурный фильтр, называемый межкомпонентным фильтром ALF. CC-ALF работает как часть процесса адаптивной контурный фильтрации и использует значения выборок яркости для уточнения каждого компонента цветности (компонента Cr или Cb). Инструмент управляется информацией в битовом потоке, и эта информация включает в себя как (а) коэффициенты фильтра для каждого компонента цветности, так и (б) маску, управляющую применением фильтра для блоков выборок. О коэффициентах фильтра сообщается в наборе параметров адаптации (APS), а о размерах блоков и маске сообщается на уровне слайса.

Можно понять, что Маска - это бит (0 или 1). Здесь маска указывает, следует ли фильтровать блок выборок или нет (маска=1 означает, что он фильтруется) и (маска=0 означает, что он не фильтруется). В основном APS содержит коэффициенты для ALF и другую информацию.

Общий вид CC-ALF показан на фиг. 6(а), фиг. 6(б) и фиг. 6(в). Этот общий дизайн может быть применен к любому из вышеупомянутых вариантов осуществления, которые относятся к проблемам, относящимся к CC-ALF. В частности, предполагается, что то, что здесь описано, охватывается каждым из альтернативных вариантов осуществления с 1 по 5.

Расположение фильтра показано на фиг. 6a (см. левую сторону). Форма фильтра показана на фиг. 6b и 6c.

CC-ALF работает путем применения линейного ромбовидного фильтра (рис. 6b и 6c) к каналу яркости для каждого компонента цветности, который выражается как

где

(x, y) - уточняемое местоположение i-го компонента цветности;

(xC, yC) - местоположение яркости на основе (x, y);

Si - поддержка фильтра яркости для компонента цветности I;

ci(x0,y0) - коэффициенты фильтра.

Следует отметить, что имеется первый компонент цветности (например, цветовой компонент cb), когда i=1 для компонента цветности i, и имеется второй компонент цветности (например, цветовой компонент cr), когда i=2 для компонента цветности i.

К основным характеристикам CC-ALF относятся:

Положение яркости ? вокруг которого центрируется область поддержки, вычисляется на основе коэффициента пространственного масштабирования между плоскостями яркости и цветности. В основном CCALF использует выборки яркости для уточнения выборок цветности. Поэтому фильтр применяется к выборкам яркости, а затем выводится поправочный коэффициент для цветности.

Все коэффициенты фильтра передаются в APS и имеют 8-битный динамический диапазон.

На APS можно ссылаться в заголовке слайса.

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

Применение фильтров CC-ALF контролируется переменным размером блока и сигнализируется контекстно-кодированным флагом, полученным для каждого блока выборок. Размер блока вместе с разрешающим флагом CC-ALF принимается на уровне слайса для каждого компонента цветности.

Заполнение границ для горизонтальных виртуальных границ использует повторение. Для остальных границ используется тот же тип заполнения, что и для обычного ALF.

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

Фиг. 16 представляет собой схематическую диаграмму структуры 5000 данных, структура 5000 данных может представлять часть битового потока 21, сформированного кодером на фиг. 2 и принимается декодером на фиг. 3. Структура 5000 данных (то есть битовый поток 5000 видео) может содержать VPS 5005; SPS 5010; PPS 5015; и по меньшей мере четыре слайса 5020, 5025, 5030 и 5035. Слайс 5020 может содержать заголовок 5040 и данные 5045. Слайсы 5025, 5030, 5035 аналогичны слайсу 5020. Данные 5045 могут содержать по меньшей мере три блока 5050, 5055 и 5060, то есть кодированное представление по меньшей мере трех блоков 5050, 5055 и 5060. Хотя показаны четыре слайса 5020-5035, битовый поток 5000 видео содержит любое подходящее количество слайсов. Хотя показаны три блока 5050-5060, данные 5045 содержат любое подходящее количество блоков. Кроме того, каждый оставшийся слайс 5025, 5030, 5035 также содержит блоки. Таким образом, в то время как битовый поток 5000 видео содержит, например, кодированное представление многочисленных блоков, битовый поток 5000 видео содержит один SPS 5010 и значительно меньше заголовков слайсов, чем блоков. Понятно, что битовый поток, включающий в себя множество синтаксических элементов, относящихся к CC-ALF, также может быть показан на фиг. 16. Как показано синтаксисом выше и ниже, множество синтаксических элементов, относящихся к CC-ALF, четко определены. Кроме того, процесс кодирования или декодирования битового потока четко указан в синтаксисе и/или семантике, отмеченных выше и ниже.

Показанный здесь битовый поток может быть получен путем кодирования видеопоследовательности с использованием любого из вышеописанных вариантов осуществления. В частности, этот битовый поток может быть получен или может включать в себя синтаксические элементы и, в частности, синтаксические элементы, относящиеся к CC-ALF, как пояснено в приведенных выше альтернативных вариантах осуществления 1-5.

Фиг. 14 показывает блок-схему способа 4200 кодирования, например, видео. Этот способ может быть реализован, например, с использованием кодера согласно фиг. 12, но также может быть использован любой другой кодер и устройство кодирования, раскрытые в данном документе, для выполнения этого способа.

Способ 4200 кодирования содержит применение 4201 межкомпонентного адаптивного контурного фильтра CC-ALF для уточнения компонента цветности и формирование 4202 битового потока, включающего в себя множество синтаксических элементов, относящихся к CC-ALF, при этом упомянутое множество синтаксических элементов относящихся к CC-ALF, указывают информацию, относящуюся к CC-ALF. В битовом потоке, сформированном на этапе 4202, упомянутое множество синтаксических элементов, относящихся к CC-ALF, сигнализируется на любом одном или более из уровня набора параметров последовательности (SPS), заголовка изображения или заголовка слайса. Упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит первый синтаксический элемент, который указывает, включен или нет адаптивный контурный фильтр (ALF), содержащий межкомпонентный адаптивный контурный фильтр, на уровне последовательности, и первый синтаксический элемент сигнализируется на уровне SPS, и второй синтаксический элемент, который указывает, включен или нет межкомпонентный адаптивный контурный фильтр на уровне последовательности, и второй синтаксический элемент сигнализируется на уровне SPS.

Фиг. 15 показывает блок-схему способа 4300 декодирования, например, видео из битового потока и т.п. Этот способ 4300 может быть реализован, например, с использованием декодера согласно фиг. 13. Также любой другой декодер и устройство декодирования, раскрытые в настоящем документе, могут использоваться для выполнения способа 4300.

Способ 4300 содержит синтаксический анализ 4301 множества синтаксических элементов, относящихся к межкомпонентному адаптивному контурному фильтру, CC-ALF, из битового потока, при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, получается из любого одного или более из уровня набора параметров последовательности (SPS), заголовка изображения или заголовка слайса. Упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит первый синтаксический элемент, который указывает, включен или нет адаптивный контурный фильтр (ALF), содержащий межкомпонентный адаптивный контурный фильтр, на уровне последовательности, и первый синтаксический элемент сигнализируется на уровне SPS, и второй синтаксический элемент, который указывает, включен или нет межкомпонентный адаптивный контурный фильтр на уровне последовательности, и второй синтаксический элемент сигнализируется на уровне SPS. Способ 4300 дополнительно содержит этап 4302 выполнения процесса CC-ALF с использованием по меньшей мере одного из упомянутого множества синтаксических элементов, относящихся к CC-ALF.

В одном варианте осуществления предоставляется способ кодирования, реализуемый устройством кодирования, содержщий:

выполнение процесса фильтрации (такого как процесс межкомпонентной фильтрации) путем применения межкомпонентного адаптивного контурного фильтра (CC-ALF);

формирование битового потока, включающего в себя множество синтаксических элементов, относящихся к CC-ALF (таких как M синтаксических элементов, относящихся к CC-ALF, и M>=1, а M является целым числом), при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, указывают информацию, относящуюся к CC-ALF,

при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, сигнализируется на любом одном или более из уровня набора параметров видео (VPS), уровня набора параметров последовательности (SPS), уровня набора параметров изображения (PPS), заголовка изображения, заголовка слайса или заголовка тайла; или при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, сигнализируется на уровне набора параметров последовательности (SPS) и/или в заголовке изображения.

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

В одном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит: первый синтаксический элемент (например, первый индикатор, такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag), при этом первый синтаксический элемент (например, первый индикатор, такой как sps_ccalf_enabled_flag) сигнализируется на уровне набора параметров последовательности (SPS). Этот индикатор может указывать, могут ли ALF или CC-ALF или оба быть включены или нет для всей последовательности.

В дополнительном варианте осуществления первый синтаксический элемент (например, первый индикатор, такой как sps_ccalf_enabled_flag) указывает, включен или нет межкомпонентный адаптивный контурный фильтр (CC-ALF) на уровне последовательности, или

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

Кроме того, может быть предусмотрено, что первый синтаксический элемент (такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag) установлен как первое значение («истина» или 1) или первый синтаксический элемент имеет первое значение («истина» или 1). С помощью этого значения может быть указано, разрешены ли ALF и/или CC-ALF, используя, предпочтительно, только одно битовое значение.

В одном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, дополнительно содержит:

второй синтаксический элемент (например, второй индикатор, такой как pic_ccalf_enabled_present_flag), если первый синтаксический элемент (например, sps_ccalf_enabled_flag или sps_alf_enabled_flag) установлен как первое значение («истина» или 1) или первый синтаксический элемент имеет первое значение («истина» или 1), в котором второй синтаксический элемент (такой как pic_ccalf_enabled_present_flag) сигнализируется в заголовке изображения; или

девятый синтаксический элемент (например, девятый индикатор, такой как pic_alf_enabled_present_flag), если первый синтаксический элемент (такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag) установлен как первое значение («истина» или 1) или первый синтаксический элемент имеет первое значение («истина» или 1), при этом девятый синтаксический элемент (такой как pic_alf_enabled_present_flag ) сигнализируется в заголовке изображения.

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

С помощью второго и девятого синтаксических элементов можно указать, разрешены ли ALF и/или CC-ALF для слайсов изображения с использованием уменьшенного количества битов.

В одном варианте осуществления второй синтаксический элемент (например, второй индикатор, такой как pic_ccalf_enabled_present_flag) указывает, присутствует ли в заголовке изображения третий синтаксический элемент и/или четвертый набор синтаксических элементов.

Кроме того, может быть предусмотрено, что упомянутое множество синтаксических элементов, относящихся к CC-ALF, дополнительно содержит:

третий синтаксический элемент (например, третий индикатор, такой как pic_ccalf_enabled_flag или pic_alf_enabled_flag), если второй синтаксический элемент (такой как pic_ccalf_enabled_present_flag) или девятый синтаксический элемент (такой как pic_alf_enabled_present_flag) установлен как первое значение («истина» или 1) , или второй синтаксический элемент или девятый синтаксический элемент имеет первое значение («истина» или 1), при этом третий синтаксический элемент (такой как pic_ccalf_enabled_flag или pic_alf_enabled_flag) сигнализируется в заголовке изображения.

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

при этом третий синтаксический элемент (например, третий индикатор, такой как pic_alf_enabled_flag) указывает, включен ли адаптивный контурный фильтр, содержащий межкомпонентный адаптивный контурный фильтр (CCALF), для всех слайсов, связанных с заголовком изображения, или нет. Таким образом, информация о применении ALF или CC-ALF может передаваться для всех слайсов изображения с использованием уменьшенного количества информации.

В дополнительном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, дополнительно содержит:

четвертый набор синтаксических элементов, если третий синтаксический элемент (например, третий индикатор, такой как pic_ccalf_enabled_flag или pic_alf_enabled_flag) установлен как первое значение («истина» или 1) или третий синтаксический элемент имеет первое значение («истина» или 1), при этом четвертый набор синтаксических элементов сигнализируется в заголовке изображения (например, на уровне заголовка изображения), или четвертый набор синтаксических элементов переносится элементами заголовка изображения.

В частности, в одном варианте осуществления четвертый набор синтаксических элементов содержит:

if( ChromaArrayType != 0 ) pic_cross_component_alf_cb_enabled_flag u(1) if(pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_alf_cb_aps_id u(3) } if( ChromaArrayType != 0 ) pic_cross_component_alf_cr_enabled_flag u(1) if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_alf_cr_aps_id u(3) } }

Дополнительно или альтернативно может быть предусмотрено, что четвертый набор синтаксических элементов содержит:

if( ChromaArrayType != 0 ) pic_cross_component_alf_cb_enabled_flag u(1) if(pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_alf_cb_aps_id u(3) pic_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) pic_cross_component_alf_cr_enabled_flag u(1) if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_alf_cr_aps_id u(3) pic_cross_component_cr_filters_signalled_minus1 ue(v) } }

Кроме того, дополнительно или альтернативно четвертый набор синтаксических элементов содержит:

if( ChromaArrayType != 0 ) pic_cross_component_alf_cb_enabled_flag u(1) if( pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) pic_cross_component_alf_cr_enabled_flag u(1) if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_cr_filters_signalled_minus1 ue(v) }

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

В дополнительном варианте осуществления предусмотрено, что для всех слайсов одного и того же изображения одна и та же информация, относящаяся к CC-ALF (такая как aps_ids), наследуется от заголовка изображения. Таким образом, нет необходимости дополнительно включать информацию, представленную в заголовке изображения, в заголовки слайсов и т.п., тем самым потенциально уменьшая количество информации, предоставляемой в битовом потоке.

В одном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит:

первый синтаксический элемент (например, первый индикатор, такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag), при этом первый синтаксический элемент (например, первый индикатор, такой как sps_ccalf_enabled_flag) сигнализируется на уровне набора параметров последовательности (SPS),

второй синтаксический элемент (например, второй индикатор, такой как pic_ccalf_enabled_present_flag), если первый синтаксический элемент (такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag) установлен как первое значение («истина» или 1) или имеет первое значение («истина» или 1), при этом второй синтаксический элемент (такой как pic_ccalf_enabled_present_flag) сигнализируется в заголовке изображения.

Кроме того, упомянутое множество синтаксических элементов, относящихся к CC-ALF, может содержать:

пятый синтаксический элемент (например, пятый индикатор, такой как slice_ccalf_enabled_flag или slice_alf_enabled_flag), если первый синтаксический элемент (такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag) установлен как первое значение («истина» или 1) или имеет первое значение («истина» или 1) , и, если второй синтаксический элемент (такой как pic_ccalf_enabled_present_flag или pic_alf_enabled_present_flag) установлен как второе значение («ложь» или 0) или имеет второе значение («ложь» или 0), при этом пятый синтаксический элемент (такой как slice_ccalf_enabled_flag или slice_alf_enabled_flag) сигнализируется в заголовок слайса.

Также может быть предусмотрено, что упомянутое множество синтаксических элементов, относящихся к CC-ALF, дополнительно содержит:

шестой набор синтаксических элементов, если пятый синтаксический элемент (например, пятый индикатор, такой как slice_ccalf_enabled_flag или slice_alf_enabled_flag) установлен как первое значение («истина» или 1) или пятый синтаксический элемент имеет первое значение («истина» или 1), при этом шестой набор синтаксических элементов сигнализируется в заголовке слайса, или шестой набор синтаксических элементов переносится записями заголовка слайса. Этот набор синтаксических элементов может, например, указывать параметры, которые должны использоваться в ALF или CC-ALF. Предоставляя этот набор, потенциально зависящий от значения пятого синтаксического элемента, размер битового потока может быть дополнительно уменьшен.

В частности, может быть предусмотрено, что шестой набор синтаксических элементов содержит:

if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if(slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_alf_cb_aps_id u(3) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_alf_cr_aps_id u(3) } }

Дополнительно или альтернативно может быть предусмотрено, что шестой набор синтаксических элементов содержит:

if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if( slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_alf_cb_aps_id u(3) slice_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_alf_cr_aps_id u(3) slice_cross_component_cr_filters_signalled_minus1 ue(v) }

Кроме того, может быть предусмотрено, что шестой набор синтаксических элементов содержит:

if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if( slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_cr_filters_signalled_minus1 ue(v) }

В дополнительном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, дополнительно содержит:

седьмой синтаксический элемент (например, седьмой индикатор, такой как pic_cross_component_alf_cb_aps_id) и восьмой синтаксический элемент (например, восьмой индикатор, такой как pic_cross_component_alf_cr_aps_id), если первый синтаксический элемент (такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag) установлен как первое значение («истина» или 1) или имеет первое значение («истина» или 1) .

В одном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, дополнительно содержит:

седьмой синтаксический элемент (например, седьмой индикатор, такой как pic_cross_component_alf_cb_aps_id) и восьмой синтаксический элемент (например, восьмой индикатор, такой как pic_cross_component_alf_cr_aps_id), если первый синтаксический элемент (такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag) установлен как первое значение («истина» или 1) или имеет первое значение («истина» или 1), и, если девятый синтаксический элемент (такой как pic_alf_enabled_present_flag) установлен как первое значение («истина» или 1) или имеет первое значение («истина» или 1).

В одном варианте осуществления упомянутое множество синтаксических элементов, относящихся к CC-ALF, дополнительно содержит:

седьмой синтаксический элемент (например, седьмой индикатор, такой как pic_cross_component_alf_cb_aps_id ), восьмой синтаксический элемент (например, восьмой индикатор, такой как pic_cross_component_alf_cr_aps_id) и второй синтаксический элемент (например, pic_ccalf_enabled_present_flag), если первый синтаксический элемент (например, sps_ccalf_enabled_flag или sps_alf_enabled_flag) установлен как первое значение («истина» или 1) или имеет первое значение («истина» или 1) , и, если девятый синтаксический элемент (например, pic_alf_enabled_present_flag) установлен как первое значение («истина» или 1) или имеет первое значение («истина» или 1).

Также может быть предусмотрено, что упомянутое множество синтаксических элементов, относящихся к CC-ALF, дополнительно содержит:

седьмой синтаксический элемент (например, седьмой индикатор, такой как pic_cross_component_alf_cb_aps_id), восьмой синтаксический элемент (например, восьмой индикатор, такой как pic_cross_component_alf_cr_aps_id) и девятый синтаксический элемент (например, pic_alf_enabled_present_flag), если первый синтаксический элемент (например, sps_ccalf_enabled_flag или sps_alf_enabled_flag) установлен как первое значение («истина» или 1) или имеет первое значение («истина» или 1).

Более того, в одном варианте осуществления CC-ALF применяется для выполнения обработки фильтрации одной или более выборок яркости компонента яркости текущего блока изображения для уточнения выборки цветности (такой, как каждая выборка цветности) компонента цветности текущего блока изображения.

В частности, может быть предусмотрено, что CC-ALF выполнен с возможностью уточнения каждого компонента цветности с использованием значений выборок яркости.

В одном варианте осуществления CC-ALF работает как часть процесса адаптивной контурный фильтрации.

Также может быть предусмотрено, что блок изображения содержит блок яркости и блоки цветности,

при этом первый блок цветности представляет собой первый компонент цветности (такой как компонент Cb) блока изображения, а второй блок цветности представляет собой второй компонент цветности (такой как компонент Cr) блока изображения.

Настоящее раскрытие также относится к способу кодирования, реализуемому устройством кодирования, содержащему:

определение того, включен ли межкомпонентный ALF (CC-ALF) или нет;

формирование битового потока, включающего один или более синтаксических элементов (например, синтаксический элемент, относящийся к CC-ALF, такой как pic_ccalf_enabled_flag, pic_cross_component_alf_cb_enabled_flag или pic_cross_component_alf_cr_enabled_flag), где упомянутые один или более синтаксических элементов указывают, включен ли межкомпонентный ALF (CC-ALF) или нет на уровне заголовка изображения и соответствующую информацию, относящуюся к CC-ALF, при этом синтаксические элементы сигнализируются на уровне заголовка изображения. Таким образом, релевантная информация для последующего декодирования может предоставляться с уменьшенным размером в битовом потоке.

Также может быть предусмотрено, что CC-ALF применяется для выполнения обработки фильтрации одной или более выборок яркости компонента яркости текущего блока изображения для уточнения выборки цветности (например, каждой выборки цветности) компонента цветности текущего блока изображения.

В одном варианте осуществления способ дополнительно содержит:

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

Также может быть предусмотрено, что CC-ALF выполнен с возможностью уточнения каждого компонента цветности с использованием значений выборок яркости.

В дополнительном варианте осуществления CC-ALF работает как часть процесса адаптивной контурный фильтрации.

Также может быть предусмотрено, что блок изображения содержит блок яркости и блоки цветности,

при этом первый блок цветности представляет собой первый компонент цветности (такой как компонент Cb) блока изображения, а второй блок цветности представляет собой второй компонент цветности (такой как компонент Cr) блока изображения.

Настоящее раскрытие дополнительно относится к способу декодирования, реализуемому устройством декодирования, при этом способ содержит:

синтаксический анализ одного или более синтаксических элементов из битового потока видеосигнала, при этом упомянутые один или более синтаксических элементов указывают информацию, относящуюся к межкомпонентному адаптивному контурному фильтру (CC-ALF), при этом упомянутые один или более синтаксических элементов получаются из любого одного или более из уровня набора параметров видео (VPS), уровня набора параметров последовательности (SPS), уровня набора параметров изображения (PPS), заголовка изображения, заголовка слайса или заголовка тайла битового потока; или при этом упомянутые один или более синтаксических элементов получаются из уровня набора параметров последовательности (SPS) и/или заголовка изображения; и

выполнение процесса фильтрации (такого как процесс межкомпонентной фильтрации) путем применения CC-ALF на основе синтаксических элементов или на основе значений синтаксических элементов.

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

Настоящее раскрытие дополнительно описывает способ декодирования, реализуемый устройством декодирования, при этом способ содержит:

синтаксический анализ множества синтаксических элементов из битового потока видеосигнала, при этом синтаксические элементы получаются из любого одного или более из уровня набора параметров видео (VPS), уровня набора параметров последовательности (SPS), уровня набора параметров изображения (PPS), заголовка изображения, заголовка слайса или заголовка тайла битового потока; или при этом синтаксические элементы получаются из уровня набора параметров последовательности (SPS) и/или заголовка изображения;

определение информации, относящейся к межкомпонентному адаптивному контурному фильтру (CC-ALF), на основе одного или более синтаксических элементов из упомянутого множества синтаксических элементов, при этом

выполнение процесса фильтрации (такого как процесс межкомпонентной фильтрации) путем применения CC-ALF на основе информации, относящейся к CC-ALF.

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

Может быть предусмотрено, что упомянутые один или более синтаксических элементов или упомянутое множество синтаксических элементов (таких как синтаксические элементы, относящиеся к CC-ALF) содержат: первый синтаксический элемент (например, первый индикатор, такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag), при этом первый синтаксический элемент элемент (например, первый индикатор, такой как sps_ccalf_enabled_flag) получается из уровня набора параметров последовательности (SPS).

В частности, может быть дополнительно предусмотрено, что первый синтаксический элемент (например, первый индикатор, такой как sps_ccalf_enabled_flag) указывает, включен или нет межкомпонентный адаптивный контурный фильтр (CC-ALF) на уровне последовательности, или

при этом первый синтаксический элемент (например, первый индикатор, такой как sps_alf_enabled_flag) указывает, включен или нет адаптивный контурный фильтр (ALF), содержащий межкомпонентный адаптивный контурный фильтр (CC-ALF), на уровне последовательности.

Таким образом, информация о том, какой способ фильтрации должен быть применен, может быть предоставлена с уменьшенным объемом информации для декодера в битовом потоке.

В одном варианте осуществления первый синтаксический элемент (такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag) выводится как первое значение («истина» или 1), или первый синтаксический элемент имеет первое значение («истина» или 1).

Также может быть предусмотрено, что упомянутое множество синтаксических элементов (таких как синтаксические элементы, относящиеся к CC-ALF) дополнительно содержат:

второй синтаксический элемент (например, второй индикатор, такой как pic_ccalf_enabled_present_flag), если первый синтаксический элемент (такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag) выводится как первое значение («истина» или 1) или первый синтаксический элемент имеет первое значение («истина» или 1), в котором второй синтаксический элемент (такой как pic_ccalf_enabled_present_flag) получается из заголовка изображения; или

девятый синтаксический элемент (например, девятый индикатор, такой как pic_alf_enabled_present_flag), если первый синтаксический элемент (такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag) выводится как первое значение («истина» или 1) или первый синтаксический элемент имеет первое значение («истина» или 1), при этом девятый синтаксический элемент (такой как pic_alf_enabled_present_flag) получается из заголовка изображения.

В дополнительном варианте осуществления второй синтаксический элемент (например, второй индикатор, такой как pic_ccalf_enabled_present_flag) указывает, присутствует ли в заголовке изображения третий синтаксический элемент и/или четвертый набор синтаксических элементов.

Упомянутое множество синтаксических элементов (таких как синтаксические элементы, относящиеся к CC-ALF) могут дополнительно содержать:

третий синтаксический элемент (например, третий индикатор, такой как pic_ccalf_enabled_flag или pic_alf_enabled_flag), если второй синтаксический элемент (такой как pic_ccalf_enabled_present_flag) или девятый синтаксический элемент (такой как pic_alf_enabled_present_flag) выводится как первое значение («истина» или 1) , или второй синтаксический элемент или девятый синтаксический элемент имеет первое значение («истина» или 1), при этом третий синтаксический элемент (такой как pic_ccalf_enabled_flag или pic_alf_enabled_flag) получается из заголовка изображения.

В частности, может быть предусмотрено, что третий синтаксический элемент (например, третий индикатор, такой как pic_ccalf_enabled_flag) указывает, включен ли межкомпонентный адаптивный контурный фильтр (CCALF) для всех слайсов, связанных с заголовком изображения, или нет, или

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

В одном варианте осуществления упомянутое множество синтаксических элементов (таких как синтаксические элементы, относящиеся к CC-ALF) дополнительно содержат:

четвертый набор синтаксических элементов, если третий синтаксический элемент (например, третий индикатор, такой как pic_ccalf_enabled_flag или pic_alf_enabled_flag) выводится как первое значение («истина» или 1) или третий синтаксический элемент имеет первое значение («истина» или 1), при этом четвертый набор синтаксических элементов получается из заголовка изображения (например, на уровне заголовка изображения) или четвертый набор синтаксических элементов переносится элементами заголовка изображения.

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

В частности, четвертый набор синтаксических элементов может содержать:

if( ChromaArrayType != 0 ) pic_cross_component_alf_cb_enabled_flag u(1) if(pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_alf_cb_aps_id u(3) } if( ChromaArrayType != 0 ) pic_cross_component_alf_cr_enabled_flag u(1) if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_alf_cr_aps_id u(3) } }

Альтернативно или дополнительно четвертый набор синтаксических элементов может содержать:

if( ChromaArrayType != 0 ) pic_cross_component_alf_cb_enabled_flag u(1) if(pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_alf_cb_aps_id u(3) pic_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) pic_cross_component_alf_cr_enabled_flag u(1) if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_alf_cr_aps_id u(3) pic_cross_component_cr_filters_signalled_minus1 ue(v) } }

В дополнительном варианте осуществления четвертый набор синтаксических элементов может содержать:

if( ChromaArrayType != 0 ) pic_cross_component_alf_cb_enabled_flag u(1) if( pic_cross_component_alf_cb_enabled_flag ) { pic_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) pic_cross_component_alf_cr_enabled_flag u(1) if( pic_cross_component_alf_cr_enabled_flag ) { pic_cross_component_cr_filters_signalled_minus1 ue(v) }

Может быть предусмотрено, что для всех слайсов одного и того же изображения одна и та же информация, относящаяся к CC-ALF (такая как aps_ids), наследуется от заголовка изображения. Таким образом, количество информации, предоставляемой в битовом потоке для указания декодеру информации, относящейся к CC-ALF, для слайсов изображения, может быть уменьшено.

В одном варианте осуществления упомянутое множество синтаксических элементов (таких как синтаксические элементы, относящиеся к CC-ALF) содержат:

первый синтаксический элемент (например, первый индикатор, такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag), при этом первый синтаксический элемент (например, первый индикатор, такой как sps_ccalf_enabled_flag) получается из уровня набора параметров последовательности (SPS),

второй синтаксический элемент (например, второй индикатор, такой как pic_ccalf_enabled_present_flag), если первый синтаксический элемент (такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag) выводится как первое значение («истина» или 1) или имеет первое значение («истина» или 1), при этом второй синтаксический элемент (такой как pic_ccalf_enabled_present_flag) получается из заголовка изображения.

В дополнительном варианте осуществления упомянутое множество синтаксических элементов (таких как синтаксические элементы, относящиеся к CC-ALF) дополнительно содержат:

пятый синтаксический элемент (например, пятый индикатор, такой как slice_ccalf_enabled_flag или slice_alf_enabled_flag), если первый синтаксический элемент (такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag) выводится как первое значение («истина» или 1) или имеет первое значение («истина» или 1) , и, если второй синтаксический элемент (такой как pic_ccalf_enabled_present_flag или pic_alf_enabled_present_flag) получен как второе значение («ложь» или 0) или имеет второе значение («ложь» или 0), при этом пятый синтаксический элемент (такой как slice_ccalf_enabled_flag или slice_alf_enabled_flag) получается из заголовка слайса.

Может быть предусмотрено, что упомянутое множество синтаксических элементов (таких как синтаксические элементы, относящиеся к CC-ALF) дополнительно содержат:

шестой набор синтаксических элементов, если пятый синтаксический элемент (например, пятый индикатор, такой как slice_ccalf_enabled_flag или slice_alf_enabled_flag) выводится как первое значение («истина» или 1) или пятый синтаксический элемент имеет первое значение («истина» или 1), при этом шестой набор синтаксических элементов получается из заголовка слайса, или шестой набор синтаксических элементов переносится записями заголовка слайса.

В частности, может быть предусмотрено, что шестой набор синтаксических элементов содержит:

if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if(slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_alf_cb_aps_id u(3) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_alf_cr_aps_id u(3) } }

Альтернативно или дополнительно может быть предусмотрено, что шестой набор синтаксических элементов содержит:

if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if( slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_alf_cb_aps_id u(3) slice_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_alf_cr_aps_id u(3) slice_cross_component_cr_filters_signalled_minus1 ue(v) }

Аналогичным образом может быть предусмотрено, что шестой набор синтаксических элементов содержит:

if( ChromaArrayType != 0 ) slice_cross_component_alf_cb_enabled_flag u(1) if( slice_cross_component_alf_cb_enabled_flag ) { slice_cross_component_cb_filters_signalled_minus1 ue(v) } if( ChromaArrayType != 0 ) slice_cross_component_alf_cr_enabled_flag u(1) if( slice_cross_component_alf_cr_enabled_flag ) { slice_cross_component_cr_filters_signalled_minus1 ue(v) }

В одном варианте осуществления упомянутое множество синтаксических элементов (таких как синтаксические элементы, относящиеся к CC-ALF) дополнительно содержат:

седьмой синтаксический элемент (например, седьмой индикатор, такой как pic_cross_component_alf_cb_aps_id) и восьмой синтаксический элемент (например, восьмой индикатор, такой как pic_cross_component_alf_cr_aps_id), если первый синтаксический элемент (такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag) выводится как первое значение («истина» или 1) или имеет первое значение («истина» или 1) .

Также может быть предусмотрено, что упомянутое множество синтаксических элементов (таких как синтаксические элементы, относящиеся к CC-ALF) дополнительно содержат:

седьмой синтаксический элемент (например, седьмой индикатор, такой как pic_cross_component_alf_cb_aps_id) и восьмой синтаксический элемент (например, восьмой индикатор, такой как pic_cross_component_alf_cr_aps_id), если первый синтаксический элемент (такой как sps_ccalf_enabled_flag или sps_alf_enabled_flag) выводится как первое значение («истина» или 1) или имеет первое значение («истина» или 1), и, если девятый синтаксический элемент (такой как pic_alf_enabled_present_flag) выводится как первое значение («истина» или 1) или имеет первое значение («истина» или 1).

В другом варианте осуществления упомянутое множество синтаксических элементов (таких как синтаксические элементы, относящиеся к CC-ALF) дополнительно содержат:

седьмой синтаксический элемент (например, седьмой индикатор, такой как pic_cross_component_alf_cb_aps_id ), восьмой синтаксический элемент (например, восьмой индикатор, такой как pic_cross_component_alf_cr_aps_id) и второй синтаксический элемент (например, pic_ccalf_enabled_present_flag), если первый синтаксический элемент (например, sps_ccalf_enabled_flag или sps_alf_enabled_flag ) выводится как первое значение («истина» или 1) или имеет первое значение («истина» или 1) , и, если девятый синтаксический элемент (например, pic_alf_enabled_present_flag) выводится как первое значение («истина» или 1) или имеет первое значение ( «истина» или 1).

Также может быть предусмотрено, что упомянутое множество синтаксических элементов (таких как синтаксические элементы, относящиеся к CC-ALF) дополнительно содержат:

седьмой синтаксический элемент (например, седьмой индикатор, такой как pic_cross_component_alf_cb_aps_id), восьмой синтаксический элемент (например, восьмой индикатор, такой как pic_cross_component_alf_cr_aps_id) и девятый синтаксический элемент (например, pic_alf_enabled_present_flag), если первый синтаксический элемент (например, sps_ccalf_enabled_flag или sps_alf_enabled_flag ) выводится как первое значение («истина» или 1) или имеет первое значение («истина» или 1).

В одном варианте осуществления CC-ALF применяется для выполнения обработки фильтрации одной или более выборок яркости компонента яркости текущего блока изображения для уточнения выборки цветности (например, каждой выборки цветности) компонента цветности текущего блока изображения.

CC-ALF может быть выполнен с возможностью уточнения каждого компонента цветности с использованием значений выборок яркости.

Также может быть предусмотрено, что CC-ALF работает как часть процесса адаптивной контурный фильтрации.

В одном варианте осуществления блок изображения содержит блок яркости и блоки цветности,

при этом первый блок цветности представляет собой первый компонент цветности (такой как компонент Cb) блока изображения, а второй блок цветности представляет собой второй компонент цветности (такой как компонент Cr) блока изображения.

Настоящее раскрытие дополнительно относится к способу декодирования, реализуемому устройством декодирования, содержащему:

синтаксический анализ из битового потока видеосигнала одного или более синтаксических элементов (например, M синтаксических элементов, относящихся к CC-ALF, при этом M является целым числом и M>=1, например, pic_ccalf_enabled_flag, pic_cross_component_alf_cb_enabled_flag или pic_cross_component_alf_cr_enabled_flag), при этом упомянутые один или более синтаксических элементов указывают, включен или нет межкомпонентный ALF (CCALF) на уровне заголовка изображения, и соответствующую информацию, относящуюся к CCALF, при этом упомянутые один или более синтаксических элементов получаются из уровня заголовка изображения.

выполнение процесса фильтрации (такого как процесс межкомпонентной фильтрации) путем применения CC-ALF в ответ на определение того, что CC-ALF включен.

Этот способ может соответствующим образом применять CC-ALF во время декодирования, позволяя уменьшить размер битового потока.

В одном варианте осуществления CC-ALF применяется для выполнения обработки фильтрации одной или более выборок яркости компонента яркости текущего блока изображения для уточнения выборки цветности (например, каждой выборки цветности) компонента цветности текущего блока изображения.

Также может быть предусмотрено, что CC-ALF выполнен с возможностью уточнения каждого компонента цветности с использованием значений выборок яркости.

В дополнительном варианте осуществления CC-ALF работает как часть процесса адаптивной контурный фильтрации.

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

при этом первый блок цветности представляет собой первый компонент цветности (такой как компонент Cb) блока изображения, а второй блок цветности представляет собой второй компонент цветности (такой как компонент Cr) блока изображения.

Настоящее раскрытие дополнительно обеспечивает устройство для кодирования видеоданных, содержащее:

память видеоданных; и

видеокодер, при этом видеокодер выполнен с возможностью:

выполнения процесса фильтрации (такого как процесс межкомпонентной фильтрации) путем применения межкомпонентного адаптивного контурного фильтра (CC-ALF);

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

при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, получается из любого одного или более из уровня набора параметров видео (VPS), уровня набора параметров последовательности (SPS), уровня набора параметров изображения (PPS), заголовка изображения, заголовка слайса или заголовка тайла; или

при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, получается из уровня набора параметров последовательности (SPS) и/или заголовка изображения.

Это устройство может реализовать кодирование, в результате которого битовый поток имеет уменьшенный размер.

Кроме того, предусмотрено устройство для декодирования видеоданных, содержащее:

память видеоданных; и

видеодекодер, при этом видеодекодер выполнен с возможностью:

синтаксического анализа множества синтаксических элементов из битового потока видеосигнала, при этом упомянутое множество синтаксических элементов получаются из любого одного или более из уровня набора параметров видео (VPS), уровня набора параметров последовательности (SPS), уровня набора параметров изображения (PPS), заголовка изображения, заголовка слайса или заголовка тайла битового потока, или при этом упомянутое множество синтаксических элементов получаются из уровня набора параметров последовательности (SPS) и/или заголовка изображения битового потока;

определения информации, относящейся к межкомпонентному адаптивному контурному фильтру (CC-ALF), на основе одного или более синтаксических элементов из упомянутого множества синтаксических элементов; и

выполнения процесса фильтрации (такого как процесс межкомпонентной фильтрации) путем применения CC-ALF на основе информации, относящейся к CC-ALF.

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

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

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

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

Настоящее раскрытие дополнительно относится к декодеру, при этом декодер содержит:

один или более процессоров; и

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

Кроме того, в настоящем раскрытии предусмотрен кодер, содержащий:

один или более процессоров; и

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

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

при этом упомянутое множество синтаксических элементов (таких как синтаксические элементы, относящиеся к CC-ALF) получается из любого одного или более из уровня набора параметров видео (VPS), уровня набора параметров последовательности (SPS), уровня набора параметров изображения (PPS), заголовка изображения, заголовка слайса или заголовка тайла, или

при этом упомянутое множество синтаксических элементов (таких как синтаксические элементы, относящиеся к CC-ALF) получается из по меньшей мере одного из уровня набора параметров последовательности (SPS) или заголовка изображения.

Настоящее раскрытие также относится к устройству, содержащему:

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

множество изображений в битовом видеопотоке, включающее в себя изображение, содержащее N слайсов; и

заголовок изображения, связанный с N слайсами изображения,

при этом один или более из или каждый из N слайсов содержат множество блоков выборок, закодированных с помощью энтропии,

при этом информация фильтрации CC-ALF или параметры фильтра CC-ALF наследуются N слайсами из заголовка изображения или N слайсов наследуют данные фильтрации ALF из заголовка изображения.

В соответствии с любым из вышеприведенных вариантов осуществления может быть дополнительно предусмотрено, что

Значения slice_cross_component_alf_cr_aps_id и slice_cross_component_alf_cb_aps_id совпадают со значениями pic_cross_component_alf_cb_aps_id и pic_cross_component_alf_cr_aps_id.

В дополнительном варианте осуществления pic_cross_component_alf_cb_aps_id и pic_cross_component_alf_cr_aps_id получаются из заголовка изображения.

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

В одном варианте осуществления N представляет собой положительное целое число больше 1.

В одном варианте осуществления предоставляется способ кодирования битового потока видео, реализуемый устройством кодирования, при этом способ кодирования содержит:

формирование битового потока для видеосигнала путем включения множества синтаксических элементов (например, синтаксического элемента, относящегося к ALF, такого как sps_alf_enabled_flag, и/или синтаксического элемента, относящегося к CCALF, такого как sps_ccalf_enabled_flag), при этом упомянутое множество синтаксических элементов содержит флаг включения межкомпонентного адаптивного контурного фильтра (CC-ALF) (например, sps_ccalf_enabled_flag) и

при этом параметры, относящиеся к CC-ALF, сигнализируются условно по меньшей мере на основании значения флага включения CC-ALF (такого как sps_ccalf_enabled_flag).

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

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

получение (S110) множества синтаксических элементов из битового потока видео;

при этом упомянутое множество синтаксических элементов содержит флаг включения межкомпонентного адаптивного контурного фильтра (CC-ALF) (такой как sps_ccalf_enabled_flag), и

при этом параметры, относящиеся к CC-ALF, сигнализируются условно по меньшей мере на основании значения флага включения CCALF (такого как sps_ccalf_enabled_flag).

Этот способ позволяет выполнять надежное декодирование даже при уменьшении размера битового потока.

В одном варианте осуществления, в случае, когда одно или более условий удовлетворены, флаг включения CCALF (такой как sps_ccalf_enabled_flag) сигнализируется на уровне набора параметров последовательности (SPS) битового потока, при этом упомянутые одно или более условий содержат: когда значение первого флага (такого как sps_alf_enabled_flag), который сигнализируется на уровне набора параметров последовательности (SPS) битового потока имеет разрешающее значение (такое как первое значение, например «истина» или 1), и

при этом флаг включения CCALF указывает, включен или нет межкомпонентный адаптивный контурный фильтр (CCALF) на уровне последовательности или уровне SPS.

Также может быть предусмотрено, что синтаксические элементы содержат третий флаг (такой как alf_present_in_ph_flag), и третий флаг сигнализирует об уровне набора параметров изображения (PPS) битового потока, и при этом третий флаг указывает, присутствует ли в PH (заголовках изображений) один или более синтаксических элементов для включения ALF , ссылаясь на PPS, или нет.

Также может быть предусмотрено, что третий флаг (alf_present_in_ph_flag), равный 1, указывает, что синтаксические элементы для включения ALF могут присутствовать в PH (заголовках изображений), относящихся к PPS. Третий флаг (alf_present_in_ph_flag), равный 0, указывает синтаксические элементы для включения ALF, которые могут присутствовать в заголовках слайсов, относящихся к PPS.

В одном варианте осуществления предусмотрено, что если значение первого флага (такого как sps_alf_enabled_flag) является разрешающим значением (таким как первое значение, например «истина» или 1), а значение третьего флага (alf_present_in_ph_flag) является разрешающим значением (например, первое значение, например «истина» или 1), и

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

В еще одном варианте осуществления предусмотрено, что если значение первого флага (такого как sps_alf_enabled_flag) является разрешающим значением (таким как первое значение, например «истина» или 1), а значение третьего флага (alf_present_in_ph_flag) является отключающее значение (например, второе значение, например, «ложь» или 0), и

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

В дополнительном варианте осуществления предусмотрено, что флаг включения CC-ALF (такой как sps_ccalf_enabled_flag), равный 0, указывает, что межкомпонентный адаптивный контурный фильтр отключен; или

флаг включения CC-ALF (такой как sps_ccalf_enabled_flag), равный 1, указывает, что межкомпонентный адаптивный контурный фильтр включен.

Кроме того, может быть предусмотрено, что синтаксические элементы содержат:

второй флаг (например, no_ccalf_constraint_flag), равный 1, указывает, что флаг включения CCALF (например, sps_ccalf_enabled_flag) равен 0; или второй флаг (такой как no_ccalf_constraint_flag), равный 0, не накладывает такое ограничение.

В одном варианте осуществления способ дополнительно содержит:

выполнение процесса фильтрации (такого как процесс межкомпонентной адаптивной контурный фильтрации) на восстановленном изображении (таком как восстановленный массив выборок яркости SL, восстановленный массив выборок цветности SCb и/или восстановленный массив выборок цветности SCr), чтобы получить отфильтрованное восстановленное изображение (такое как модифицированный восстановленный массив выборок яркости S'L, модифицированный восстановленный массив выборок цветности S'Cb и/или модифицированный восстановленный массив выборок цветности S'Cr).

Настоящее раскрытие дополнительно обеспечивает закодированный битовый поток для видеосигнала посредством включения множества синтаксических элементов (например, синтаксического элемента, относящегося к ALF, такого как sps_alf_enabled_flag, и/или синтаксического элемента, относящегося к CCALF, такого как sps_ccalf_enabled_flag), при этом упомянутое множество синтаксических элементов содержит флаг включения межкомпонентного адаптивного контурного фильтра (CCALF) (например, sps_ccalf_enabled_flag) и

при этом параметры, относящиеся к CCALF, сигнализируются условно по меньшей мере на основе значения флага включения CCALF (такого как sps_ccalf_enabled_flag).

Битовый поток может быть уменьшен в размере, обеспечивая при этом информацию, которая будет использоваться при декодировании при надежном применении CC-ALF.

Фиг. 12 показывает вариант осуществления кодера 4000. Кодер 4000 может быть реализован с использованием любой схемы обработки, обозначенной здесь позицией 4001, для выполнения способа кодирования видео. В частности, схема 4001 обработки может быть выполнена с возможностью применения межкомпонентного адаптивного контурного фильтра CC-ALF для уточнения компонента цветности. Схема обработки может быть дополнительно выполнена с возможностью формирования битового потока, включающего в себя множество синтаксических элементов, относящихся к CC-ALF, при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, указывают информацию, относящуюся к CC-ALF, при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, сигнализируется на любом одном или более из уровня набора параметров последовательности (SPS), заголовка изображения или заголовка слайса.

Упомянутое множество синтаксических элементов, относящихся к CC-ALF, в этом контексте содержит первый синтаксический элемент, который указывает, включен или нет адаптивный контурный фильтр (ALF), содержащий межкомпонентный адаптивный контурный фильтр, на уровне последовательности, и первый синтаксический элемент сигнализируется на уровне SPS, и второй синтаксический элемент, который указывает, включен или нет межкомпонентный адаптивный контурный фильтр на уровне последовательности, и второй синтаксический элемент сигнализируется на уровне SPS.

Кодер может дополнительно содержать приемник 4002 для приема видео, подлежащего кодированию, и передатчик 4003 для передачи битового потока, содержащего по меньшей мере упомянутое множество синтаксических элементов.

Фиг. 13 показывает вариант осуществления декодера 4100. Декодер 4100 может быть реализован с использованием любой схемы 4101 обработки для выполнения способа декодирования видео. В частности, схема 4101 обработки может быть выполнена с возможностью синтаксического анализа множества синтаксических элементов, связанных с межкомпонентным адаптивным контурным фильтром, CC-ALF, из битового потока, при этом упомянутое множество синтаксических элементов, относящихся к CC-ALF, получается из любого одного или более из уровня набора параметров последовательности (SPS), заголовка изображения или заголовка слайса.

В частности, упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит первый синтаксический элемент, который указывает, включен или нет адаптивный контурный фильтр (ALF), содержащий межкомпонентный адаптивный контурный фильтр, на уровне последовательности, и первый синтаксический элемент сигнализируется на уровне SPS, и второй синтаксический элемент, который указывает, включен или нет межкомпонентный адаптивный контурный фильтр на уровне последовательности, и второй синтаксический элемент сигнализируется на уровне SPS.

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

Более того, декодер 4100 может содержать приемник 4102 для приема битового потока. Кроме того, декодер может содержать передатчик 4103 для вывода декодированного видео, например, на не показанное здесь устройство вывода.

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

Фиг. 10 является блок-схемой, показывающей систему 3100 доставки контента для реализации услуги распространения контента. Данная система 3100 доставки контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и опционально включает в себя дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, но без ограничения упомянутым, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию, или подобное.

Устройство 3102 захвата формирует данные и может кодировать данные способом кодирования, показанным в вышеуказанных вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на Фигурах), а сервер кодирует эти данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения упомянутым, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, КПК, устанавливаемое на транспортное средство устройство, или комбинацию любых из них, или подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, описанное выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку видеокодирования. Когда данные включают в себя аудио (т.е. речь), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку аудиокодирования. Для некоторых практических сценариев устройство 3102 захвата распространяет закодированные видео- и аудиоданные путем их совместного мультиплексирования. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распространяет закодированные аудиоданные и закодированные видеоданные на терминальное устройство 3106 по отдельности.

В системе 3100 доставки контента терминальное устройство 310 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и извлечения данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR) / цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, карманный персональный компьютер (КПК) 3122, устанавливаемое на транспортное средство устройство 3124, или их комбинация, или подобное, способное декодировать вышеупомянутые закодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, описанное выше. Когда закодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения декодирования видео. Когда закодированные данные включают в себя аудио, аудиодекодеру, включенному в терминальное устройство, отдается приоритет для выполнения обработки аудиодекодирования.

Для терминального устройства со своим дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR) / цифрового видеорегистратора (DVR) 3112, телевизора 3114, карманного персонального компьютера (КПК) 3122 или устанавливаемого на транспортное средство устройства 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, такого как STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, контакт в нем устанавливается с внешним дисплеем 3126 для приема и показа декодированных данных.

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

Фиг. 11 является схемой, показывающей структуру примерного терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи упомянутого потока. Протокол включает в себя, но без ограничения упомянутым, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи HTTP Live (HLS), MPEG-DASH, транспортный протокол реального времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию, или подобное.

После того, как блок 3202 обработки протокола обработает поток, формируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на закодированные аудиоданные и закодированные видеоданные. Как описано выше, в других практических сценариях, например, в системе видеоконференцсвязи, закодированные аудиоданные и закодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования блока 3204 демультиплексирования.

Посредством обработки демультиплексирования формируются элементарный поток (ES) видео, ES аудио и, опционально, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, описанный в вышеупомянутых вариантах осуществления, декодирует ES видео с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для формирования видеокадра и подает эти данные в блок 3212 синхронизации. Аудиодекодер 3212 декодирует аудио ES для формирования аудиокадра и подает эти данные в блок 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на Фиг. Y) перед его подачей в блок 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на Фиг. Y) перед его подачей в блок 3212 синхронизации.

Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио в видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может кодироваться в синтаксисе с использованием временных меток, касающихся представления кодированных аудио- и видеоданных, а также временных меток, касающихся доставки самого потока данных.

Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.

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

Математические операторы

Математические операторы, используемые в этой заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и вещественнозначное деление. Соглашения о нумерации и подсчете определяют начало с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т. д.

Арифметические операторы

Следующие арифметические операторы определены следующим образом:

+ Сложение - Вычитание (как оператор с двумя аргументами) или отрицание (как унарный префиксный оператор) * Умножение, в том числе матричное умножение xy Возведение в степень. Определяет x в степени y. В других контекстах такое обозначение используется в качестве надстрочного индекса, которое не следует интерпретировать в качестве возведения в степень. / Целочисленное деление с усечением результата в сторону нуля. Например, 7/4 и -7 / -4 усекаются до 1, а -7/4 и 7 / -4 усекаются до -1. ÷ Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление. Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление. Суммирование f( i ), где i принимает все целые значения от x до y включительно. x % y Операция по модулю. Остаток от деления x на y, определена только для целых чисел x и y, где x >= 0 и y > 0.

Логические операторы

Следующие логические операторы определены следующим образом:

x && y Булево логическое «и» для x и y

х || y Булево логическое «или» для x и y

!Булево логическое «не»

x?y:z Если x равен «ИСТИНА» или не равен 0, вычисляется значение y; в противном случае вычисляется значение z.

Операторы отношения

Следующие операторы отношения определены следующим образом:

>Больше

>=Больше или равно

<Меньше

<=Меньше или равно

= =Равно

!=Не равно

Когда оператор сравнения применяется к синтаксическому элементу или переменной, которому(ой) присвоено значение «na» (б not applicable, не применимо), значение «na» обрабатывается как отдельное значение для синтаксического элемента или переменной. Значение «na» не считается равным любому другому значению.

Битовые операторы

Следующие побитовые операторы определены следующим образом:

&Побитовое «и». При работе над целочисленными аргументами оперирует над представлением дополнения до двух целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.

|Побитовое «или». При работе над целочисленными аргументами оперирует над представлением дополнения до двух целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.

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

x >> y Арифметический сдвиг вправо целочисленного представления дополнения до двух x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в старшие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB для x до операции сдвига.

x << y Арифметический сдвиг влево целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в младшие биты (LSB) в результате сдвига влево, имеют значение, равное 0.

Операторы присваивания

Следующие арифметические операторы определены следующим образом:

=Оператор присвоения

++Приращение, т.е. x++ эквивалентно x=x+1; при использовании в индексе массива оценивается в значение переменной до операции приращения.

--Уменьшение, т.е. x- - эквивалентно x=x-1; при использовании в индексе массива оценивает значение переменной до операции уменьшения.

+=Приращение на указанную величину, т.е. x+=3 эквивалентно x=x+3, и x+=(-3) эквивалентно x=x+(-3)

-=Уменьшение на указанную величину, т.е. x-=3 эквивалентно x=x-3, а x-=(-3) эквивалентно x=x-(-3).

Обозначение диапазона

Следующее обозначение используется для специфицирования диапазона значений:

x=y..z x принимает целочисленные значения от y до z включительно, где x, y и z являются целыми числами, а z больше y.

Математические функции

Определены следующие математические функции:

Abs(x)=

Asin(x)тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан

Atan(x)тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан

Atan2(y, x)=

Ceil(x)наименьшее целое число, которое больше или равно x.

Clip1Y(x)=Clip3( 0, ( 1 << BitDepthY ) - 1, x )

Clip1C(x)=Clip3( 0, ( 1 << BitDepthC ) - 1, x )

Clip3(x, y, z)=

Cos(x)тригонометрическая функция косинуса, работающая с аргументом x в единицах радиан.

Floor(x) наибольшее целое число, меньшее или равное x.

GetCurrMsb(a, b, c, d)=

Ln(x)натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма, равная 2,718 281 828…).

Log2(x) - логарифм x по основанию 2

Log10(x) - логарифм x по основанию 10.

Min(x, y)=

Max(x, y)=

Round( x )=Sign( x ) * Floor( Abs( x ) + 0,5)

Sign(x)=

Sin(x)тригонометрическая функция синуса, работающая с аргументом x в единицах радиан.

Sqrt(x)=

Swap(x, y)=(y, x)

Tan(x)тригонометрическая функция тангенса, работающая с аргументом x в единицах радиан.

Порядок приоритетности операций

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

-- Операции с более высоким приоритетом выполняются перед любой операцией с более низким приоритетом.

-- Операции с одинаковым приоритетом выполняются последовательно слева направо.

В таблице ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет.

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

Таблица: Приоритетность операций от наивысшей (в верхней части таблицы) до низшей (в нижней части таблицы)

операции (с операндами x, y и z) "x++", "x--" "!x", "-x" (как унарный префиксный оператор) xy "x*y", "x/y", "x÷y", "", "x%y" "x+y", "x-y" (как оператор с двумя аргументами), " " "x<<y", "x>>y" "x<y", "x<=y", "x>y", "x>=y" "x==y", "x!=y" "x&y" "x|y" "x&&y" "x||y" "x?y:z" "x..y" "x=y", "x+=y", "x-=y"

Текстовое описание логических операций

В тексте определение логических операций, которое математически бы описывалось в следующей форме:

if( условие 0 )

определение 0

else if( условие 1 )

определение 1

… else /* информативный комментарий по оставшемуся условию */

определение n

может быть описано следующим образом:

… как указано ниже / … применяется следующее:

- Если условие 0, определение 0

- Иначе, Если условие 1, определение 1

- …

-- Иначе (информативный комментарий по оставшемуся условию), определение n.

Каждое определение "если … Иначе, если … Иначе, …" в тексте вводится словами "… как указано ниже" или "…применяется следующее", за которым сразу следует "если …". Последним условием "если … Иначе, если … Иначе, …" всегда является "Иначе, …". Чередование определений "если … Иначе, если … Иначе, …" могут быть идентифицированы путем сопоставления "… как указано ниже" или "… применяется следующее" с завершающим "Иначе, …".

В тексте определение логических операций, которое математически бы описывалось в следующей форме:

if( условие 0a && условие 0b )

определение 0

else if( условие 1a | | условие 1b )

определение 1

else

определение n

может быть описано следующим образом:

… как указано ниже / … применяется следующее:

-- Если все из следующих условий выполняются, определение 0:

- условие 0a

- условие 0b

-- Иначе, если истинными являются одно или более из следующих условий, определение 1:

- условие 1a

- условие 1b

- …

- Иначе, определение n

В тексте определение логических операций, которое математически бы описывалось в следующей форме:

if( условие 0 )

определение 0

if( условие 1 )

определение 1

может быть описано следующим образом:

Когда условие 0, определение 0

Когда условие 1, определение 1

Хотя варианты осуществления данного изобретения были в основном описаны на основе видеокодирования, следует отметить, что варианты осуществления системы 10 кодирования/декодирования, кодера 20 и декодера 30 (и, соответственно, системы 10), а также другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодирования/декодирования неподвижного изображения, т.е. обработки или кодирования/декодирования отдельного изображения независимо от любого предшествующего или последующего изображения, как при кодировании/декодировании видео. В общем, только блоки 244 межкадрового предсказания (кодер) и 344 (декодер) могут не быть доступны в случае, если кодирование/декодирование для обработки изображения ограничено одним изображением 17. Все другие функциональные возможности (также именуемые инструментами или технологиями) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки неподвижных изображений, например вычисления 204/304 остатка, преобразования 206, квантования 208, обратного квантования 210/310, (обратного) преобразования 212/312, разделения 262/362, внутрикадрового предсказания 254/354 и/или контурной фильтрации 220, 320 и энтропийного кодирования/декодирования 270 и энтропийного декодирования 304.

Варианты осуществления, например кодера 20 и декодера 30, а также описанные в данном документе функции, например применительно к кодеру 20 и декодеру 30 могут быть реализованы аппаратным обеспечением, программным обеспечением, микропрограммным обеспечением или любой их комбинацией. Если реализованы в программном обеспечении, функции могут храниться на считываемом компьютером носителе или передаваться через среду связи в виде одной или более инструкций или кода и исполняться аппаратным блоком обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальному носителю, например носителю данных, или среде связи, в том числе любой среде, которая обеспечивает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) материальным считываемым компьютером запоминающим носителям, которые являются долговременными, или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может быть осуществлен доступ одним или более компьютерами или одним или более процессорами для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.

В качестве примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть считываемой компьютером средой. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная-, радио- и микроволновая- связь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая- связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на долговременные, материальные запоминающие носители. Понятие «диск», используемове в данном документе, включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, а диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.

Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, интегральных схем специального назначения (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин «процессор», используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации методик, описанных в данном документе. Кроме того, в некоторых аспектах функциональные возможности, описанные в данном документе, могут быть предоставлены в рамках специализированных аппаратных и/или программных блоков, выполненных с возможностью кодирования и декодирования, или включены в комбинированный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.

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

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

название год авторы номер документа
Способ и устройство для видеокодирования 2020
  • Ли Лин
  • Ли Сян
  • Лю Шань
RU2782516C1
СПОСОБ И АППАРАТНЫЙ КОМПОНЕНТ СИГНАЛИЗАЦИИ ЧИСЛА КАНДИДАТОВ ДЛЯ РЕЖИМА СЛИЯНИЯ 2021
  • Филиппов, Алексей Константинович
  • Руфицкий, Василий Алексеевич
  • Алшина, Елена Александровна
RU2823267C1
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ О СИГНАЛИЗАЦИИ СИНТАКСИСА ВЫСОКОГО УРОВНЯ 2021
  • Котра, Ананд Меер
  • Эсенлик, Семих
  • Ван, Бяо
  • Гао, Хань
  • Алшина, Елена Александровна
RU2826547C1
ОБОРУДОВАНИЕ И СПОСОБ ДЛЯ КОДИРОВАНИЯ ИЗОБРАЖЕНИЙ НА ОСНОВЕ ФИЛЬТРАЦИИ 2020
  • Чой, Дзангвон
  • Нам, Дзунгхак
RU2787884C1
ПРЕОБРАЗОВАНИЕ ИЗОБРАЖЕНИЯ В КОДИРОВАНИИ ВИДЕО С ИСПОЛЬЗОВАНИЕМ ОПТИМИЗАЦИИ ЗАВИСИМОСТИ ИСКАЖЕНИЯ ОТ СКОРОСТИ ПЕРЕДАЧИ 2019
  • Инь, Пэн
  • Пу, Фанцзюнь
  • Лу, Таожань
  • Чэнь, Тао
  • Гусак, Уолтер Дж.
  • Маккарти, Шон Томас
RU2741586C1
СИСТЕМА И СПОСОБ ДЛЯ КОДИРОВКИ ВИДЕО 2020
  • Куо, Чэ Вэй
  • Лим, Чонг Соон
  • Тео, Хан Боон
  • Ли, Цзин Я
  • Сунь, Хай Вэй
  • Ванг, Чу Тонг
  • Тома, Тадамаса
  • Ниси, Такахиро
  • Абе, Киёфуми
  • Като, Юсуке
RU2824190C2
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ С ИСПОЛЬЗОВАНИЕМ АДАПТИВНОГО КОНТУРНОГО ФИЛЬТРА 2020
  • Котра, Ананд Меер
  • Эсенлик, Семих
  • Чен, Цзянле
  • Гао, Хань
  • Ван, Бяо
RU2823558C2
СИСТЕМА И СПОСОБ ДЛЯ КОДИРОВКИ ВИДЕО 2020
  • Куо, Чэ-Вэй
  • Лим, Чонг Соон
  • Тео, Хан Боон
  • Ли, Цзин Я
  • Сунь, Хай Вэй
  • Ванг, Чу Тонг
  • Тома, Тадамаса
  • Ниси, Такахиро
  • Абе, Киёфуми
  • Като, Юсуке
RU2813135C1
СИГНАЛИЗАЦИЯ СИНТАКСИЧЕСКИХ ЭЛЕМЕНТОВ НА УРОВНЕ БЕЗ ИЗОБРАЖЕНИЙ НА УРОВНЕ ИЗОБРАЖЕНИЙ 2020
  • Хендри, Фну
  • Ван, Е-Куй
  • Чэнь, Цзяньлэ
RU2826697C1
УСТРОЙСТВО И СПОСОБ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ ДЛЯ УПРАВЛЕНИЯ КОНТУРНОЙ ФИЛЬТРАЦИЕЙ 2020
  • Хендри, Хендри
  • Палури, Сеетхал
  • Ким, Сеунгхван
RU2802374C1

Иллюстрации к изобретению RU 2 827 439 C1

Реферат патента 2024 года МЕЖКОМПОНЕНТНАЯ АДАПТИВНАЯ КОНТУРНАЯ ФИЛЬТРАЦИЯ ДЛЯ КОДИРОВАНИЯ ВИДЕО

Изобретение относится к области обработки изображений. Техническим результатом является улучшение межкомпонентной адаптивной контурной фильтрации и синтаксических элементов для межкомпонентного адаптивного контурного фильтра (CCALF). Результат достигается тем, что путем формирования множества синтаксических элементов, относящихся к адаптивному контурному фильтру (ALF), вводятся записи заголовка изображения для CCALF, которые определяют общие данные CCALF, и все слайсы могут затем наследовать эту общую информацию. При этом упомянутое множество синтаксических элементов, относящихся к ALF, содержит первый синтаксический элемент, который указывает, включен или нет адаптивный контурный фильтр ALF на уровне последовательности, и первый синтаксический элемент сигнализируется на уровне набора параметров последовательности (SPS), и второй синтаксический элемент, который указывает, включен или нет межкомпонентный адаптивный контурный фильтр на уровне последовательности, и второй синтаксический элемент сигнализируется на уровне SPS. 5 н. и 14 з.п. ф-лы, 21 ил., 1 табл.

Формула изобретения RU 2 827 439 C1

1. Способ (4200) кодирования, реализуемый устройством кодирования, содержащий:

применение (4201) межкомпонентного адаптивного контурного фильтра CC-ALF для уточнения компонента цветности;

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

при этом упомянутое множество синтаксических элементов, относящихся к ALF, сигнализируется на любом одном или более из уровня набора параметров последовательности (SPS), заголовка изображения или заголовка слайса;

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

2. Способ по п. 1, в котором упомянутое множество синтаксических элементов, относящихся к ALF, содержит третий синтаксический элемент, когда второй синтаксический элемент указывает, что CC-ALF включен, при этом третий синтаксический элемент сигнализируется в заголовке изображения, и третий синтаксический элемент указывает, включен ли CC-ALF для текущего изображения, содержащего множество слайсов.

3. Способ по п. 1 или 2, в котором упомянутое множество синтаксических элементов, относящихся к ALF, содержит четвертый синтаксический элемент, когда второй синтаксический элемент указывает, что CC-ALF включен, при этом четвертый синтаксический элемент сигнализируется в заголовке изображения, и четвертый синтаксический элемент указывает, включен ли CC-ALF для цветового компонента Cb для текущего изображения видеопоследовательности, связанной с битовым потоком.

4. Способ по п. 3, в котором, если четвертый синтаксический элемент имеет значение 1, это указывает, что CC-ALF для цветового компонента Cb включен для текущего изображения, и/или, если четвертый синтаксический элемент имеет значение 0, это указывает, что CC-ALF для цветового компонента Cb отключен для текущего изображения.

5. Способ по любому из пп. 1-4, в котором упомянутое множество синтаксических элементов, связанных с CC-ALF, содержит седьмой синтаксический элемент, когда второй синтаксический элемент указывает, что CC-ALF включен, при этом седьмой синтаксический элемент сигнализируется в заголовке изображения и седьмой синтаксический элемент указывает, включен ли CC-ALF для цветового компонента Cr для текущего изображения видеопоследовательности, связанной с битовым потоком.

6. Способ (4300) декодирования, реализуемый устройством декодирования, содержащий:

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

при этом упомянутое множество синтаксических элементов, относящихся к ALF, содержит первый синтаксический элемент, который указывает, включен или нет адаптивный контурный фильтр (ALF) на уровне последовательности, и первый синтаксический элемент сигнализируется на уровне SPS, и второй синтаксический элемент, который указывает, включен ли межкомпонентный адаптивный контурный фильтр, CC-ALF, или нет на уровне последовательности, и второй синтаксический элемент сигнализируется на уровне SPS; и

выполнение (4302) процесса CC-ALF с использованием по меньшей мере одного из упомянутого множества синтаксических элементов, относящихся к ALF.

7. Способ по п. 6, в котором упомянутое множество синтаксических элементов, относящихся к ALF, содержит третий синтаксический элемент, когда получен второй синтаксический элемент, указывающий, что CC-ALF включен, при этом третий синтаксический элемент получается из заголовка изображения, и третий синтаксический элемент указывает, включен ли CC-ALF для текущего изображения, содержащего множество слайсов.

8. Способ по п. 6 или 7, в котором упомянутое множество синтаксических элементов, относящихся к ALF, содержит четвертый синтаксический элемент, когда получен второй синтаксический элемент, указывающий, что CC-ALF включен, при этом четвертый синтаксический элемент получается из заголовка изображения и четвертый синтаксический элемент указывает, включен ли CC-ALF для цветового компонента Cb для текущего изображения видеопоследовательности.

9. Способ по п. 8, в котором, если четвертый синтаксический элемент имеет значение 1, это указывает, что CC-ALF для цветового компонента Cb включен для текущего изображения, и/или, если четвертый синтаксический элемент имеет значение 0, это указывает, что CC-ALF для цветового компонента Cb отключен для текущего изображения.

10. Способ по п. 8 или 9, в котором упомянутое множество синтаксических элементов, относящихся к ALF, содержит пятый синтаксический элемент, когда четвертый синтаксический элемент CC-ALF для цветового компонента Cb включен для текущего изображения, при этом пятый синтаксический элемент получается из заголовка изображения и пятый синтаксический элемент указывает набор параметров, который связан с цветовым компонентом Cb всех слайсов в текущем изображении.

11. Способ по любому из пп. 6-10, в котором упомянутое множество синтаксических элементов, связанных с CC-ALF, содержит седьмой синтаксический элемент, когда получен второй синтаксический элемент, указывающий, что CC-ALF включен, при этом седьмой синтаксический элемент получается из заголовка изображения, и седьмой синтаксический элемент указывает, включен ли CC-ALF для цветового компонента Cr для текущего изображения видеопоследовательности, связанной с битовым потоком.

12. Способ по п. 10, в котором, если седьмой синтаксический элемент имеет значение 1, это указывает, что CC-ALF для цветового компонента Cr включен для текущего изображения, и/или, если седьмой синтаксический элемент имеет значение 0, это указывает, что CC-ALF для цветового компонента Cr отключен для текущего изображения.

13. Способ по п. 10 или 11, в котором упомянутое множество синтаксических элементов, связанных с CC-ALF, содержит восьмой синтаксический элемент, когда получен седьмой синтаксический элемент, указывающий, что CC-ALF для цветового компонента Cr включен для текущего изображения, при этом восьмой синтаксический элемент получается из заголовка изображения, и восьмой синтаксический элемент указывает набор параметров, который связан с цветовым компонентом Cr всех слайсов в текущем изображении.

14. Способ по любому из пп. 7-12, в котором четвертый синтаксический элемент, пятый синтаксический элемент, шестой синтаксический элемент, седьмой синтаксический элемент, восьмой синтаксический элемент и девятый синтаксический элемент получаются, когда получен третий синтаксический элемент, указывающий, что CC-ALF включен для текущего изображения видеопоследовательности, связанной с битовым потоком.

15. Способ по любому из пп. 6-13, в котором упомянутое множество синтаксических элементов, относящихся к CC-ALF, содержит десятый синтаксический элемент, когда получен второй синтаксический элемент, указывающий, что CC-ALF включен, при этом десятый синтаксический элемент получается из заголовка слайса и десятый синтаксический элемент указывает, включен ли CCALF для цветового компонента Cb для текущего слайса текущего изображения видеопоследовательности, связанной с битовым потоком.

16. Способ по любому из пп. 6-15, в котором второй синтаксический элемент получается, если первый синтаксический элемент имеет первое значение, или в котором второй синтаксический элемент получается условно по меньшей мере на основании значения первого синтаксического элемента.

17. Устройство для кодирования видеоданных, содержащее:

память видеоданных; и

видеокодер, при этом видеокодер выполнен с возможностью:

применения межкомпонентного адаптивного контурного фильтра CC-ALF для уточнения компонента цветности; и

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

при этом упомянутое множество синтаксических элементов, относящихся к ALF, сигнализируется на любом одном или более из уровня набора параметров последовательности (SPS), заголовка изображения или заголовка слайса;

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

18. Устройство для декодирования видеоданных, содержащее:

память видеоданных; и

видеодекодер, при этом видеодекодер выполнен с возможностью:

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

при этом упомянутое множество синтаксических элементов, относящихся к ALF, содержит первый синтаксический элемент, который указывает, включен или нет адаптивный контурный фильтр (ALF) на уровне последовательности, и первый синтаксический элемент сигнализируется на уровне SPS, и второй синтаксический элемент, который указывает, включен ли межкомпонентный адаптивный контурный фильтр, CC-ALF, или нет на уровне последовательности, и второй синтаксический элемент сигнализируется на уровне SPS; и

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

19. Считываемый компьютером носитель данных, содержащий исполняемые компьютером инструкции, которые при выполнении вычислительным устройством предписывают вычислительному устройству выполнять способ по любому из пп. 1-16.

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

CN 104683819 A, 2015.06.03
US 8548062 B2, 2013.10.01
US 2012039383 A1, 2012.02.16
US 2019373258 A1, 2019.12.05
US 10200700 B2, 2019.02.05
US 10419757 B2, 2019.09.17
US 2019238845 A1, 2019.08.01
US 10440396 B2, 2019.10.08
US 10225554 B2, 2019.03.05
СИГНАЛИЗАЦИЯ ПАРАМЕТРОВ ФИЛЬТРА УДАЛЕНИЯ БЛОЧНОСТИ ПРИ КОДИРОВАНИИ ВИДЕО 2013
  • Ван Дер Аувера Герт
  • Ван Е-Куй
  • Карчевич Марта
RU2573743C1
US 2018115787 A1, 2018.04.26.

RU 2 827 439 C1

Авторы

Котра, Ананд Меер

Эсенлик, Семих

Алшина, Елена Александровна

Гао, Хань

Ван, Бяо

Даты

2024-09-26Публикация

2020-12-23Подача