ОБЛАСТЬ ТЕХНИКИ
Варианты осуществления настоящей заявки в целом относятся к области обработки изображений и, более конкретно, к сигнализации синтаксических элементов в наборе параметров последовательности.
УРОВЕНЬ ТЕХНИКИ
Кодирование видео (кодирование и декодирование видео) используется в широком диапазоне применений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-Ray диски, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.
Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством декомпрессии видео получателя, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео, желательны улучшенные способы сжатия и декомпрессии, которые улучшают степень сжатия с минимальными потерями качества изображения или вообще без таких потерь.
В частности, сигнализация синтаксических элементов в наборе параметров последовательности, закодированных в битовом потоке, которые используются для предоставления информации буфера декодированного изображения, страдает от неэффективности и даже несоответствий в уровне техники (см. подробное описание ниже). Таким образом, целью настоящей заявки является предоставление способов сигнализации таких синтаксических элементов с улучшенной эффективностью кодирования.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Варианты осуществления настоящей заявки обеспечивают устройства и способы для кодирования и декодирования согласно независимым пунктам формулы изобретения.
Вышеупомянутые и другие цели достигаются изобретением по независимым пунктам формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур.
Согласно первому аспекту изобретение относится к способу декодирования битового потока видео, реализуемому устройством декодирования, в котором набор параметров последовательности, SPS, закодирован в битовом потоке видео и содержит синтаксические элементы, которые применяются к видеопоследовательности. Способ включает в себя получение значения первого синтаксического элемента (например, флага) из SPS, при этом значение первого синтаксического элемента используется для указания того, присутствует ли синтаксическая структура параметров буфера декодированного изображения, DPB, в SPS. Способ дополнительно содержит получение значения второго синтаксического элемента (например, флага) из SPS, по меньшей мере, при определении (определяется), что значение первого синтаксического элемента указывает, что синтаксическая структура параметров DPB присутствует в SPS, при этом значение второго синтаксического элемента используется для указания присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB, при этом синтаксический элемент DPB применяется к временному подуровню, за исключением самого высокого временного подуровня в видеопоследовательности.
Например, значение второй синтаксической структуры может быть получено только тогда, когда определено, что значение первого синтаксического элемента, который указывает, что синтаксическая структура параметров DPB присутствует в SPS. Здесь и далее первым синтаксическим элементом может быть sps_ptl_dpb_hrd_params_present_flag в соответствии с подробным описанием ниже, а вторым синтаксическим элементом может быть sps_sublayer_dpb_params_flag в соответствии с подробным описанием ниже. Здесь и далее синтаксический элемент DPB может быть одним из max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] в соответствии с приведенным ниже подробным описанием.
Предоставленный таким образом способ декодирования битового потока видео гарантирует эффективную сигнализацию синтаксических элементов DPB. В частности, второй синтаксический элемент надежно управляет наличием синтаксических элементов DPB в синтаксической структуре параметров DPB, когда они присутствуют.
В соответствии с реализацией способ дополнительно содержит получение значения синтаксического элемента DPB на основе значения второго синтаксического элемента (например, когда второй синтаксический элемент указывает, что синтаксический элемент DPB присутствует в синтаксической структуре параметров DPB, в частности, только когда второй синтаксический элемент указывает, что синтаксический элемент DPB присутствует в синтаксической структуре параметров DPB) и восстанавливают видеопоследовательность на основе значения синтаксического элемента DPB. Таким образом, восстановление видеопоследовательности может быть достигнуто на основе надежной и эффективной сигнализации информации DPB.
Этап получения значения синтаксического элемента DPB на основе значения второго синтаксического элемента может содержать:
получение значения синтаксического элемента DPB из синтаксической структуры параметров DPB при определении (определяется), что значение второго синтаксического элемента указывает, что синтаксический элемент DPB присутствует в синтаксической структуре параметров DPB, или
установку значения синтаксического элемента DPB равным значению другого синтаксического элемента DPB, применяемого к самому высокому временному подуровню в синтаксической структуре параметров DPB, при определении (определяется), что значение второго синтаксического элемента указывает, что синтаксический элемент DPB отсутствует в синтаксической структуре параметров DPB.
Таким образом, можно гарантировать, что определенное значение синтаксического элемента DPB доступно в любой ситуации и может быть использовано для восстановления видеопоследовательности, и не следует беспокоиться о каком-либо неопределенном поведении в этом отношении.
Надежно полученное таким образом значение синтаксического элемента DPB можно использовать для конфигурирования DPB, например, для хранения опорных изображений, используемых для обработки межкадрового предсказания. Соответственно, этап восстановления видеопоследовательности на основе значения синтаксического элемента DPB может содержать настройку DPB на основе значения синтаксического элемента DPB и восстановление видеопоследовательности с использованием DPB.
В качестве альтернативы этап восстановления видеопоследовательности на основе значения синтаксического элемента DPB может содержать восстановление видеопоследовательности на основе определения того, что используемый DPB удовлетворяет требованию, заданному значением синтаксического элемента DPB. Таким образом, можно проверить, подходит ли предоставленный DPB для восстановления видеопоследовательности.
Согласно реализации, способ декодирования битового потока видео дополнительно содержит
получение значения третьего синтаксического элемента из SPS, при этом значение третьего синтаксического элемента используется для определения максимального количества временных подуровней, присутствующих в видеопоследовательности. Значение третьего синтаксического элемента может быть нулевым, если имеется только один временной подуровень. Определение максимального количества временных подуровней, которые присутствуют в видеопоследовательности, облегчается простой сигнализацией третьего синтаксического элемента, который может быть выгодным с точки зрения эффективности кодирования.
Здесь и далее третьим синтаксическим элементом может быть sps_max_sublayers_minus1 в соответствии с приведенным ниже подробным описанием.
Этап получения значения второго синтаксического элемента из SPS может содержать
определение того, больше ли максимальное количество временных подуровней в битовом потоке видео, чем 1, на основе значения третьего синтаксического элемента, при определении (определяется), что значение первого синтаксического элемента указывает, что синтаксическая структура параметров DPB присутствует в SPS и получает значение второго синтаксического элемента из SPS при определении (определяется), что максимальное количество временных подуровней больше одного. Например, значение второго синтаксического элемента может быть получено из SPS только тогда, когда определено, что максимальное количество временных подуровней больше одного. Таким образом, эффективность кодирования может быть дополнительно повышена, так как в случае, когда максимальное количество временных уровней не больше одного (т. е. имеется только один временной подуровень), значение второго синтаксического элемента может вообще не считываться. (например, если в этом случае это становится бессмысленным) и для одного временного уровня синтаксические элементы DPB могут всегда сигнализироваться в SPS.
Согласно второму аспекту предлагается способ кодирования битового потока видео, реализуемый устройством кодирования, в котором набор параметров последовательности, SPS, кодируется в битовом потоке видео и содержит синтаксические элементы, которые применяются к видеопоследовательности, которая показывает те же преимущества, о которых говорилось выше. Способ включает в себя следующие этапы:
определение наличия буфера декодированного изображения, DPB, параметров синтаксической структуры в SPS;
кодирование значения первого синтаксического элемента (например, флага) в SPS на основе определения наличия синтаксической структуры параметров DPB в SPS, при этом значение первого синтаксического элемента используется для указания того, является ли DPB синтаксическая структура параметров присутствует в SPS;
определение наличия синтаксического элемента DPB в синтаксической структуре параметров DPB, при определении (определяется, например, только тогда, когда определено) , что синтаксическая структура параметров DPB присутствует в SPS, при этом синтаксический элемент DPB применяется к временному подуровню, за исключением самого высокого временного подуровня в видеопоследовательности; и
кодирование значения второго синтаксического элемента (например, флага) в SPS на основе определения наличия синтаксического элемента DPB в синтаксической структуре параметров DPB, при этом значение второго синтаксического элемента используется для указания наличия синтаксического элемента DPB в синтаксической структуре параметров DPB.
В соответствии с реализацией способ кодирования дополнительно содержит определение значения синтаксического элемента DPB при определении (определяется), что синтаксический элемент DPB присутствует в синтаксической структуре параметров DPB; и восстанавливают видеопоследовательность на основе значения синтаксического элемента DPB.
В соответствии с реализацией способ кодирования дополнительно содержит установку значения синтаксического элемента DPB равным значению другого синтаксического элемента DPB, применяемого к самому высокому временному подуровню в синтаксической структуре параметров DPB, и восстановление видеопоследовательности на основе значения синтаксического элемента DPB.
Этап восстановления видеопоследовательности на основе значения синтаксического элемента DPB может содержать настройку DPB для удовлетворения значения синтаксического элемента DPB и восстановление видеопоследовательности с использованием DPB.
В соответствии с реализацией наличие синтаксического элемента DPB в синтаксической структуре параметров DPB определяется, когда определяется (например, только когда определяется), что синтаксическая структура параметров DPB присутствует в SPS, и максимальное количество временных подуровней в битовом потоке видео больше одного.
Кроме того, предусмотрено устройство для декодирования и устройство для кодирования битового потока видео, которые, соответственно, демонстрируют те же преимущества, что и вышеописанные способы.
В соответствии с третьим аспектом предоставляется устройство для декодирования (кодированного) битового потока видео, при этом устройство содержит:
блок получения, выполненный с возможностью получения значения первого синтаксического элемента (например, флага) из SPS, при этом значение первого синтаксического элемента используется для указания того, присутствует ли синтаксическая структура параметров буфера декодированного изображения, DPB, в SPS, закодированный в битовом потоке видео; и
блок определения, выполненный с возможностью определения того, указывает ли значение первого синтаксического элемента, что синтаксическая структура параметров DPB присутствует в SPS; и при этом
блок получения дополнительно выполнен с возможностью получения значения второго синтаксического элемента (например, флага) от SPS, по меньшей мере, при определении (например, он определяется только тогда, когда он определен) того, что значение первого синтаксического элемента указывает, что синтаксическая структура параметров DPB присутствует в SPS, при этом значение второго синтаксического элемента используется для указания присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB, при этом синтаксический элемент DPB применяется к временному подуровню, за исключением самого высокого временного подуровня в видеопоследовательности.
Например, значение второй синтаксической структуры может быть получено блоком получения только тогда, когда определено, что значение первого синтаксического элемента, который указывает, что синтаксическая структура параметров DPB присутствует в SPS.
В соответствии с реализацией блок получения дополнительно выполнен с возможностью получения значения синтаксического элемента DPB на основе значения второго синтаксического элемента и восстановления видеопоследовательности на основе значения синтаксического элемента DPB.
Получение значения синтаксического элемента DPB на основе значения второго синтаксического элемента может содержать:
получение значения синтаксического элемента DPB из синтаксической структуры параметров DPB при определении (определяется), что значение второго синтаксического элемента указывает, что синтаксический элемент DPB присутствует в синтаксической структуре параметров DPB, или
установку значения синтаксического элемента DPB равным значению другого синтаксического элемента DPB, применяемого к самому высокому временному подуровню в синтаксической структуре параметров DPB, при определении (определяется), что значение второго синтаксического элемента указывает, что синтаксический элемент DPB отсутствует в синтаксической структуре параметров DPB.
Восстановление видеопоследовательности на основе значения синтаксического элемента DPB может содержать настройку DPB на основе значения синтаксического элемента DPB; и восстановление видеопоследовательность с использованием DPB.
При этом DPB используется для хранения изображений для построения списка опорных изображений.
Альтернативно, восстановление видеопоследовательности на основе значения синтаксического элемента DPB может содержать восстановление видеопоследовательности на основе определения того, что используемый DPB удовлетворяет требованию, заданному значением синтаксического элемента DPB.
В соответствии с реализацией блок получения дополнительно выполнен с возможностью получения значения третьего синтаксического элемента из SPS, при этом значение третьего синтаксического элемента используется для определения максимального количества временных подуровней, присутствующих в видеопоследовательности.
Получение значения второго синтаксического элемента из SPS может содержать
определение того, больше ли максимальное количество временных подуровней в битовом потоке видео, чем 1, на основе значения третьего синтаксического элемента, при определении (определяется), что значение первого синтаксического элемента указывает, что синтаксическая структура параметров DPB присутствует в SPS и получает значение второго синтаксического элемента из SPS при определении (определяется), что максимальное количество временных подуровней больше одного.
В соответствии с четвертым аспектом предлагается устройство для кодирования битового потока видео, при этом устройство содержит:
блок определения, выполненный с возможностью определения наличия буфера декодированного изображения, DPB, синтаксической структуры параметров в SPS;
блок кодирования, выполненный с возможностью кодирования значения первого синтаксического элемента (например, флага) в SPS на основе определения присутствия синтаксической структуры параметров DPB в SPS, при этом значение первого синтаксического элемента используется для указания, присутствует ли синтаксическая структура параметров DPB в SPS; в которой
блок определения дополнительно выполнен с возможностью определения наличия синтаксического элемента DPB в синтаксической структуре параметров DPB при определении (например, он определяется только тогда, когда он определен), что синтаксическая структура параметров DPB присутствует в SPS, при этом синтаксический элемент DPB применяется к временному подуровню, за исключением самого высокого временного подуровня в видеопоследовательности; и при этом
блок кодирования дополнительно выполнен с возможностью кодирования значения второго синтаксического элемента (например, флага) в SPS на основе определения наличия синтаксического элемента DPB в синтаксической структуре параметров DPB, при этом значение второго синтаксического элемента используется для указания присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB.
В соответствии с реализацией блок определения дополнительно выполнен с возможностью определения значения синтаксического элемента DPB при определении (определяется), что синтаксический элемент DPB присутствует в синтаксической структуре параметров DPB; и восстановления видеопоследовательности на основе значения синтаксического элемента DPB.
В соответствии с реализацией блок кодирования дополнительно выполнен с возможностью установки значения синтаксического элемента DPB равным значению другого синтаксического элемента DPB, применяемого к самому высокому временному подуровню в синтаксической структуре параметров DPB, и восстановления видеопоследовательности на основе значения синтаксического элемента DPB.
Восстановление видеопоследовательности на основе значения синтаксического элемента DPB может содержать настройку DPB для удовлетворения значения синтаксического элемента DPB; и восстанавливают видеопоследовательность с использованием DPB.
В соответствии с реализацией блок определения выполнен с возможностью определения того, что синтаксический элемент DPB присутствует в синтаксической структуре параметров DPB, когда блок определения определяет, что синтаксическая структура параметров DPB присутствует в SPS, и максимальное количество временных подуровней в битовый поток видео больше одного.
Вышеописанные способы могут быть реализованы в устройствах декодирования или кодирования, соответственно. Соответственно, предоставляется кодер, содержащий схему обработки для выполнения способа кодирования битового потока видео согласно любому из описанных выше примеров. Кроме того, предоставляется кодер, содержащий один или более процессоров и не-кратковременный считываемый компьютером носитель данных, соединенный с процессорами и хранящий программную часть для выполнения процессорами, при этом программная часть, когда она выполняется процессорами, конфигурирует кодер для выполнения способа кодирования битового потока видео согласно любому из вышеописанных примеров. Аналогичным образом, предлагается декодер, содержащий схему обработки для выполнения способа декодирования битового потока видео в соответствии с любым из вышеописанных примеров, и декодер, содержащий один или более процессоров и не-кратковременный считываемый компьютером носитель данных, соединенный с процессоры хранящий программную часть для выполнения процессорами, при этом программная часть, когда она выполняется процессорами, конфигурирует декодер для выполнения способа декодирования битового потока видео в соответствии с любым из вышеописанных примеров.
Кроме того, предоставляется компьютерный программный продукт, содержащий программный код для выполнения способа в соответствии с любым из вышеописанных примеров при выполнении на компьютере или процессоре. Точно так же предоставляется не-кратковременный считываемый компьютером носитель, содержащий программный код, который при выполнении компьютерным устройством предписывает компьютерному устройству выполнять способ любого из вышеописанных примеров.
Кроме того, предоставляется не-кратковременный носитель данных, который включает в себя закодированный битовый поток, при этом битовый поток формируется путем деления текущего изображения видеосигнала или сигнала изображения на множество блоков и содержит множество синтаксических элементов, при этом множество синтаксических элементов содержит первый синтаксический элемент в SPS, при этом значение первого синтаксического элемента используется для указания того, присутствует ли синтаксическая структура параметров буфера декодированного изображения, DPB, в SPS; в случае, если значение первого синтаксического элемента указывает, что синтаксическая структура параметров DPB присутствует в SPS, битовый поток дополнительно содержит второй синтаксический элемент в SPS, при этом значение второго синтаксического элемента используется для указания присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB, при этом синтаксический элемент DPB применяется к временному подуровню, за исключением самого высокого временного подуровня в видеопоследовательности.
Подробности одного или более вариантов осуществления изложены на прилагаемых чертежах и в нижеследующем описании. Другие особенности, цели и преимущества будут очевидны из описания, чертежей и формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
В следующих вариантах осуществления изобретения описаны более подробно со ссылкой на сопровождающие фигуры и чертежи, на которых:
Фиг. 1A является блок-схемой, показывающей пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;
Фиг. 1B является блок-схемой, показывающей другой пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;
Фиг. 2 является блок-схемой, показывающей пример видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;
Фиг. 3 является блок-схемой, показывающей пример структуры видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;
Фиг. 4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;
Фиг. 5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования;
Фиг. 6 является примером порядка растрового сканирования;
Фиг. 7 является примером тайлов, слайсов и подизображений;
Фиг. 8 является блок-схемой, показывающей примерную структуру системы 3100 поставки контента, которая реализует услугу доставки контента;
Фиг. 9 является блок-схемой, показывающей структуру примерного терминального устройства;
Фиг. 10 показывает пример разделения изображения;
Фиг. 11 показывает пример уровней и подуровней масштабируемого кодирования видео;
Фиг. 12 показывает другой пример разделения изображения;
Фиг. 13 показывает другой пример разделения изображения.
Фиг. 14 иллюстрирует способ декодирования битового потока видео согласно варианту осуществления.
Фиг. 15 иллюстрирует способ кодирования битового потока видео согласно варианту осуществления.
Фиг. 16 иллюстрирует способ декодирования битового потока видео согласно варианту осуществления.
Фиг. 17 иллюстрирует способ кодирования битового потока видео согласно варианту осуществления.
Далее одинаковые ссылочные позиции относятся к идентичным или, по меньшей мере, функционально эквивалентным функциям, если явно не указано иное.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть данного раскрытия и которые показывают, в качестве иллюстрации, конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых варианты осуществления настоящего изобретения могут быть использованы. Понятно, что варианты осуществления данного изобретения могут быть использованы в других аспектах и содержат структурные или логические изменения, не показанные на фигурах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.
Например, понятно, что раскрытие, связанное с описанным способом, также может быть справедливо для соответствующего устройства или системы, выполненных с возможностью выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например функциональных блоков, чтобы выполнять описанный один или множество этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более блоков не описаны явным образом или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описано на основе одного или множества блоков, например функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из упомянутого множества блоков), даже если такой один или множество этапов не описаны явным образом или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.
Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина «изображение» термины «кадр» или «картинка» могут использоваться как синонимы в области кодирования видео. Кодирование видео (или кодирование (coding) в целом) содержит две части: кодирование видео (video encoding) и декодирование видео. Кодирование видео выполняется на стороне источника и обычно содержит обработку (например, посредством сжатия) исходных видеоизображений для сокращения объема данных, требуемого для представления видеоизображений (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне получателя (адресата) и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или изображений в целом), должны пониматься как относящиеся к «кодированию» или «декодированию» видеоизображений или соответствующих видеопоследовательностей. Комбинация кодирующей части и декодирующей части также называется 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, элемент изображения). Число выборок в горизонтальном и вертикальном направлении (или оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовые компоненты, т.е. изображение может быть представлено или включать в себя три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий массив красных, зеленых или синих выборок. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например YCbCr, которое содержит компоненту яркости, обозначаемую Y (иногда вместо этого также используется L), и две компоненты цветности (цветоразностные компоненты), обозначаемые Cb и Cr. Компонента Y яркости (luminance) (или сокращенно яркость (luma)) представляет яркость (brightness) или интенсивность уровня серого (например, как в полутоновом изображении), в то время как две компоненты Cb и Cr цветности (chrominance) (или сокращенно цветности (chroma)) представляют компоненты информации о цветности (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).
Варианты осуществления видеокодера 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), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 220 контурного фильтра показан на фиг. 2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221.
Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация адаптивного к выборке смещения), например непосредственно или кодированных через блок 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 разделения может быть выполнен с возможностью разделения блока 203 на более мелкие разделы блока или субблоки (которые снова образуют блоки), например итеративно с использованием разделения квадродерева (QT), двоичного разделения (BT), или разделения троичного дерева (TT) или любой их комбинации, и выполнения, например, предсказания для каждого из разделов блока или субблоков, при этом выбор режима содержит выбор древовидной структуры разделяемого блока 203, а режимы предсказания применяются к каждому из разделов блока или субблоков.
Далее более подробно поясняется разделение (например, посредством блока 260 разделения) и обработка предсказания (посредством блока 244 межкадрового предсказания и блока 254 внутрикадрового предсказания), выполняемые примерным видеокодером 20.
Разделение
Блок 262 разделения может разделять (или разбивать) текущий блок 203 на более мелкие разделы, например блоки меньшего размера квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут именоваться субблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например на корневом уровне 0 дерева (уровне 0 иерархии, глубине 0), может быть рекурсивно разделен, например разделен на два или более блоков следующего более низкого уровня дерева, например узлов на уровне 1 дерева (уровне 1 иерархии, глубине 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например уровня 2 дерева (уровня 2 иерархии, глубины 2), и т.д. пока разделение не будет завершено, например из-за выполнения критерия прекращения, например достижения максимальной глубины дерева или минимального размера блока. Блоки, которые далее не разделяются, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется троичным деревом (TT), а дерево, использующее разделение на четыре раздела, называется квадродеревом (QT).
Как упоминалось ранее, используемый здесь термин «блок» может быть частью, в частности квадратной или прямоугольной частью изображения. Что касается, например, HEVC и VVC, блок может быть или соответствовать единице дерева кодирования (CTU), единице кодирования (CU), единице предсказания (PU) и единице преобразования (TU) и/или соответствующим блокам, например блоку дерева кодирования (CTB), блоку кодирования (CB), блоку преобразования (TB) или блоку предсказания (PB).
Например, единица дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть NxN блоком выборок для некоторого значения N, так что деление компоненты на CTB является разделением. Единица кодирования (CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодирования (CB) может быть MxN блоком выборок для некоторых значений M и N, так что деление CTB на блоки кодирования является разделением.
В вариантах осуществления, например, согласно HEVC, единица дерева кодирования (CTU) может быть разделена на CU с использованием структуры квадродерева, обозначенной в качестве дерева кодирования. Решение о том, следует ли кодировать область изображения с использованием предсказания между изображениями (временного) или внутри изображения (пространственного), принимается на уровне CU. Каждая CU может быть дополнительно разделена на одну, две или четыре PU в соответствии с типом разделения на PU. Внутри одной PU применяется один и тот же процесс предсказания, а релевантная информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разделения на PU, CU может быть разделена на единицы (TU) преобразования в соответствии с другой структурой квадродерева, аналогичной дереву кодирования для CU.
В вариантах осуществления, например в соответствии с разрабатываемым в настоящее время наиболее новым стандартом кодирования видео, который называется универсальное кодирование видео (VVC), для разделения блока кодирования используется, например, разделение комбинированного квадродерева и двоичного дерева (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодирования (CTU) сначала разделяется на структуру квадродерева. Листовые узлы квадродерева дополнительно разделяются двоичным деревом или тройчной (или тройной) древовидной структурой. Листовые узлы дерева разделения называются единицами кодирования (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дальнейшего разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно, вместе с блочной структурой QTBT можно использовать множественный раздел, например раздел троичного дерева.
В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания способов разделения, описанных в данном документе.
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, предопределенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутрикадрового предсказания и/или режимы межкадрового предсказания.
Внутрикадровое предсказание
Набор режимов внутрикадрового предсказания может содержать 35 различных режимов внутрикадрового предсказания, например ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в HEVC, или может содержать 67 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены для VVC.
Блок 254 внутрикадрового предсказания выполнен с возможностью использования восстановленных дискретных выборок соседних блоков одного и того же текущего изображения для формирования блока 265 внутрикадрового предсказания согласно режиму внутрикадрового предсказания набора режимов внутрикадрового предсказания.
Блок 254 внутрикадрового предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутрикадрового предсказания (или, в общем, информации, указывающей выбранный режим внутрикадрового предсказания для блока) в блок 270 энтропийного кодирования в форме синтаксических элементов 266 для включения в кодированные данные 21 изображения, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.
Межкадровое предсказание
Набор (возможных) режимов межкадрового предсказания зависит от доступных опорных изображений (то есть предыдущих, по меньшей мере частично декодированных изображений, например сохраненных в DPB 230) и других параметров межкадрового предсказания, например используется ли опорное изображение целиком или только часть, например область окна поиска вокруг области текущего блока, опорного изображения для поиска наиболее подходящего опорного блока и/или, например, применяется ли интерполяция пикселей, например полупиксельная (half/semi-pel) и/или четвертьпиксельная (quarter-pel) интерполяция, или нет.
В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.
Блок 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 может принимать и использовать эти параметры для декодирования. Кодированный битовый поток 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, буфер 230 (DPB) декодированных изображений, блок 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), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 320 контурного фильтра показан на фиг. 3 как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.
Буфер декодированного изображения
Декодированные видеоблоки 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).
Варианты осуществления видеодекодера 30, показанные на фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования изображения с использованием групп тайлов (также называемых группами тайлов видео) и/или тайлов (также называемых тайлами видео), при этом изображение может быть разделено на или декодировано с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или частичные блоки.
Другие варианты видеодекодера 30 могут использоваться для декодирования кодированных данных 21 изображения. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.
Следует понимать, что в кодере 20 и декодере 30 результат обработки некоторого текущего этапа может быть обработан дополнительно, а затем выведен на следующий этап. Например, после интерполяционной фильтрации, получения вектора движения или контурной фильтрации, дополнительная операция, такая как Clip (усечение) или смещение, может выполняться над результатом обработки интерполяционной фильтрации, получения вектора движения или контурной фильтрации.
Следует отметить, что дополнительные операции могут применяться к получаемым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения субблока в аффинном, планарном, ATMVP режимах, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается предопределенным диапазоном в соответствии с его представляющим битом. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где «^» означает возведение в степень. Например, если bitDepth установлена равной 16, диапазон составляет -32768 ~ 32767; если bitDepth установлена равной 18, диапазон составляет -131072~131071. Например, значение получаемого вектора движения (например, MV четырех субблоков 4x4 в одном блоке 8x8) ограничивается таким образом, чтобы максимальная разность между целыми частями MV четырех субблоков 4x4 не превышала N пикселей, например была не более 1 пикселя. Здесь представлены два способа ограничения вектора движения в соответствии с bitDepth.
Способ 1: удаление MSB (старшего бита) переполнения посредством потоковых операций
где mvx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, mvy представляет собой вертикальную компоненту вектора движения блока изображения или субблока, а ux и uy указывает промежуточное значение;
Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равняется 32767. В компьютерной системе десятичные числа хранятся как дополнение до двух. Дополнением до двух для -32769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, поэтому результирующим дополнением до двух является 0111,1111,1111,1111 (десятичное число составляет 32767), что совпадает с выходными данными от применения формул (1) и (2).
Операции могут применяться во время суммирования mvp и mvd, как показано в формулах (5)-(8).
Способ 2: удаление MSB переполнения посредством усечения значения
где vx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, vy представляет собой вертикальную компоненту вектора движения блока изображения или субблока; x, y и z соответственно соответствуют трем входным значениям процесса усечения MV, а определение функции Clip3 является следующим:
Фиг. 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 может быть реализовано в самых разнообразных конфигурациях.
Наборы параметров
Наборы параметров принципиально схожи и преследуют одни и те же основные цели проектирования, а именно эффективность битовой скорости, устойчивость к ошибкам и обеспечение интерфейсов системных уровней. В HEVC (ITU-T H.265) существует иерархия наборов параметров, включая набор параметров видео (VPS), набор параметров последовательности (SPS) и набор параметров изображения (PPS), которые аналогичны своим аналогам в AVC и VVC. Каждый слайс ссылается на один активный PPS, SPS и VPS для доступа к информации, используемой для декодирования слайса. PPS содержит информацию, которая применяется ко всем слайсам в изображении, и, следовательно, все слайсы в изображении должны относиться к одному и тому же PPS. Слайсы в разных изображениях также могут ссылаться на один и тот же PPS. Аналогичным образом, SPS содержит информацию, которая применяется ко всем изображениям в одной и той же кодируемой/декодируемой видеопоследовательности.
Хотя PPS может различаться для отдельных изображений, обычно многие или все изображения в кодируемой/декодируемой видеопоследовательности относятся к одному и тому же PPS. Повторное использование наборов параметров является эффективным с точки зрения битовой скорости, поскольку позволяет избежать многократной отправки совместно используемой информации. Он также является устойчивым к потерям, поскольку позволяет переносить содержимое набора параметров по более надежному внешнему каналу связи или часто повторять его в битовом потоке, чтобы гарантировать, что он не будет потерян.
Масштабируемое кодирование видео, уровень и набор параметров видео (VPS)
Масштабируемое кодирование видео обеспечивает механизм кодирования видео на нескольких уровнях, каждый уровень представляет качественное представление одной и той же видеосцены. Базовый уровень (BL) представляет собой представление самого низкого качества. Один или более уровней улучшения (EL) могут быть закодированы путем ссылки на нижние уровни и обеспечивают улучшенное качество видео. Декодирование подмножества уровней битового потока масштабируемого кодированного видео приводит к получению видео более низкого, но все же приемлемого качества. Это обеспечивает более плавную деградацию по сравнению с немасштабируемыми битовыми потоками видео, где снижение битрейта обычно приводит к большему падению качества видео.
В масштабируемой видеопоследовательности существует несколько типов масштабируемости, включая временную масштабируемость, пространственную масштабируемость и масштабируемость качества. На фиг. 11 представлен пример, иллюстрирующий как пространственную, так и временную масштабируемость. На фиг. 11 два уровня закодированы с разным разрешением. BL имеет более низкое разрешение, в то время как EL имеет более высокое разрешение, а пространственная масштабируемость достигается за счет предоставления декодеру возможности декодировать либо BL, EL, либо и то, и другое.
В дополнение к пространственной масштабируемости временная масштабируемость достигается на уровне кодирования. В этом примере каждый уровень кодирования разделен на два временных подуровня, которые помечены временным ID 0 и IID 1 соответственно. Временная масштабируемость достигается путем обеспечения декодирования либо временного подуровня 0 (с временным ID, равным 0), либо обоих подуровней 0 и 1.
Изображениям в каждом уровне назначается ID уровня, например, синтаксический элемент nuh_layer_id. Видеопоследовательность кодированного уровня (CLVS) представляет собой последовательность изображений с одинаковым значением nuh_layer_id, которые содержат в порядке декодирования специальную видеопоследовательность уровня кодирования, начинающуюся кодированием изображения (CLVSS, например, внутреннее изображение), за которой следует ноль или более изображений, которые не являются изображениями CLVSS, включая все последующие изображения до, но не включая любые последующие изображения, являющиеся изображением CLVSS.
Кодированная видеопоследовательность (CVS) содержит одну или более видеопоследовательностей кодированного уровня (CLVS). В примере на фиг. 11, предполагая, что первые изображения BL и EL представляют собой изображения CLVSS, а все остальные изображения не являются изображениями CLVSS, эта CVS содержит две CLVS.
Набор параметров последовательности (SPS)
SPS содержит параметры, которые применяются к одному уровню кодированной видеопоследовательности и не изменяются от изображения к изображению в кодированной видеопоследовательности.
В некоторых крайних случаях SPS может не использоваться никакими изображениями в CLVS.
Также может быть так, что SPS совместно используется разными CLVS.
В последнем проекте спецификации VVC (т. е. http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/19_Teleconference/wg11/JVET-S0152-v5.zip, который для простоты упоминается как проект VVC в следующем разделе), определение SPS следующее:
набор параметров последовательности (SPS): Синтаксическая структура, содержащая синтаксические элементы, которые применяются к нулю или более полным CLVS, что определяется содержанием синтаксического элемента, обнаруженного в PPS, на который ссылается синтаксический элемент, обнаруженный в каждом заголовке изображения.
Определение PPS и заголовка изображения см. в проекте VVC.
В частности, SPS включает в себя информацию о сигнализации буфера декодированного изображения (т.е. dpb).
В некоторых частях следующей таблицы показан моментальный снимок части сигнализации dpb в SPS в VVC:
Сигнализация информации буфера декодированного изображения (DPB).
Буфер декодированного изображения
Буфер декодированного изображения (DPB) представляет собой буфер, который используется для хранения декодированного изображения для ссылки, например, в качестве опорного изображения для межкадрового предсказания. В примере, раскрытом в проекте VVC, выделены соответствующие синтаксические элементы параметров для DPB в наборе параметров последовательности (SPS).
sps_ptl_dpb_hrd_params_present_flag равное 1 указывает, что синтаксическая структура profile_tier_level() и синтаксическая структура dpb_parameters() присутствуют в SPS, а синтаксическая структура general_hrd_parameters() и синтаксическая структура ols_hrd_parameters() также могут присутствовать в SPS. sps_ptl_dpb_hrd_params_present_flag равное 0 указывает, что ни одна из этих четырех синтаксических структур не присутствует в SPS.
Когда sps_video_parameter_set_id больше 0 и имеется OLS, который содержит только один уровень, nuh_layer_id которого равен nuh_layer_id SPS, или когда sps_video_parameter_set_id равно 0, значение sps_ptl_dpb_hrd_params_present_flag должно быть равно 1.
OLS (набор выходных уровней) - это набор уровней, для которых один или более уровней указаны в качестве выходных уровней. Выходной уровень - это уровень набора выходных уровней, который выводится.
Таблицы синтаксиса для синтаксических структур profile_tier_level(), dpb_parameters(), general_hrd_parameters(), ols_hrd_parameters() можно найти в проекте VVC.
Синтаксический элемент sps_max_sublayers_minus1 указывает количество доступных временных подуровней. Когда количество доступных временных подуровней больше 1 (например, значение синтаксического элемента sps_max_sublayers_minus1 больше 0), значение синтаксического элемента sps_sublayer_dpb_params_flag сигнализируется в битовом потоке. Синтаксический элемент sps_sublayer_dpb_params_flag предписывает, следует ли сигнализировать информацию о декодировании изображения для каждого доступного подуровня (когда его значение равно 1) или сигнализировать только для самого высокого временного подуровня (когда его значение равно 0). Когда значение sps_sublayer_dpb_params_flag отсутствует, например, имеется только один временной подуровень (значение sps_max_sublayers_minus1 == 0), значение sps_max_sublayers_minus1 выводится как 0.
В некоторых примерах значение синтаксического элемента sps_ptl_dpb_hrd_params_present_flag указывает, сигнализируется ли сигнальная структура dpb_parameter() в SPS или нет. Когда значение синтаксического элемента sps_ptl_dpb_hrd_params_present_flag равно 1, вызывается сигнализируемая структура данных dpb_parameter() с числом доступных временных подуровней минус 1 (sps_max_sublayers_minus1) и флагом sps_sublayer_dpb_params_flag в качестве первого и второго параметра соответственно.
В примере структура сигнализации dpb_parameter() в проекте VVC определяется следующим образом:
Синтаксическая структура dpb_parameters() предоставляет информацию о размере DPB, максимальном числе переупорядоченных изображений и максимальной задержке для одного или более OLS.
Когда синтаксическая структура dpb_parameters() включена в VPS, OLS, к которым применяется синтаксическая структура dpb_parameters(), определяются VPS. Когда синтаксическая структура dpb_parameters() включена в SPS, она применяется к OLS, который включает в себя только уровень, который является самым нижним уровнем среди уровней, ссылающихся на SPS, и этот самый нижний уровень является независимым уровнем.
max_dec_pic_buffering_minus1[i] плюс 1 задает максимальный требуемый размер DPB в единицах буферов хранения изображений, когда Htid равно i. Значение max_dec_pic_buffering_minus1[i] должно находиться в диапазоне от 0 до MaxDpbSize - 1 включительно, где MaxDpbSize соответствует указанному в пункте A.4.2. Когда i больше 0, max_dec_pic_buffering_minus1[i] должно быть больше или равно max_dec_pic_buffering_minus1[i - 1]. Когда max_dec_pic_buffering_minus1[i] отсутствует для i в диапазоне от 0 до maxSubLayersMinus1 - 1 включительно, из-за того, что subLayerInfoFlag равен 0, предполагается, что он равен max_dec_pic_buffering_minus1[maxSubLayersMinus1].
max_num_reorder_pics[i] указывает максимально допустимое количество изображений OLS, которые могут предшествовать любому изображению в OLS в порядке декодирования и следовать за этим изображением в порядке вывода, когда Htid равно i. Значение max_num_reorder_pics[i] должно находиться в диапазоне от 0 до max_dec_pic_buffering_minus1[i] включительно. Когда i больше 0, max_num_reorder_pics[i] должно быть больше или равно max_num_reorder_pics[i - 1]. Когда max_num_reorder_pics[i] отсутствует для i в диапазоне от 0 до maxSubLayersMinus1 - 1 включительно, из-за того, что subLayerInfoFlag равен 0, предполагается, что он равен max_num_reorder_pics[maxSubLayersMinus1].
max_latency_increase_plus1[i], не равное 0, используется для вычисления значения MaxLatencyPictures[i], которое указывает максимальное количество изображений в OLS, которые могут предшествовать любому изображению в OLS в порядке вывода и следовать за этим изображением в порядке декодирования, когда Htid равно i.
Когда max_latency_increase_plus1[i] не равно 0, значение MaxLatencyPictures[i] указывается следующим образом:
MaxLatencyPictures[i]=max_num_reorder_pics[i] + max_latency_increase_plus1[i] - 1 (112)
Когда max_latency_increase_plus1[i] равно 0, соответствующий предел не выражается.
Значение max_latency_increase_plus1[i] должно находиться в диапазоне от 0 до 232-2 включительно. Когда max_latency_increase_plus1[i] отсутствует для i в диапазоне от 0 до maxSubLayersMinus1 - 1 включительно, из-за того, что subLayerInfoFlag равен 0, предполагается, что он равен max_latency_increase_plus1[maxSubLayersMinus1].
Более подробную информацию об синтаксических элементах и переменных, используемых для объяснения параметров dpb (max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i]), см. в проекте VVC.
Структура сигнализации dpb_parameters сигнализирует либо информацию о буфере декодированного изображения одного подуровня, либо информацию о декодированном изображении каждого подуровня, управляемую значением subLayerInfoFlag. Когда значение subLayerInfoFlag равно 0, сигнализируется буфер декодированного изображения самого высокого подуровня среди доступных временных подуровней (i=maxSubLayersMinus1). Когда значение subLayerInfoFlag равно 1, сигнализируется буфер декодированного изображения каждого подуровня среди доступных временных подуровней (значение i находится в диапазоне от 0 до maxSubLayersMinus1 включительно).
Проблема с семантикой синтаксического элемента sps_sublayer_dpb_params_flag
В проекте VVC семантика sps_sublayer_dpb_params_flag определяется следующим образом:
sps_sublayer_dpb_params_flag используется для управления наличием синтаксических элементов max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] в синтаксической структуре dpb_parameters() в SPS. Если он отсутствует, предполагается, что значение sps_sub_dpb_params_info_present_flag равно 0.
Вышеупомянутая семантика имеет две проблемы. Во-первых, в последнем предложении опечатка.
Если он отсутствует, предполагается, что значение sps_sub_dpb_params_info_present_flag равно 0.
sps_sub_dpb_params_info_present_flag больше нигде не определен, и последнее предложение должно быть изменено следующим образом:
Если он отсутствует, предполагается, что значение sps_sublayer_dpb_params_flag равно 0.
Во-вторых, семантика sps_sublayer_dpb_params_flag недостаточно точна. Поскольку диапазон i в max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] не определен. Из таблицы 2 видно, что когда i равно maxSubLayersMinus1 (соответствует sps_max_sublayers_minus1 в таблице 1), независимо от того, равен ли sps_sublayer_dpb_params_flag 0 или 1, синтаксические элементы max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] всегда сигнализируются. В этом случае sps_sublayer_dpb_params_flag не контролирует наличие max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i], что противоречит текущему определению.
В некоторых примерах синтаксический элемент sps_sublayer_dpb_params_flag используется только как второй параметр dpb_parameters.
Для следующих вариантов осуществления мы предполагаем, что опечатка (первая проблема) уже исправлена, и предлагаемые варианты осуществления сосредоточены на решении второй проблемы, неточной семантике sps_sublayer_dpb_params_flag.
Вариант 1 осуществления
Согласно первому варианту осуществления семантика sps_sublayer_dpb_params_flag изменяется следующим образом:
sps_sublayer_dpb_params_flag используется для управления наличием синтаксических элементов max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] в синтаксической структуре dpb_parameters() в SPS для i в диапазоне от 0 до sps_max_sublayers_minus1-1 включительно, когда sps_max_sublayers_minus1 больше 0. Когда sps_max_sublayers_minus1 равно 0, предполагается, что значение sps_sublayer_dpb_params_flag равно 0, а max_dec_pic_buffering_minus1[0], max_num_reorder_pics[0] и max_latency_increase_plus1[0] всегда сигнализируются для единственного подуровня, относящегося к SPS.
Таким образом проясняется семантика sps_sublayer_dpb_params_flag. Только когда имеется более одного подуровня (sps_max_sublayers_minus1 больше 0), он контролирует наличие minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] в синтаксической структуре dpb_parameters() для i в диапазоне от 0 до sps_max_sublayers_minus1-1. В противном случае (sps_max_sublayers_minus1 равен 0) сигнализация max_dec_pic_buffering_minus1[0], max_num_reorder_pics[0] и max_latency_increase_plus1[0] всегда сигнализируется, независимо от того, какое значение имеет sps_sublayer_dpb_params_flag. Следовательно, семантика также может быть изменена следующим образом в варианте осуществления. 2
Вариант 2 осуществления
sps_sublayer_dpb_params_flag используется для управления наличием синтаксических элементов max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] в синтаксической структуре dpb_parameters() в SPS для i в диапазоне от 0 до sps_max_sublayers_minus1-1 включительно, когда sps_max_sublayers_minus1 больше 0. Когда sps_max_sublayers_minus1 равен 0, значение sps_sublayer_dpb_params_flag предполагается равным 1, а max_dec_pic_buffering_minus1[0], max_num_reorder_pics[0] и max_latency_increase_plus1[0] всегда сигнализируется для единственного подуровня, относящегося к SPS.
Или даже удалить правило вывода для значения sps_sublayer_dpb_params_flag, как показано в варианте 3 осуществления.
Вариант 3 осуществления
sps_sublayer_dpb_params_flag используется для управления наличием синтаксических элементов max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] в синтаксической структуре dpb_parameters() в SPS для i в диапазоне от 0 до sps_max_sublayers_minus1-1 включительно, когда sps_max_sublayers_minus1 больше 0. Когда sps_max_sublayers_minus1 равен 0, max_dec_pic_buffering_minus1[0], max_num_reorder_pics[0] и max_latency_increase_plus1[0] всегда сигнализируются для единственного подуровня, относящегося к SPS.
Или с некоторыми пояснениями, когда sps_max_sublayers_minus1 равен 0, как показано в варианте 4 осуществления.
Вариант 4 осуществления
sps_sublayer_dpb_params_flag используется для управления наличием синтаксических элементов max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] в синтаксической структуре dpb_parameters() в SPS для i в диапазоне от 0 до sps_max_sublayers_minus1-1 включительно, когда sps_max_sublayers_minus1 больше 0. Когда sps_max_sublayers_minus1 равен 0, значение sps_sublayer_dpb_params_flag не имеет смысла, а max_dec_pic_buffering_minus1[0], max_num_reorder_pics[0] и max_latency_increase_plus1[0] всегда всегда сигнализируется для единственного подуровня, относящегося к SPS.
Дополнение к идее 1 с вариантами осуществления с 1 по 4
Структура данных dpb_parameter() вызывается не только в SPS, но также может вызываться в VPS. Ниже приведен снимок VPS, где вызывается dpb_parameter().
При этом указание количества синтаксических структур dpb_parameters() в VPS.
vps_default_ptl_dpb_hrd_max_tid_flag, равный 1, указывает, что синтаксические элементы vps_ptl_max_tid[i], vps_dpb_max_tid[i] и vps_hrd_max_tid[i] отсутствуют и считаются равными значению по умолчанию vps_max_sublayers_minus1. vps_default_ptl_dpb_hrd_max_tid_flag равное 0 указывает, что синтаксические элементы vps_ptl_max_tid[i], vps_dpb_max_tid[i] и vps_ptl_max_tid[i] присутствуют. Если он отсутствует, предполагается, что значение vps_default_ptl_dpb_hrd_max_tid_flag равно 1.
Подробное объяснение vps_ptl_max_tid[i] и vps_hrd_max_tid[i] см. в проекте VVC.
vps_dpb_max_tid[i] определяет TemporalId представления самого высокого подуровня, для которого параметры DPB могут присутствовать в i-й синтаксической структуре dpb_parameters() в VPS. Значение vps_dpb_max_tid[i] должно находиться в диапазоне от 0 до vps_max_sublayers_minus1 включительно. Если значение vps_dpb_max_tid[i] отсутствует, предполагается, что оно равно vps_max_sublayers_minus1.
и
vps_sublayer_dpb_params_present_flag используется для управления наличием синтаксических элементов max_dec_pic_buffering_minus1[], max_num_reorder_pics[] и max_latency_increase_plus1[] в синтаксических структурах dpb_parameters() в VPS. Если vps_sub_dpb_params_info_present_flag отсутствует, предполагается, что он равен 0.
семантика vps_sublayer_dpb_params_present_flag имеет аналогичную проблему с семантикой sps_sublayer_dpb_params_flag, как описано ранее.
Размер массива синтаксических элементов max_dec_pic_buffering_minus1[], max_num_reorder_pics[] и max_latency_increase_plus1[] не определен в семантике. Из Таблицы 2 видно, что при наличии только одного подуровня (соответствующего vps_dpb_max_tid[i] в Таблице 4, равного 0), независимо от того, vps_sublayer_dpb_params_present_flag равен 0 или 1, синтаксические элементы max_dec_pic_buffering_minus1[], max_num_reorder_pics[], и max_latency_increase_plus1[] всегда сигнализируются. vps_sublayer_dpb_params_present_flag не контролирует наличие max_dec_pic_buffering_minus1[], max_num_reorder_pics[] и max_latency_increase_plus1[] в этом случае, что противоречит текущему определению.
Вариант 9 осуществления
В одном примере семантика vps_sublayer_dpb_params_present_flag изменяется следующим образом:
vps_sublayer_dpb_params_present_flag используется для управления наличием синтаксических элементов max_dec_pic_buffering_minus1[j], max_num_reorder_pics[j] и max_latency_increase_plus1[j] в синтаксической структуре dpb_parameters() в VPS для j в диапазоне от 0 до vps_dpb_max_tid[i] - 1 включительно , когда vps_dpb_max_tid[i] в VPS больше 0. Если vps_sub_dpb_params_info_present_flag отсутствует, предполагается, что он равен 0.
Следует отметить, что j вместо i используется для указания диапазона массива синтаксических элементов max_dec_pic_buffering_minus1[], max_num_reorder_pics[] и max_latency_increase_plus1[] во избежание путаницы с i в vps_dpb_max_tid[i].
Замечание, проблема 2 и соответствующие решения, зависимый флаг и т.д.
Когда выполняется межкадровое предсказание, опорное изображение может быть декодированным изображением из того же уровня или опорным изображением из более низкого уровня. В последнем случае опорное изображение на нижнем уровне называется межуровневым опорным изображением (ILRP), а нижний уровень, содержащий одно или более ILRP, называется опорным (или зависимым) уровнем.
Для поддержки межуровневого предсказания используются несколько промежуточных переменных в соответствии с синтаксическими элементами, сигнализируемыми в VPS. Например, в уравнении 37 проекта VVC процесс вывода для переменных dependencyFlag[i][j], NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r], и LayerUsedAsRefLayerFlag[j] определяется следующим образом:
Переменные dependencyFlag[i][j], NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r] и LayerUsedAsRefLayerFlag[j] получаются следующим образом:
dependencyFlag[i][j], равный 1, указывает, что уровень с индексом j является опорным уровнем для уровня с индексом i. dependencyFlag[i][j], равный 0, указывает, что уровень с индексом j не является опорным уровнем для уровня с индексом i.
Зависимость между уровнем с индексом i и его опорным уровнем j может быть прямой или косвенной. Если j-й уровень является уровнем, непосредственно зависимым от i-го уровня, зависимости сигнализируются синтаксическим элементом vps_direct_ref_layer_flag[i][j] для диапазона i от 0 до , а для j от 0 до i-1 в VPS. Как показано в Таблице 4, с удаленными синтаксическими элементами, не относящимися к данному изобретению:
В приведенной выше таблице синтаксиса показано, когда не все уровни являются независимыми уровнями, как VPS сигнализирует о зависимости между уровнями.
vps_max_layers_minus1 означает максимально допустимое количество уровней в каждом CVS, относящемся к VPS. Информация о зависимостях уровня сигнализируется только от второго нижнего уровня (т.е. i=1), и когда не все уровни являются независимыми уровнями, это указывается синтаксическим элементом vps_all_independent_layers_flag.
vps_all_independent_layers_flag, равный 1, указывает, что все уровни, указанные VPS, кодируются независимо без использования межуровневого предсказания. vps_all_independent_layers_flag, равный 0, указывает, что один или более уровней, указанных VPS, могут использовать межуровневое предсказание. Если он отсутствует, предполагается, что значение vps_all_independent_layers_flag равно 1.
В VVC самый нижний уровень (то есть соответствующий vps_independent_layer_flag[0]) всегда является независимым уровнем. Таким образом, синтаксический элемент vps_independent_layer_flag[i] сигнализируется со второго нижнего уровня (т. е. vps_independent_layer_flag[1]), и его семантика прямолинейна.
vps_independent_layer_flag[i], равный 1, указывает, что уровень с индексом i не использует межуровневое предсказание. vps_independent_layer_flag[i], равный 0, указывает, что уровень с индексом i может использовать межуровневое предсказание, а синтаксические элементы vps_direct_ref_layer_flag[i][j] для j в диапазоне от 0 до i - 1 включительно присутствуют в VPS. Если он отсутствует, предполагается, что значение vps_independent_layer_flag[i] равно 1.
Только когда уровень не является независимым уровнем (т. е. vps_independent_layer_flag[i] равен 0), тогда сигнализируется его непосредственно зависимый уровень, указанный vps_direct_ref_layer_flag[i][j], для j в диапазоне от 0 до i-1.
Семантика vps_direct_ref_layer_flag[i][j] определяется следующим образом:
vps_direct_ref_layer_flag[i][j], равный 0, указывает, что уровень с индексом j не является непосредственным опорным уровнем для уровня с индексом i. vps_direct_ref_layer_flag [i][j], равный 1, указывает, что уровень с индексом j является непосредственным опорным уровнем для уровня с индексом i. Когда vps_direct_ref_layer_flag[i][j] отсутствует для i и j в диапазоне от 0 до vps_max_layers_minus1 включительно, предполагается, что он равен 0. Когда vps_independent_layer_flag[i] равен 0, должно быть по меньшей мере одно значение j в диапазоне от 0 до i - 1 включительно, так что значение vps_direct_ref_layer_flag[i][j] равно 1.
Когда уровень является зависимым уровнем (т. е. его vps_independent_layer_flag[i] равен 0), ограничение в семантике vps_direct_ref_layer_flag[i][j] указывает, что по меньшей мере один из его нижних уровней j находится в диапазоне от 0 до i. -1 включительно, должен быть опорным уровнем для уровня i.
В случае косвенной зависимости это может иметь место, когда уровень i напрямую зависит от уровня k (k <i) и уровень k в свою очередь зависит от уровня j (j < k). В таком случае уровень с индексом i зависит от уровня j, и соответствующий параметр dependencyFlag[i][j] равен 1.
Проблема процесса вывода. Поскольку только уровень может зависеть только от более низкого уровня, цикл поиска зависимого нижнего уровня j в процессе вывода может быть упрощен. Нет необходимости зацикливаться на всех уровнях в VPS, а только на уровнях, которые ниже текущего уровня i.
Вариант 5 осуществления
В одном примере изменен процесс получения переменных dependencyFlag[i][j], NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r] и LayerUsedAsRefLayerFlag[j] модифицируюется следующим образом:
Переменные dependencyFlag[i][j], NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r] и LayerUsedAsRefLayerFlag[j] получаются следующим образом:
Вариант 6 осуществления
В другом примере изменен процесс получения переменных dependencyFlag[i][j], NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r] и LayerUsedAsRefLayerFlag[j] модифицируюется следующим образом:
Переменные dependencyFlag[i][j], NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r] и LayerUsedAsRefLayerFlag[j] получаются следующим образом:
Вариант 7 осуществления
В другом примере изменен процесс получения переменных dependencyFlag[i][j], NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r] и LayerUsedAsRefLayerFlag[j] модифицируюется следующим образом:
Переменные dependencyFlag[i][j], NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r] и LayerUsedAsRefLayerFlag[j] получаются следующим образом:
Только цикл for(k=0; k < i; k++) изменяется на for(k=j+1; k < i; k++).
Вариант 8 осуществления
соответственно, семантика vps_direct_ref_layer_flag[i][j] изменяется следующим образом:
vps_direct_ref_layer_flag[i][j], равный 0, указывает, что уровень с индексом j не является непосредственным опорным уровнем для уровня с индексом i. vps_direct_ref_layer_flag [i][j], равный 1, указывает, что уровень с индексом j является непосредственным опорным уровнем для уровня с индексом i. Когда vps_direct_ref_layer_flag[i][j] отсутствует для i в диапазоне от 1 до vps_max_layers_minus1 и для j в диапазоне от 0 до i-1 включительно, предполагается, что он равен 0. Когда vps_independent_layer_flag[i] равен 0, должно быть по меньшей мере одно значение j в диапазоне от 0 до i - 1 включительно, так что значение vps_direct_ref_layer_flag[i][j] равно 1.
Есть несколько других синтаксических элементов переменных, выражающих зависимость, аналогичную vps_direct_ref_layer_flag[i][j], их диапазон должен быть изменен таким же образом.
В соответствии с приведенным выше описанием здесь предусмотрены способ декодирования битового потока видео и способ кодирования битового потока видео. Соответственно, в данном документе предусмотрено устройство для декодирования (кодированного) битового потока видео и устройство для декодирования битового потока видео.
Фиг. 14 иллюстрирует способ декодирования битового потока видео, реализованный устройством декодирования, в котором набор параметров последовательности, SPS, закодирован в битовом потоке видео и содержит синтаксические элементы, которые применяются к видеопоследовательности. Способ содержит получение 1410 (например, посредством синтаксического анализа битового потока) значения первого синтаксического элемента (например, sps_ptl_dpb_hrd_params_present_flag в соответствии с приведенным выше описанием) из SPS, при этом значение первого синтаксического элемента используется для указания того, присутствует ли синтаксическая структура параметров буфера декодированного изображения, DPB, в SPS. Способ дополнительно содержит получение 1420 (например, путем синтаксического анализа битового потока) значения второго синтаксического элемента (например, sps_sublayer_dpb_params_flag в соответствии с приведенным выше описанием) из SPS, по меньшей мере, при определении (определяется), что значение первого синтаксического элемента указывает, что синтаксическая структура параметров DPB присутствует в SPS, при этом значение второго синтаксического элемента используется для указания присутствия синтаксического элемента DPB (например, одного из max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] в соответствии с приведенным выше подробным описанием) в синтаксической структуре параметров DPB, при этом синтаксический элемент DPB применяется к временному подуровню, за исключением самого высокого временного подуровня в видеопоследовательности.
Следует отметить, что битовый поток может быть получен посредством беспроводной сети или проводной сети. Битовый поток может передаваться с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная связь, радио связь, микроволновая связь, WIFI, Bluetooth, LTE или 5G.
Битовый поток может быть последовательностью битов в форме потока единиц уровня сетевой абстракции (NAL) или потока байтов, который формирует представление последовательности единиц доступа (AU), формирующих одну или более кодированных видеопоследовательностей (CVS).
В конкретном примере форматы битового потока определяют взаимосвязь между единичным потоком уровня сетевой абстракции (NAL) и потоком байтов, каждый из которых упоминается как битовый поток.
Битовый поток может быть, например, в одном из двух форматов: в формате потока единиц NAL или в формате байтового потока. Формат потока единиц NAL концептуально является более «базовым» типом. Формат потока единиц NAL содержит последовательность синтаксических структур, называемых единицами NAL. Эта последовательность упорядочена в порядке декодирования. Существуют ограничения, налагаемые на порядок декодирования (и содержимое) единиц NAL в потоке единиц NAL.
Формат байтового потока может быть построен из формата потока единиц NAL путем упорядочивания единиц NAL в порядке декодирования и добавления к каждой единице NAL начального кодового префикса и нуля или более байтов с нулевым значением для формирования потока из байтов. Формат потока единиц NAL может быть извлечен из формата байтового потока путем поиска местоположения уникального шаблона начального кодового префикса в пределах этого потока из байтов.
Фиг. 15 иллюстрирует способ кодирования битового потока видео, реализуемый устройством кодирования, в котором набор параметров последовательности, SPS, кодируется в битовом потоке видео и содержит синтаксические элементы, которые применяются к видеопоследовательности. Способ содержит определение наличия буфера декодированного изображения, DPB, синтаксической структуры параметров в SPS 1510. Значение первого синтаксического элемента (например, sps_ptl_dpb_hrd_params_present_flag в соответствии с приведенным выше описанием) кодируется 1520 в SPS на основе определения присутствия синтаксической структуры параметров DPB в SPS, при этом значение первого синтаксического элемента используется для указания того, присутствует ли синтаксическая структура параметров DPB в SPS. Кроме того, способ, показанный на фиг. 15, содержит определение 1530 наличия синтаксического элемента DPB (например, одного из max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] в соответствии с приведенным выше подробным описанием) в синтаксической структуре параметров DPB при определении (например, она определяется только тогда, когда она определена) того, что синтаксическая структура параметров DPB присутствует в SPS на этапе 1510, при этом синтаксический элемент DPB применяется к временному подуровню, за исключением самого высокого временного подуровня в видеопоследовательности. Значение второго синтаксического элемента (например, sps_sublayer_dpb_params_flag в соответствии с приведенным выше описанием) кодируется 1540 в SPS на основании определения наличия синтаксического элемента DPB в синтаксической структуре параметров DPB, при этом значение второго синтаксического элемента Элемент используется для указания присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB.
Вышеописанные способы могут быть внедрены в устройство декодирования видео или устройство кодирования видео (формирующее битовый поток), соответственно, как описано ниже.
Как показано на фиг. 16, устройство 1600 декодирования видео, предоставленное в настоящем документе в соответствии с вариантом осуществления, содержит блок 1610 получения (например, содержащий синтаксический анализатор) и блок 1620 определения. Как показано на фиг. 17, устройство 1700 кодирования видео, предоставленное в настоящем документе в соответствии с вариантом осуществления, содержит блок 1710 определения и блок 1720 кодирования.
Блок 1610 получения, содержащийся в устройстве 1600 декодирования видео, показанном на фиг. 16, выполнен с возможностью получения значения первого синтаксического элемента (например, sps_ptl_dpb_hrd_params_present_flag согласно приведенному выше описанию) из SPS, при этом значение первого синтаксического элемента используется для указания того, присутствует ли синтаксическая структура параметров буфера декодированного изображения, DPB, в SPS, закодированном в битовом потоке видео. Блок 1620 определения, содержащийся в устройстве 1600 декодирования видео, показанном на фиг. 16, выполнен с возможностью определения того, указывает ли значение первого синтаксического элемента, что синтаксическая структура параметров DPB присутствует в SPS. Кроме того, блок 1610 получения выполнен с возможностью получения значения второго синтаксического элемента (например, sps_sublayer_dpb_params_flag в соответствии с приведенным выше описанием) от SPS, по меньшей мере, при определении (определяется), что значение первого синтаксического элемента указывает что синтаксическая структура параметров DPB присутствует в SPS, при этом значение второго синтаксического элемента используется для указания присутствия синтаксического элемента DPB (например, одного из max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] в соответствии с подробным описанием выше) в синтаксической структуре параметров DPB, при этом синтаксический элемент DPB применяется к временному подуровню, за исключением самого высокого временного подуровня в видеопоследовательности.
Блок 1710 определения, содержащийся в устройстве 1700 кодирования видео, показанном на фиг. 17, выполнен с возможностью определения наличия буфера декодированного изображения, DPB, синтаксической структуры параметров в SPS. Блок 1720 кодирования, содержащийся в устройстве 1700 кодирования видео, показанном на фиг. 17, выполнен с возможностью кодирования значения первого синтаксического элемента (например, sps_ptl_dpb_hrd_params_present_flag в соответствии с приведенным выше описанием) в SPS на основе определения присутствия Синтаксическая структура параметров DPB в SPS, при этом значение первого синтаксического элемента используется для указания того, присутствует ли синтаксическая структура параметров DPB в SPS. Кроме того, блок 1710 определения выполнен с возможностью определения наличия синтаксического элемента DPB (например, одного из max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] в соответствии с приведенным выше подробным описанием) в синтаксической структуре параметров DPB, при определении (определяется, например, только при определении), что синтаксическая структура параметров DPB присутствует в SPS, при этом синтаксический элемент DPB применяется к временному подуровню, за исключением самого высокого временного подуровня в видеопоследовательность. Кроме того, блок 1720 кодирования выполнен с возможностью кодирования значения второго синтаксического элемента (например, sps_sublayer_dpb_params_flag в соответствии с приведенным выше описанием) в SPS на основе определения наличия синтаксического элемента DPB в синтаксической структуре параметров DPB, при этом значение второго синтаксического элемента используется для указания присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB.
Устройство 1600 декодирования видео, показанное на фиг. 16, может быть или может состоять из декодера 30, показанного на фиг. 1A, 1B и 3, и видеодекодер 3206, показанный на фиг. 9. Кроме того, устройство 1700 декодирования может входить в состав устройства 400 кодирования видео, показанного на фиг. 4, устройства 500, показанного на фиг. 5, и терминального устройства 3106, показанного на фиг. 8. Устройство 1700 кодирования, показанное на фиг. 17, может быть кодером 20, показанным на фиг. 1A, 1B и 3, или может состоять из него. Кроме того, устройство 1700 кодирования может входить в состав устройства 400 кодирования видео, показанного на фиг. 4, устройства 500, показанного на фиг. 5, и устройства 3102 захвата, показанного на фиг. 8.
В частности, SPS включает в себя информацию о сигнализации подизображения.
В некоторых частях нижеследующей таблицы показан моментальный снимок части сигнализации подизображения в SPS в ITU JVET-Q2001-v13 со следующей ссылкой для загрузки:
http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/17_Brussels/wg11/JVET-Q2001-v13.zip. В оставшейся части заявки этот документ для простоты будет называться VVC draft 8.
Некоторые синтаксические элементы в SPS сигнализируют информацию о положении и флаги управления каждого подизображения. Информация о местоположении для i-го подизображения включает в себя:
- subpic_ctu_top_left_x[i], указывающее горизонтальную составляющую верхней левой координаты подизображения i в изображении; или
- subpic_ctu_top_left_y[i], указывающее вертикальную составляющую верхней левой координаты подизображения i в изображении; или
- subpic_width_minus1[i], указывающее ширину подизображения i в изображении; или
- subpic_height_minus1[i], указывающее указывает высоту подизображения i в изображении.
Некоторые синтаксические элементы указывают количество подизображений внутри изображения, например, sps_num_subpics_minus1.
Разделение изображения на CTU, слайсы, тайлы и подизображения
Разделение изображения на CTU
Изображение разделено на последовательность единиц дерева кодирования (CTU). Термин CTU иногда используется взаимозаменяемо как CTB (блок дерева кодирования). Например, термин CTU совпадает с определением CTU в ITU-T H.265. Для изображения, которое имеет три массива выборок, CTU содержит блок N×N выборок яркости и два соответствующих блока выборок цветности. На фиг. 6 показан пример изображения, разделенного на CTU. Размер CTU должен быть одинаковым, за исключением CTU, расположенных на границах изображения (где могут присутствовать неполные CTU).
Разделение изображения на тайлы
В некоторых примерах, когда включены тайлы, изображение делится на прямоугольные группы CTU, разделенные вертикальными и/или горизонтальными границами. Вертикальная и горизонтальная границы тайла пересекают изображение снизу и от левой границы изображения до правой границы изображения соответственно. Информация индикации, относящаяся к положению горизонтальных границ тайлов и вертикальных границ тайлов, кодируется в битовом потоке.
Фиг. 7 иллюстрирует разделение изображения на 9 тайлов. В этом примере границы тайлы отмечены жирными пунктирными линиями.
Когда имеется более 1 тайла, разделяющего изображение по вертикали, порядок сканирования CTU изменяется относительно порядка растрового сканирования CTU в изображении. CTU сканируются по следующему правилу:
1. Тайлы сканируются слева направо и сверху вниз в порядке растрового сканирования, который называется порядком сканирования тайлов. Это означает, что, начиная с верхнего левого тайла, сначала все тайлы в одном ряду тайлов сканируются слева направо. Затем, начиная с первой тайлы во второй строке тайлов (ряд тайлов, который находится на единицу ниже), все тайлы во второй строке тайлов сканируются слева направо. Процесс повторяется до тех пор, пока все тайлы не будут отсканированы.
2. Для тайла CTU в этом тайле сканируются в порядке растрового сканирования. Для каждой строки CTU CTU сканируются слева направо, а строки CTU сканируются сверху вниз. На фиг. 7 показан пример порядка сканирования CTU в тайлах, номера, соответствующие CTU, указывают порядок сканирования.
Тайлы обеспечивает разделение изображения таким образом, что каждый тайл может декодироваться независимо от других тайлов того же изображения, где декодирование относится к энтропийному, остаточному и прогнозирующему декодированию. Более того, с помощью тайлов можно разделить изображение на области одинакового размера. Следовательно, можно обрабатывать тайлы изображения параллельно друг другу, что предпочтительно для многоядерных сред обработки, где каждое ядро обработки идентично другим.
Термины порядок обработки и порядок сканирования используются в приложении следующим образом:
Обработка относится к кодированию или декодированию CTU в кодере или декодере. Порядок сканирования относится к индексации конкретного раздела в изображении. CTU индексируются в порядке возрастания изображения в соответствии с заданным порядком сканирования. Порядок сканирования CTU в тайле означает, как индексируются CTU внутри тайла, что может не совпадать с порядком, в котором они обрабатываются (т. е. порядком обработки).
Разделение изображения на слайсы
Концепция слайса обеспечивает разделение изображения таким образом, что каждый слайс можно декодировать независимо от других слайсов того же изображения, где декодирование относится к энтропийному, остаточному и прогнозирующему декодированию. Отличие от тайлов заключается в том, что слайсы могут иметь произвольную форму, которая не обязательно прямоугольная (более гибкая в возможностях разделения), и целью разделения слайсов является не параллельная обработка, а согласование размеров пакетов в средах передачи и устойчивость к ошибкам.
Слайс может содержать полное изображение или часть изображения. В ITU-T H.265 слайс состоит из последовательных CTU изображения в порядке обработки. Слайс идентифицируется в соответствии с начальным адресом CTU, начальный адрес CTU сигнализируется в заголовке слайса, или в наборе параметров изображения, или в другом блоке. В примере слайс может быть идентифицирован в соответствии с начальным адресом тайла, когда требуется, чтобы слайсы содержали целое число тайлов.
В проекте 8 VVC слайс содержит целое число тайлов или целое число последовательных строк CTU в тайле изображения. Следовательно, вертикальная граница слайса также является вертикальной границей тайла. Возможно, что горизонтальная граница слайса не является границей тайла, горизонтальные границы CTU могут находиться внутри тайла; в примере, когда тайл разделен на несколько прямоугольных слайсов, каждый слайс содержит целое число последовательных полных строк CTU в тайле.
В некоторых примерах существует два режима слайсов: режим слайсов растрового сканирования и режим прямоугольных слайсов. В режиме слайсов растрового сканирования слайс содержит последовательность тайлов в растровом сканировании тайлов изображения. В режиме прямоугольных слайсов слайс содержит некоторое число тайлов, которые в совокупности формируют прямоугольную область изображения, или слайс содержит некоторое число последовательных строк CTU одного тайла, которые вместе образуют прямоугольную область изображения. Тайлы внутри прямоугольного слайса сканируются в порядке растрового сканирования тайлов в пределах прямоугольной области, соответствующей этому слайсу.
Все слайсы изображения вместе образуют полное изображение, т. е. все CTU изображения содержатся в одном из слайсов изображения. Аналогичные правила применяются к тайлами и подизображениям.
Разделение изображения на подизображения
Подизображение может быть прямоугольной частью изображения. Подизображением может быть все изображение или его часть. Подизображение - это разделение изображения таким образом, что каждое подизображение можно декодировать независимо от других подизображений всей видеопоследовательности. В проекте 8 VVC, когда указание subpic_treated_as_pic_flag[i] является истинным (например, значение subpic_treated_as_pic_flag[i] равно 1) для подизображения i, это подизображение i может быть декодировано независимо от других подизображений всей видеопоследовательности.
Разница между подизображением и тайлами или слайсами заключается в том, что подизображения создают независимо декодируемую видеопоследовательность. Для тайлов и слайсов выполняется независимое декодирование в одном изображении видеопоследовательности.
В проекте 8 VVC подизображение содержит один или более слайсов, которые вместе покрывают прямоугольную область изображения. Следовательно, каждая граница подизображения всегда является границей слайса, а каждая вертикальная граница подизображения всегда является вертикальной границей тайла.
Фиг. 10 предоставляет пример тайлов, слайсов и подизображений.
В одном примере, как показано на фиг. 8, изображение разделено на 216 CTU, 4 тайла, 4 слайса и 3 подизображения. Значение sps_num_subpics_minus1 равно 2, а синтаксические элементы, связанные с позицией, имеют следующие значения:
Для подизображения 0
subpic_ctu_top_left_x[0], не сигнализируется, но выводится как 0;
subpic_ctu_top_left_y[0], не сигнализируется, но выводится как 0;
subpic_width_minus1[0], значение равно 8;
subpic_height_minus1[0], значение равно 11.
Для подизображения 1
subpic_ctu_top_left_x[1], значение равно 9;
subpic_ctu_top_left_y[1], значение равно 0;
subpic_width_minus1[1], значение равно 8;
subpic_height_minus1[1], значение равно 5.
Для подизображения 2
subpic_ctu_top_left_x[2], значение равно 9;
subpic_ctu_top_left_y[2], значение равно 6;
subpic_width_minus1[2], не сигнализируется, но выводится как 8;
subpic_height_minus1[2], не сигнализируется, но выводится как 5.
Сигнализация буфера декодированного изображения (DPB).
Буфер декодированного изображения
Буфер декодированного изображения (DPB) представляет собой буфер, который используется для хранения декодированного изображения для ссылки, например, в качестве опорного изображения для межкадрового предсказания. В примере, раскрытом в проекте VVC (например, ITU JVET-Q2001-v13), выделены соответствующие синтаксические элементы параметров для DPB в наборе параметров последовательности (SPS).
sps_max_sublayers_minus1 плюс 1 указывает максимальное количество временных подуровней, которые могут присутствовать в каждом CLVS, относящемся к SPS. Значение sps_max_sublayers_minus1 должно находиться в диапазоне от 0 до vps_max_sublayers_minus1 включительно.
sps_sublayer_dpb_params_flag используется для управления наличием синтаксических элементов max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и max_latency_increase_plus1[i] в синтаксической структуре dpb_parameters() в SPS. Если он отсутствует, предполагается, что значение sps_sub_dpb_params_info_present_flag равно 0.
sps_ptl_dpb_hrd_params_present_flag равное 1 указывает, что синтаксическая структура profile_tier_level() и синтаксическая структура dpb_parameters() присутствуют в SPS, а синтаксическая структура general_hrd_parameters() и синтаксическая структура ols_hrd_parameters() также могут присутствовать в SPS. sps_ptl_dpb_hrd_params_present_flag равное 0 указывает, что ни одна из этих четырех синтаксических структур не присутствует в SPS. Значение sps_ptl_dpb_hrd_params_present_flag должно быть равно vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]].
Синтаксический элемент sps_max_sublayers_minus1 указывает количество доступных временных подуровней. Когда количество доступных временных подуровней больше 1 (например, значение синтаксического элемента sps_max_sublayers_minus1 больше 0), значение синтаксического элемента sps_sublayer_dpb_params_flag сигнализируется в битовом потоке. Поскольку синтаксический элемент sps_sublayer_dpb_params_flag предписывает, следует ли сигнализировать информацию о декодировании изображения для каждого доступного подуровня (когда его значение равно 1) или сигнализировать только для самого высокого временного подуровня (когда его значение равно 0). Когда значение sps_sublayer_dpb_params_flag отсутствует, например, имеется только один временной подуровень (значение sps_max_sublayers_minus1 == 0), значение sps_max_sublayers_minus1 выводится как 0.
В некоторых примерах значение синтаксического элемента sps_ptl_dpb_hrd_params_present_flag указывает, сигнализируется ли сигнальная структура dpb_parameter() в SPS или нет. Когда значение синтаксического элемента sps_ptl_dpb_hrd_params_present_flag равно 1, вызывается сигнализируемая структура данных dpb_parameter() с числом доступных временных подуровней минус 1 (sps_max_sublayers_minus1) и флагом sps_sublayer_dpb_params_flag в качестве первого и второго параметра соответственно.
Например, структура сигнализации dpb_parameter() в проекте VVC (например, ITU JVET-Q2001-v13) определяется следующим образом:
Синтаксическая структура dpb_parameters() предоставляет информацию о размере DPB, максимальном числе переупорядоченных изображений и максимальной задержке для одного или более OLS.
(набор выходных уровней (OLS): Набор уровней, состоящий из указанного набора уровней, где один или более уровней в наборе уровней указаны как выходные уровни)
Когда синтаксическая структура dpb_parameters() включена в VPS, OLS, к которым применяется синтаксическая структура dpb_parameters(), определяются посредством VPS. Когда синтаксическая структура dpb_parameters() включена в SPS, она применяется к OLS, который включает в себя только уровень, который является самым нижним уровнем среди уровней, ссылающихся на SPS, и этот самый нижний уровень является независимым уровнем.
max_dec_pic_buffering_minus1[i] плюс 1 задает максимальный требуемый размер DPB в единицах буферов хранения изображений, когда Htid равно i. Значение max_dec_pic_buffering_minus1[i] должно находиться в диапазоне от 0 до MaxDpbSize - 1 включительно, где MaxDpbSize соответствует указанному в пункте A.4.2. Когда i больше 0, max_dec_pic_buffering_minus1[i] должно быть больше или равно max_dec_pic_buffering_minus1[i - 1]. Когда max_dec_pic_buffering_minus1[i] отсутствует для i в диапазоне от 0 до maxSubLayersMinus1 - 1 включительно, из-за того, что subLayerInfoFlag равен 0, предполагается, что он равен max_dec_pic_buffering_minus1[maxSubLayersMinus1].
max_num_reorder_pics[i] указывает максимально допустимое количество изображений OLS, которые могут предшествовать любому изображению в OLS в порядке декодирования и следовать за этим изображением в порядке вывода, когда Htid равно i. Значение max_num_reorder_pics[i] должно находиться в диапазоне от 0 до max_dec_pic_buffering_minus1[i] включительно. Когда i больше 0, max_num_reorder_pics[i] должно быть больше или равно max_num_reorder_pics[i - 1]. Когда max_num_reorder_pics[i] отсутствует для i в диапазоне от 0 до maxSubLayersMinus1 - 1 включительно, из-за того, что subLayerInfoFlag равен 0, предполагается, что он равен max_num_reorder_pics[maxSubLayersMinus1].
max_latency_increase_plus1[i], не равное 0, используется для вычисления значения MaxLatencyPictures[i], которое указывает максимальное количество изображений в OLS, которые могут предшествовать любому изображению в OLS в порядке вывода и следовать за этим изображением в порядке декодирования, когда Htid равно i.
Когда max_latency_increase_plus1[i] не равно 0, значение MaxLatencyPictures[i] указывается следующим образом:
MaxLatencyPictures[i] = max_num_reorder_pics[i] + max_latency_increase_plus1[i] - 1 (7-111)
Когда max_latency_increase_plus1[i] равно 0, соответствующий предел не выражается.
Значение max_latency_increase_plus1[i] должно находиться в диапазоне от 0 до 232-2 включительно. Когда max_latency_increase_plus1[i] отсутствует для i в диапазоне от 0 до maxSubLayersMinus1 - 1 включительно, из-за того, что subLayerInfoFlag равен 0, предполагается, что он равен max_latency_increase_plus1[maxSubLayersMinus1].
Структура сигнализации dpb_parameters сигнализирует либо информацию о буфере декодированного изображения одного подуровня, либо информацию о декодированном изображении каждого подуровня, управляемую значением subLayerInfoFlag. Когда значение subLayerInfoFlag равно 0, сигнализируется буфер декодированного изображения самого высокого подуровня среди доступных временных подуровней (i=maxSubLayersMinus1). Когда значение subLayerInfoFlag равно 1, сигнализируется буфер декодированного изображения каждого подуровня среди доступных временных подуровней (значение i находится в диапазоне от 0 до maxSubLayersMinus1 включительно).
В некоторых примерах синтаксический элемент sps_sublayer_dpb_params_flag используется только как второй параметр dpb_parameters.
Вариант 10 осуществления
Согласно десятому варианту осуществления значение синтаксического элемента sps_sublayer_dpb_params_flag кодируется в битовом потоке на основе значения синтаксического элемента sps_ptl_dpb_hrd_params_present_flag следующим образом:
В этом варианте осуществления, когда значение sps_max_sublayers_minus1 больше 0, а значение sps_ptl_dpb_hrd_params_present_flag равно 0, значение синтаксического элемента sps_sublayer_dpb_params_flag не нужно кодировать в битовом потоке.
Вариант 11 осуществления
Согласно одиннадцатому варианту осуществления значение синтаксического элемента sps_sublayer_dpb_params_flag кодируется в битовом потоке на основе значения синтаксического элемента sps_ptl_dpb_hrd_params_present_flag следующим образом:
В этом варианте осуществления, когда значение sps_max_sublayers_minus1 больше 0, а значение sps_ptl_dpb_hrd_params_present_flag равно 0, значение синтаксического элемента sps_sublayer_dpb_params_flag не нужно кодировать в битовом потоке. Кроме того, синтаксические элементы реструктурированы с более четким дизайном. Синтаксический элемент sps_ptl_dpb_hrd_params_present_flag выровнен, чтобы предписать сигнализацию как синтаксического элемента sps_sublayer_dpb_params_flag, так и структуры сигнализации dpb_parameters().
Вариант 12 осуществления
Согласно двенадцатому варианту осуществления значение синтаксического элемента sps_sublayer_dpb_params_flag кодируется в битовом потоке на основе значения синтаксического элемента sps_ptl_dpb_hrd_params_present_flag следующим образом:
Соответственно структура сигнализации dpb_parameters изменяется следующим образом:
В этом варианте осуществления, когда значение sps_max_sublayers_minus1 больше 0, а значение sps_ptl_dpb_hrd_params_present_flag равно 0, значение синтаксического элемента sps_sublayer_dpb_params_flag не нужно кодировать в битовом потоке. По сравнению с вариантом осуществления 11 структура сигнализации dpb_parameter() сигнализируется от первого подуровня к самому высокому подуровне, что указывается параметрами firstSubLayer и maxSubLayersMinus1 соответственно. Выбор первого подуровня вынесен из dpb_parameter(). Таким образом, семантика sps_sublayer_dpb_params_flag более ясна.
В примере, как раскрыто в проекте VVC (например, ITU JVET-Q2001-v13), существует два режима для слайса: режим слайса растрового сканирования и режим слайса прямоугольной формы. Однако, согласно текущему определению, слайс может быть либо в режиме растрового сканирования, либо в режиме прямоугольника.
Определение слайсов описывается следующим образом:
Слайс состоит из целого числа полных тайлов или целого числа последовательных полных строк CTU в тайле изображения. Следовательно, каждая вертикальная граница слайса также является вертикальной границей тайла. Возможно, что горизонтальная граница слайса не является границей тайла, а состоит из горизонтальных границ CTU внутри тайла; это происходит, когда тайл разделяется на несколько прямоугольных слайсов, каждый из которых состоит из целого числа последовательных полных строк CTU в тайле.
Поддерживаются два режима слайсов, а именно режим слайсов растрового сканирования и режим прямоугольных слайсов. В режиме слайса растрового сканирования слайс содержит последовательность полных тайлов в растровом сканировании тайлов изображения. В режиме прямоугольного слайса слайс содержит либо несколько полных тайлов, которые в совокупности образуют прямоугольную область изображения, либо ряд последовательных полных строк CTU одного тайла, которые вместе образуют прямоугольную область изображения. Тайлы внутри прямоугольного слайса сканируются в порядке растрового сканирования тайлов в пределах прямоугольной области, соответствующей этому слайсу.
Единственным ограничением для слайса растрового сканирования является то, что он «содержит последовательность полных тайлов в растровом сканировании тайлов изображения». Например, как показано на фиг. 12, на изображении есть только два тайлы и один слайс. Этот слайс может быть либо в режиме слайса растрового сканирования, либо в режиме прямоугольного слайса. Это может привести к путанице для двух режимов слайса.
Вариант 13 осуществления
Предлагается дополнительно ограничить определение слайса растрового сканирования следующим образом:
В режиме слайса растрового сканирования слайс содержит последовательность полных тайлов в растровом сканировании тайлов изображения, и это изображение содержит по меньшей мере один слайс, образующий непрямоугольную форму.
Например, при таком определении слайса растрового сканирования изображение, показанное на фиг. 13, является слайсом растрового сканирования, но изображение, показанное на фиг. 12, может использовать только режим прямоугольного слайса.
Соответственно, изменяется сигнализация для структуры тайла.
В одном примере сигнализация информации о тайле в PPS выглядит следующим образом:
no_pic_partition_flag, равное 1, указывает, что к каждому изображению, относящемуся к PPS, не применяется разделение изображения. no_pic_partition_flag равное 0 указывает, что каждое изображение, относящееся к PPS, может быть разделено более чем на один тайл или слайс.
Требованием соответствия битового потока является то, что значение no_pic_partition_flag должно быть одинаковым для всех PPS, на которые ссылаются кодированные изображения в CLVS.
Требованием соответствия битового потока является то, что значение no_pic_partition_flag не должно быть равно 1, когда значение sps_num_subpics_minus1+1 больше 1.
pps_log2_ctu_size_minus5 плюс 5 задает размер блока дерева кодирования яркости каждой CTU. pps_log2_ctu_size_minus5 должно быть равно sps_log2_ctu_size_minus5.
num_exp_tile_columns_minus1 плюс 1 указывает количество явно заданных значений ширины столбца тайлов. Значение num_exp_tile_columns_minus1 должно находиться в диапазоне от 0 до PicWidthInCtbsY - 1 включительно. Когда no_pic_partition_flag равен 1, предполагается, что значение num_exp_tile_columns_minus1 равно 0.
num_exp_tile_rows_minus1 плюс 1 указывает количество явно заданных высот строк тайлов. Значение num_exp_tile_rows_minus1 должно находиться в диапазоне от 0 до PicHeightInCtbsY - 1 включительно. Когда no_pic_partition_flag равен 1, предполагается, что значение num_tile_rows_minus1 равно 0.
tile_column_width_minus1[i] плюс 1 указывает ширину i-го столбца тайлов в единицах CTB для i в диапазоне от 0 до num_exp_tile_columns_minus1 - 1 включительно. tile_column_width_minus1[num_exp_tile_columns_minus1] используется для получения ширины столбцов тайлов с индексом, большим или равным num_exp_tile_columns_minus1, как указано в пункте 6.5.1. Значение tile_column_width_minus1[i] должно находиться в диапазоне от 0 до PicWidthInCtbsY - 1 включительно. Если значение tile_column_width_minus1[0] отсутствует, предполагается, что оно равно PicWidthInCtbsY - 1.
tile_row_height_minus1[i] плюс 1 определяет высоту i-го ряда тайлов в единицах CTB для i в диапазоне от 0 до num_exp_tile_rows_minus1 - 1 включительно. tile_row_height_minus1[num_exp_tile_rows_minus1] используется для получения высоты строк тайлов с индексом, большим или равным num_exp_tile_rows_minus1, как указано в пункте 6.5.1. Значение tile_row_height_minus1[i] должно находиться в диапазоне от 0 до PicHeightInCtbsY - 1 включительно. Если он отсутствует, предполагается, что значение tile_row_height_minus1[0] равно PicHeightInCtbsY - 1.
rect_slice_flag, равный 0, указывает, что тайлы в каждом слайсе находятся в порядке растрового сканирования, и информация о слайсе не сигнализируется в PPS. rect_slice_flag равное 1 указывает, что тайлы в каждом слайсе покрывают прямоугольную область изображения, а информация о слайсе сигнализируется в PPS. Если флаг rect_slice_flag отсутствует, предполагается, что он равен 1. Когда subpic_info_present_flag равен 1, значение rect_slice_flag должно быть равно 1.
single_slice_per_subpic_flag, равный 1, указывает, что каждое подизображение состоит из одного и только одного прямоугольного слайса. single_slice_per_subpic_flag, равный 0, указывает, что каждое подизображение может состоять из одного или более прямоугольных слайсов. Когда single_slice_per_subpic_flag равен 1, предполагается, что num_slices_in_pic_minus1 равно sps_num_subpics_minus1. Если он отсутствует, предполагается, что значение single_slice_per_subpic_flag равно 0. [Ред. (GJS): Рассмотрите возможность переименования этого флага или разъяснения другим способом, чтобы избежать интерпретации, что этот флаг имеет значение только тогда, когда в каждом изображении имеется более одного подизображения.]
Когда количество тайлов в изображении больше 1, флаг rect_slice_flag синтаксически анализируется из битового потока, значение rect_slice_flag указывает, используется ли режим прямоугольного слайса (когда значение равно 1) для изображения или режим слайса растрового сканирования (когда значение равно 0) используется для изображения.
Соответственно, в заголовке слайса
picture_header_in_slice_header_flag, равный 1, указывает, что синтаксическая структура PH присутствует в заголовке слайса. picture_header_in_slice_header_flag, равный 0, указывает, что синтаксическая структура PH отсутствует в заголовке слайса.
Требованием соответствия битового потока является то, что значение picture_header_in_slice_header_flag должно быть одинаковым во всех закодированных слайсах в CLVS.
Когда picture_header_in_slice_header_flag равен 1 для кодированного слайса, требование соответствия битового потока состоит в том, что в CLVS не должен присутствовать блок NAL VCL с nal_unit_type, равным PH_NUT.
Когда picture_header_in_slice_header_flag равен 0, все кодированные слайсы в текущем изображении должны иметь picture_header_in_slice_header_flag равным 0, а текущая PU должна иметь единицу PH NAL.
slice_subpic_id задает ID подизображения для подизображения, которая содержит слайс. Если присутствует slice_subpic_id, значение переменной CurrSubpicIdx получается таким, что SubpicIdVal[CurrSubpicIdx] равно slice_subpic_id. В противном случае (slice_subpic_id отсутствует) CurrSubpicIdx выводится равным 0. Длина slice_subpic_id равна sps_subpic_id_len_minus1+1 бит.
slice_address указывает адрес слайса для слайса. Если он отсутствует, предполагается, что значение slice_address равно 0. Когда rect_slice_flag равен 1, а NumSlicesInSubpic[CurrSubpicIdx] равен 1, предполагается, что значение slice_address равно 0.
Если rect_slice_flag равен 0, применяется следующее:
- Адрес слайса - это индекс тайла растрового сканирования.
- Длина slice_address составляет Ceil(Log2 (NumTilesInPic)) бит.
- Значение slice_address должно быть в диапазоне от 0 до NumTilesInPic - 1 включительно.
В противном случае (rect_slice_flag равен 1) применяется следующее:
- Адрес слайса представляет собой индексслайса для слайса на уровне подизображения.
- Длина slice_address составляет Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) бит.
- Значение slice_address должно находиться в диапазоне от 0 до NumSlicesInSubpic[CurrSubpicIdx] - 1 включительно.
Требованием соответствия битового потока являются следующие ограничения:
- Если rect_slice_flag равен 0 или subpic_info_present_flag равен 0, значение slice_address не должно быть равно значению slice_address любого другого блока NAL кодированного слайса того же кодированного изображения.
- В противном случае пара значений slice_subpic_id и slice_address не должна быть равна паре значений slice_subpic_id и slice_address любой другой кодированной единицы NAL слайса того же кодированного изображения.
- Формы слайсов изображения должны быть такими, чтобы каждая CTU при декодировании имела всю левую границу и всю верхнюю границу, состоящую из границы изображения или состоящую из границ ранее декодированных CTU.
sh_extra_bit[i] может быть равно 1 или 0. Декодеры, соответствующие этой версии настоящей Спецификации, должны игнорировать значение sh_extra_bit[i]. Его значение не влияет на соответствие декодера профилям, указанным в этой версии спецификации.
num_tiles_in_slice_minus1 плюс 1, если присутствует, указывает количество тайлов в слайсе. Значение num_tiles_in_slice_minus1 должно быть в диапазоне от 0 до NumTilesInPic - 1 включительно.
Предлагается изменить приведенный выше механизм сигнализации следующим образом в PPS и заголовке слайса:
В частности, в настоящем документе также представлены следующие варианты осуществления (в новом перечислении).
1. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий:
получение битового потока, набор параметров последовательности, SPS, кодируется в битовом потоке;
получение значения первого синтаксического элемента sps_max_sublayers_minus1 в соответствии с битовым потоком, при этом значение первого синтаксического элемента sps_max_sublayers_minus1 используется для указания максимального количества временных подуровней, присутствующих в видеопоследовательности кодированного уровня, CLVS, со ссылкой на SPS;
получение значения второго синтаксического элемента sps_ptl_dpb_hrd_params_present_flag в соответствии с битовым потоком, при этом значение второго синтаксического элемента sps_ptl_dpb_hrd_params_present_flag используется для указания того, присутствует ли синтаксическая структура параметров буфера декодированного изображения, DPB, (например, dpb_prameters) в SPS ;
синтаксический анализ значения третьего синтаксического элемента sps_sublayer_dpb_params_flag из битового потока, когда значение первого синтаксического элемента sps_max_sublayers_minus1 больше первого значения по умолчанию (например, первое значение по умолчанию равно 0) и когда значение второго синтаксического элемента sps_ptl_dpb_hrd_params_present_flag равно второму значению по умолчанию (например, второе значение по умолчанию равно 1), при этом значение третьего синтаксического элемента sps_sublayer_dpb_params_flag используется для управления наличием синтаксического элемента (например, max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и /или max_latency_increase_plus1[i] для i в диапазоне от 0 до sps_max_sublayers_minus1-1 включительно, когда sps_max_sublayers_minus1 больше 0) в синтаксической структуре параметров DPB (например, dpb_prameters) в SPS.
2. Способ по варианту осуществления 1, в котором способ дополнительно содержит:
установка значения третьего синтаксического элемента sps_sublayer_dpb_params_flag в третье значение по умолчанию (например, третье значение по умолчанию равно 0 или 1), когда значение первого синтаксического элемента sps_max_sublayers_minus1 меньше или равно первому значению по умолчанию или когда значение второго синтаксического элемента sps_ptl_dpb_hrd_params_present_flag не равно второму значению по умолчанию.
3. Способ по варианту осуществления 1 или 2, в котором значение третьего синтаксического элемента sps_sublayer_dpb_params_flag кодируется в SPS.
4. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий:
получение битового потока, набор параметров последовательности, SPS, кодируется в битовом потоке;
получение значения первого синтаксического элемента sps_max_sublayers_minus1 в соответствии с битовым потоком, при этом значение первого синтаксического элемента sps_max_sublayers_minus1 используется для указания максимального количества временных подуровней, которые присутствуют в видеопоследовательности кодированного уровня, CLVS, относящейся к SPS;
получение значения второго синтаксического элемента sps_ptl_dpb_hrd_params_present_flag в соответствии с битовым потоком, при этом значение второго синтаксического элемента sps_ptl_dpb_hrd_params_present_flag используется для указания того, присутствует ли синтаксическая структура параметров буфера декодированного изображения, DPB, (например, dpb_prameters) в SPS ;
определение того, равно ли значение второго синтаксического элемента sps_ptl_dpb_hrd_params_present_flag второму значению по умолчанию (например, второе значение по умолчанию равно 1);
определение того, превышает ли значение первого синтаксического элемента sps_max_sublayers_minus1 первое значение по умолчанию (например, первое значение по умолчанию равно 0), когда определено, что значение второго синтаксического элемента sps_ptl_dpb_hrd_params_present_flag равно второму значению по умолчанию;
синтаксический анализ значения третьего синтаксического элемента sps_sublayer_dpb_params_flag из битового потока, когда определено, что значение первого синтаксического элемента sps_max_sublayers_minus1 больше, чем первое значение по умолчанию (например, первое значение по умолчанию равно 0), при этом значение третьего синтаксический элемент sps_sublayer_dpb_params_flag используется для управления наличием синтаксического элемента (например, max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i] и/или max_latency_increase_plus1[i] для i в диапазоне от 0 до sps_max_sublayers_minus1-1 включительно, когда sps_max_sublayers_minus1 больше 0) в синтаксической структуре параметров DPB (например, dpb_prameters) в SPS.
5. Способ по варианту осуществления 4, в котором способ дополнительно содержит:
установку значения третьего синтаксического элемента sps_sublayer_dpb_params_flag в третье значение по умолчанию (например, третье значение по умолчанию равно 0 или 1), когда определено, что значение первого синтаксического элемента sps_max_sublayers_minus1 меньше или равно первому значению по умолчанию или когда определено, что значение второго синтаксического элемента sps_ptl_dpb_hrd_params_present_flag не равно второму значению по умолчанию.
6. Способ по варианту осуществления 4 или 5, в котором значение третьего синтаксического элемента sps_sublayer_dpb_params_flag кодируется в SPS (в других примерах значение третьего синтаксического элемента sps_sublayer_dpb_params_flag кодируется в наборе параметров изображения, PPS или значение третьего синтаксический элемент sps_sublayer_dpb_params_flag кодируется в наборе параметров видео (VPS).
7. Способ по любому из вариантов осуществления 1-6, в котором значение первого синтаксического элемента кодируется в наборе параметров изображения, PPS, или значение первого синтаксического элемента кодируется в наборе параметров видео, VPS (в другом примере, значение второго синтаксического элемента кодируется в наборе параметров изображения, PPS, или значение второго синтаксического элемента кодируется в наборе параметров видео, VPS).
8. Способ по любому из вариантов осуществления 1-7, в котором, когда sps_max_sublayers_minus1 равен 0, max_dec_pic_buffering_minus1[0], max_num_reorder_pics[0] и max_latency_increase_plus1[0] всегда сигнализируется для единственного подуровня, относящегося к SPS.
9. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий:
определение косвенного опорного уровня с индексом j уровня с индексом i только по меньшей мере из одного уровня с индексом ниже i;
когда для текущего изображения включено межуровневое предсказание, получение его опорного изображения в косвенном опорном уровне с индексом j,</GipSegment>
прогнозирование текущего изображения с использованием опорного изображения из косвенного опорного уровня с индексом j.
10. Способ по варианту осуществления 9, в котором определение косвенного опорного уровня уровня с индексом i содержит: определение того, что существует уровень с индексом k, только среди по меньшей мере одного уровня с индексом ниже i и выше j, является прямой ссылкой уровня с индексом i, при этом косвенный опорный уровень с индексом j является опорным уровнем для непосредственного опорного уровня с индексом k.
11. Способ по варианту осуществления 9, в котором определение косвенного непосредственного опорного уровня для уровня с индексом i содержит: определение того, что существует уровень с индексом k, только среди по меньшей мере одного уровня с индексом ниже, чем i, является прямой ссылкой для уровня с индексом i, при этом косвенный опорный уровень с индексом j является опорным уровнем непосредственного опорного уровня с индексом k.
12. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий:
определение косвенного опорного уровня с индексом j уровня с индексом i, когда определено, что существует уровень с индексом k, только среди по меньшей мере одного уровня с индексом ниже i и выше j, является непосредственным опорным уровнем уровень с индексом i, при этом уровень с индексом j является опорным уровнем непосредственного опорного уровня с индексом k.
когда для текущего изображения включено межуровневое предсказание, получение его опорного изображения в косвенном опорном уровне с индексом j,</GipSegment>
прогнозирование текущего изображения с использованием опорного изображения из косвенного опорного уровня с индексом j.
13. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий:
получение битового потока, набор параметров изображения, PPS, кодируется в битовом потоке;
получение количества столбцов тайлов NumTileColumns для текущего изображения (например, текущее изображение содержит по меньшей мере один слайс, формирующий непрямоугольную форму) в соответствии с битовым потоком;
получение количества строк тайлов NumTileRows для текущего изображения согласно битовому потоку;
получение значения переменной NumTilesInPic в соответствии с количеством столбцов тайлов NumTileColumns и количеством строк тайлов NumTileRows;
синтаксический анализ значения синтаксического элемента rect_slice_flag из битового потока, когда значение переменной NumTilesInPic больше предварительно установленного значения (например, предварительно установленное значение равно 3), при этом значение синтаксического элемента rect_slice_flag используется для указания того, сигнализируется ли информация о слайсе в PPS.
14. Способ согласно варианту осуществления 13, в котором способ дополнительно содержит:
установку значения синтаксического элемента rect_slice_flag в четвертое значение по умолчанию (например, четвертое значение по умолчанию равно 1), когда значение переменной NumTilesInPic меньше или равно предварительно установленному значению.
15. Способ по варианту осуществления 13 или 14, в котором значение переменной NumTilesInPic равно NumTileColumns * NumTileRows.
16. Способ по любому из вариантов осуществления 13-15, в котором способ дополнительно содержит:
синтаксический анализ значения адреса слайса slice_address текущего слайса из битового потока, когда значение синтаксического элемента rect_slice_flag равно пятому значению по умолчанию (например, пятое значение по умолчанию равно 0) и когда значение переменной NumTilesInPic больше чем предварительно установленное значение, при этом текущий слайс содержится в текущем изображении.
17. Способ по варианту осуществления 16, в котором значение адреса слайса кодируется в заголовке слайса для текущего слайса.
18. Способ по любому из вариантов осуществления 13-17, в котором способ дополнительно включает в себя:
получение количества тайлов num_tiles_in_slice_minus1, содержащихся в текущем слайсе, когда значение синтаксического элемента rect_slice_flag равно пятому значению по умолчанию и когда значение переменной NumTilesInPic больше предварительно установленного значения.
19. Способ по варианту осуществления 18, в котором количество тайлов num_tiles_in_slice_minus1 кодируется в заголовке слайса для текущего слайса.
20. Декодер (30), содержащий схему обработки для осуществления способа согласно любому из вариантов осуществления 1-19.
21. Компьютерный программный продукт, содержащий программный код для выполнения способа согласно любому из вариантов осуществления с 1 по 19 при выполнении на компьютере или процессоре.
22. Декодер, содержащий:
один или более процессоров; и
не-кратковременный считываемый компьютером носитель данных, связанный с процессорами и хранящий программную часть для выполнения процессорами, при этом программная часть, когда она выполняется процессорами, конфигурирует декодер для выполнения способа согласно любому из вариантов осуществления 1- 19. .
23. Не-кратковременный считываемый компьютером носитель, содержащий программный код, который при выполнении компьютерным устройством предписывает компьютерному устройству выполнять способ любого из вариантов осуществления 1-19.
Ниже приводится объяснение применений способа кодирования, а также способа декодирования, как показано в вышеупомянутых вариантах осуществления, и системы, использующей их.
Фиг. 8 является блок-схемой, показывающей систему 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 для приема и показа декодированных данных.
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображения или устройство декодирования изображения, как показано в вышеупомянутых вариантах осуществления.
Фиг. 9 является схемой, показывающей структуру примерного терминального устройства 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 синхронизации. Аудиодекодер 3208 декодирует аудио ES для формирования аудиокадра и подает эти данные в блок 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на фиг. 9) перед его подачей в блок 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на фиг. 9) перед его подачей в блок 3212 синхронизации.
Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио в видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может кодироваться в синтаксисе с использованием временных меток, касающихся представления кодированных аудио- и видеоданных, а также временных меток, касающихся доставки самого потока данных.
Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.
Настоящее изобретение не ограничивается вышеупомянутой системой, и либо устройство кодирования изображения, либо устройство декодирования изображения в вышеупомянутых вариантах осуществления может быть включено в другую систему, например, автомобильную систему.
Математические операторы
Математические операторы, используемые в этой заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и вещественнозначное деление. Соглашения о нумерации и подсчете определяют начало с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т.д.
Арифметические операторы
Следующие арифметические операторы определены следующим образом:
Логические операторы
Следующие логические операторы определены следующим образом:
x && y Булево логическое «и» для x и y
x || 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.
Математические функции
Определены следующие математические функции:
Asin(x) тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан
Atan(x) тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан
Ceil(x) наименьшее целое число, которое больше или равно x.
Clip1Y(x)=Clip3(0, (1 << BitDepthY) - 1, x)
Clip1C(x)=Clip3(0, (1 << BitDepthC) - 1, x)
Cos(x) тригонометрическая функция косинуса, работающая с аргументом x в единицах радиан.
Floor(x) наибольшее целое число, меньшее или равное x.
Ln(x) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма, равная 2,718 281 828…).
Log2(x) - логарифм x по основанию 2
Log10(x) - логарифм x по основанию 10.
Round(x)=Sign(x) * Floor(Abs(x) + 0,5)
Sin(x) тригонометрическая функция синуса, работающая с аргументом x в единицах радиан.
Swap(x, y)=(y, x)
Tan(x) тригонометрическая функция тангенса, работающая с аргументом x в единицах радиан.
Порядок приоритетности операций
Когда порядок приоритетности в выражении явно не указан с помощью круглых скобок, применяются следующие правила:
-- Операции с более высоким приоритетом выполняются перед любой операцией с более низким приоритетом.
-- Операции с одинаковым приоритетом выполняются последовательно слева направо.
В таблице ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет.
Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C.
Таблица: Приоритетность операций от наивысшей (в верхней части таблицы) до низшей (в нижней части таблицы)
Текстовое описание логических операций
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
может быть описано следующим образом:
Каждое определение "если … Иначе, если … Иначе, …" в тексте вводится словами "… как указано ниже" или "…применяется следующее", за которым сразу следует "если …". Последним условием "если … Иначе, если … Иначе, …" всегда является "Иначе, …". Чередование определений "если … Иначе, если … Иначе, …" могут быть идентифицированы путем сопоставления "… как указано ниже" или "… применяется следующее" с завершающим "Иначе, …".
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
может быть описано следующим образом:
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
может быть описано следующим образом:
Когда условие 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 или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая- связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на не-кратковременные, материальные запоминающие носители. Диск (disk) и диск (disc), используемые используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, а диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.
Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, интегральных схем специального назначения (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин «процессор», используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации методик, описанных в данном документе. Кроме того, в некоторых аспектах функциональные возможности, описанные в данном документе, могут быть предоставлены в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования и декодирования, или включены в комбинированный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.
Методики этого раскрытия могут быть реализованы в большом количестве устройств или аппаратных компонентов, в том числе таких как беспроводной телефон, интегральная схема (ИС) или набор ИС (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены совокупностью взаимодействующих аппаратных блоков, в том числе один или более процессоров, как описано выше, вместе с подходящим программным обеспечением и/или микропрограммным обеспечением.
Изобретение относится к средствам для кодирования видео. Технический результат заключается в повышении эффективности кодирования видео. Получают значение первого синтаксического элемента из SPS, при этом значение первого синтаксического элемента используется для указания того, присутствует ли синтаксическая структура параметров буфера декодированного изображения, DPB, в SPS. Получают значение второго синтаксического элемента из SPS, по меньшей мере, при определении того, что значение первого синтаксического элемента указывает, что синтаксическая структура параметров DPB присутствует в SPS. При этом значение второго синтаксического элемента используется для указания присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB. При этом синтаксический элемент DPB применяется к временному подуровню, за исключением самого высокого временного подуровня в видеопоследовательности. 9 н. и 10 з.п. ф-лы, 18 ил.
1. Способ декодирования битового потока видео, реализуемый устройством декодирования, в котором набор параметров последовательности, SPS, закодирован в битовом потоке видео и содержит синтаксические элементы, которые применяются к видеопоследовательности, при этом способ содержит:
получение (1410) значения первого синтаксического элемента из SPS, при этом значение первого синтаксического элемента используется для указания того, присутствует ли синтаксическая структура параметров буфера декодированного изображения, DPB, в SPS; и
получение (1420) значения второго синтаксического элемента из SPS, по меньшей мере, при определении того, что значение первого синтаксического элемента указывает, что синтаксическая структура параметров DPB присутствует в SPS, при этом значение второго синтаксического элемента используется для указания присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB, при этом синтаксический элемент DPB применяется к временному подуровню, за исключением самого высокого временного подуровня в видеопоследовательности.
2. Способ по п. 1, при этом способ дополнительно содержит:
получение значения синтаксического элемента DPB на основе значения второго синтаксического элемента; и
восстановление видеопоследовательности на основе значения синтаксического элемента DPB.
3. Способ по п. 2, в котором получение значения синтаксического элемента DPB на основе значения второго синтаксического элемента содержит:
получение значения синтаксического элемента DPB из синтаксической структуры параметров DPB при определении того, что значение второго синтаксического элемента указывает, что синтаксический элемент DPB присутствует в синтаксической структуре параметров DPB; или
установку значения синтаксического элемента DPB равным значению другого синтаксического элемента DPB, применяемого к самому высокому временному подуровню в синтаксической структуре параметров DPB, при определении того, что значение второго синтаксического элемента указывает, что синтаксический элемент DPB отсутствует в синтаксической структуре параметров DPB.
4. Способ по любому из пп. 2, 3, в котором восстановление видеопоследовательности на основе значения синтаксического элемента DPB содержит:
настройку DPB на основе значения синтаксического элемента DPB; и
восстановление видеопоследовательности с использованием DPB.
5. Способ по любому из пп. 2, 3, в котором восстановление видеопоследовательности на основе значения синтаксического элемента DPB содержит восстановление видеопоследовательности на основе определения того, что используемый DPB удовлетворяет требованию, заданному значением синтаксического элемента DPB.
6. Способ по любому из пп. 1-5, при этом способ дополнительно содержит:
получение значения третьего синтаксического элемента из SPS, при этом значение третьего синтаксического элемента используется для определения максимального количества временных подуровней, присутствующих в видеопоследовательности.
7. Способ по п. 6, в котором получение значения второго синтаксического элемента из SPS содержит:
определение того, больше ли максимальное количество временных подуровней в битовом потоке видео, чем 1, на основе значения третьего синтаксического элемента, при определении того, что значение первого синтаксического элемента указывает, что синтаксическая структура параметров DPB присутствует в SPS; и
получение значения второго синтаксического элемента из SPS при определении того, что максимальное количество временных подуровней больше одного.
8. Способ кодирования битового потока видео, реализуемый устройством кодирования, в котором набор параметров последовательности, SPS, кодируется в битовом потоке видео и содержит синтаксические элементы, которые применяются к видеопоследовательности, при этом способ содержит:
определение (1510) присутствия синтаксической структуры параметров буфера декодированного изображения, DPB, в SPS;
кодирование (1520) значения первого синтаксического элемента в SPS на основе определения присутствия синтаксической структуры параметров DPB в SPS, при этом значение первого синтаксического элемента используется для указания того, присутствует ли синтаксическая структура параметров DPB в SPS;
определение (1530) присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB, при определении того, что синтаксическая структура параметров DPB присутствует в SPS, при этом синтаксический элемент DPB применяется к временному подуровню, за исключением самого высокого временного подуровня в видеопоследовательности; и
кодирование (1540) значения второго синтаксического элемента в SPS на основе определения присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB, при этом значение второго синтаксического элемента используется для указания присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB.
9. Способ по п. 8, при этом способ дополнительно содержит:
определение значения синтаксического элемента DPB при определении того, что синтаксический элемент DPB присутствует в синтаксической структуре параметров DPB; и
восстановление видеопоследовательности на основе значения синтаксического элемента DPB.
10. Способ по п. 8, при этом способ дополнительно содержит:
установку значения синтаксического элемента DPB равным значению другого синтаксического элемента DPB, применяемого к самому высокому временному подуровню в синтаксической структуре параметров DPB; и
восстановление видеопоследовательности на основе значения синтаксического элемента DPB.
11. Способ по любому из пп. 9, 10, в котором восстановление видеопоследовательности на основе значения синтаксического элемента DPB содержит:
настройку DPB для удовлетворения значения синтаксического элемента DPB; и
восстановление видеопоследовательности с использованием DPB.
12. Способ по любому из пп. 8-11, в котором определяется присутствие синтаксического элемента DPB в синтаксической структуре параметров DPB, когда определено, что синтаксическая структура параметров DPB присутствует в SPS, и определено, что максимальное количество временных подуровней в битовом потоке видео больше одного.
13. Устройство (1600) для декодирования кодированного битового потока видео, при этом устройство содержит:
блок (1610) получения, выполненный с возможностью получения значения первого синтаксического элемента из SPS, закодированного в битовом потоке видео, при этом значение первого синтаксического элемента используется для указания того, присутствует ли синтаксическая структура параметров буфера декодированного изображения, DPB, в SPS; и
блок (1620) определения, выполненный с возможностью определения того, указывает ли значение первого синтаксического элемента, что синтаксическая структура параметров DPB присутствует в SPS; и при этом
блок получения дополнительно выполнен с возможностью получения значения второго синтаксического элемента из SPS, по меньшей мере, при определении того, что значение первого синтаксического элемента указывает, что синтаксическая структура параметров DPB присутствует в SPS, при этом значение второго синтаксического элемента используется для указания присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB, при этом синтаксический элемент DPB применяется к временному подуровню, за исключением самого высокого временного подуровня в видеопоследовательности.
14. Устройство (1700) для кодирования битового потока видео, при этом устройство содержит:
блок (1710) определения, выполненный с возможностью определения присутствия синтаксической структуры параметров буфера декодированного изображения, DPB, в SPS, закодированном в битовом потоке видео; и
блок (1720) кодирования, выполненный с возможностью кодирования значения первого синтаксического элемента в SPS на основе определения присутствия синтаксической структуры параметров DPB в SPS, при этом значение первого синтаксического элемента используется для указания того, присутствует ли синтаксическая структура параметров DPB в SPS; при этом
блок (1710) определения дополнительно выполнен с возможностью определения присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB при определении того, что синтаксическая структура параметров DPB присутствует в SPS, при этом синтаксический элемент DPB применяется к временному подуровню за исключением самого высокого временного подуровня в видеопоследовательности; и при этом
блок (1720) кодирования дополнительно выполнен с возможностью кодирования значения второго синтаксического элемента в SPS на основе определения присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB, при этом значение второго синтаксического элемента используется для указания присутствия синтаксического элемента DPB в синтаксической структуре параметров DPB.
15. Кодер, содержащий схему обработки для осуществления способа по любому из пп. 8-12.
16. Декодер, содержащий схему обработки для осуществления способа по любому из пп. 1-7.
17. Декодер, содержащий:
один или более процессоров; и
некратковременный считываемый компьютером носитель данных, связанный с процессорами и хранящий программную часть для исполнения процессорами, при этом программная часть, когда она исполняется процессорами, конфигурирует декодер для выполнения способа по любому из пп. 1-7.
18. Кодер, содержащий:
один или более процессоров; и
некратковременный считываемый компьютером носитель данных, соединенный с процессорами и хранящий программную часть для выполнения процессорами, при этом программная часть, когда она выполняется процессорами, конфигурирует упомянутый кодер для выполнения способа по любому из пп. 8-12.
19. Некратковременный считываемый компьютером носитель, содержащий программный код, который при выполнении компьютерным устройством предписывает компьютерному устройству выполнять способ по любому из пп. 1-12.
Способ защиты переносных электрических установок от опасностей, связанных с заземлением одной из фаз | 1924 |
|
SU2014A1 |
Устройство для закрепления лыж на раме мотоциклов и велосипедов взамен переднего колеса | 1924 |
|
SU2015A1 |
Токарный резец | 1924 |
|
SU2016A1 |
US 10257519 B2, 09.04.2019 | |||
ПЕРЕДАЮЩЕЕ УСТРОЙСТВО, СПОСОБ ПЕРЕДАЧИ, ПРИЕМНОЕ УСТРОЙСТВО И СПОСОБ ПРИЕМА | 2014 |
|
RU2678495C2 |
Авторы
Даты
2024-12-17—Публикация
2021-02-27—Подача