Область техники, к которой относится изобретение
Варианты осуществления настоящей заявки (раскрытия) относятся, в общем, к области обработки изображений и, в частности, к синтаксическим элементам высокого уровня.
Уровень техники
Кодирование видео (кодирование и декодирование видео) используется в широком диапазоне приложений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в режиме реального времени, таких как видеоразговор, видеоконференц-связь, DVD. и диски Blu-ray, системы сбора и редактирования содержания видео и записывающие видеокамеры приложений безопасности.
Объем видеоданных, необходимых для изображения даже относительно короткого видео, может быть значительным, что может привести к затруднениям в тех случаях, когда данные должны передаваться в потоковом режиме или иным образом по сети связи с ограниченной пропускной способностью. Таким образом, перед передачей по современным телекоммуникационным сетям видеоданные, как правило, сжимаются. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, так как ресурсы памяти могут быть ограничены. В источнике устройства сжатия видео часто используют программное обеспечение и/или аппаратные средства для кодирования видеоданных перед передачей или хранением, тем самым уменьшая объем данных, необходимых для представления цифровых видеоизображений. Затем сжатые данные принимаются в месте назначения устройством распаковки видео, которое декодирует видеоданные. При ограниченных сетевых ресурсах и постоянно растущих требованиях к более высокому качеству видео желательно использовать улучшенные технологии сжатия и распаковки, которые позволили бы повысить степень сжатия с минимальными потерями без какой-либо потери качества изображения или вообще без них.
Раскрытие сущности изобретения
Варианты осуществления настоящей заявки обеспечивают устройства и способы кодирования и декодирования согласно независимым пунктам формулы изобретения.
Предмет изобретения, изложенный в независимых пунктах формулы изобретения, обеспечивает решение вышеупомянутых и других задач. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур.
Согласно первому аспекту раскрытие относится к способу декодирования битового видеопотока, выполняемому устройством декодирования, причем битовый видеопоток включает в себя данные, представляющие текущее изображение, при этом способ декодирования содержит: получение синтаксического элемента уровня изображения, включенного в заголовок изображения текущего изображения путем синтаксического анализа битового видеопотока, причем синтаксический элемент уровня изображения используется для указания того, включен ли адаптивный контурный фильтр (ALF) для текущего изображения; в случае, когда синтаксический элемент уровня изображения указывает то, что адаптивная контурная фильтрация разрешена для текущего изображения, получение идентификатора набора параметров, включенного в заголовок изображения, где идентификатор набора параметров используется для указания первого набора параметров, содержащего набор параметров ALF, и где временной идентификатор первого набора параметров меньше или равен временному идентификатору текущего изображения; выполнение адаптивной контурной фильтрации по меньшей мере над одним срезом текущего изображения на основе первого набора параметров.
Заголовок изображения представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются ко всем срезам кодированного изображения. Синтаксическая структура содержит ноль или более синтаксических элементов, присутствующих вместе в битовом потоке в указанном порядке, и синтаксический элемент представляет собой элемент данных, представленный в битовом потоке.
Первый набор параметров представляет собой набор параметров адаптации (APS), который представляет собой синтаксическую структуру.
Текущее изображение представляет собой кодированное изображение, содержащееся в единице изображения (PU), причем PU представляет собой набор единиц NAL, которые связаны друг с другом в соответствии с заданным правилом классификации и являются последовательными в порядке декодирования.
Единица слоя сетевой абстракции (NAL) представляет собой синтаксическую структуру, содержащую указатель типа данных, которому необходимо следовать, и байты, содержащие эти данные или часть данных текущего изображения, заголовок изображения или набор параметров, содержащий набор параметров ALF. При этом каждая единица NAL имеет временной идентификатор.
Если временной идентификатор первой единицы NAL меньше, чем временной идентификатор второй единицы NAL того же слоя, данные, инкапсулированные первой единицей NAL, могут быть декодированы без ссылки на данные, инкапсулированные второй единицей NAL. Временной идентификатор может также использоваться в процессе извлечения битового подпотока, который представляет собой процесс, посредством которого единицы NAL в битовом потоке, не принадлежащие к целевому набору, определенному целевым наивысшим временным идентификатором, удаляются из битового потока, с выходным битовым подпотоком, состоящим из единиц NAL в битовом потоке, которые принадлежат целевому набору. Таким образом, временной идентификатор первого набора параметров, который меньше или равен временному идентификатору текущего изображения, может разрешить обращение к первому набору параметров при декодировании текущего изображения или разрешить процесс извлечения битового подпотока для текущего изображения.
Временной идентификатор может быть связан с порядком декодирования.
В возможной форме реализации обеспечивается способ согласно по существу первому аспекту, в котором выполнение адаптивной контурной фильтрации по меньшей мере над одним срезом текущего изображения на основе первого набора параметров содержит: выполнение адаптивной контурной фильтрации над компонентом яркости по меньшей мере одного среза текущего изображения на основе первого набора параметров.
В возможной форме реализации обеспечивается способ согласно любой предыдущей реализации первого аспекта или по существу первому аспекту, причем способ дополнительно содержит: в случае, когда синтаксический элемент уровня изображения указывает то, что адаптивная контурная фильтрация разрешена для текущего изображения, получение другого идентификатора набора параметров, включенного в заголовок изображения, где идентификатор набора параметров используется для указания второго набора параметров, содержащего набор параметров ALF, и где временной идентификатор второго набора параметров меньше или равен временному идентификатору текущего изображения; выполнение адаптивной контурной фильтрации над компонентом цветности по меньшей мере одного среза текущего изображения на основе второго набора параметров.
Второй набор параметров представляет собой набор параметров адаптации (APS), который представляет собой синтаксическую структуру.
Согласно второму аспекту, раскрытие относится к способу кодирования битового видеопотока, реализуемому устройством кодирования, где битовый видеопоток включает в себя данные, представляющие текущее изображение, причем способ кодирования содержит: определение того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения; кодирование синтаксического элемента уровня изображения в заголовке изображения текущего изображения на основе определения того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения, где синтаксический элемент уровня изображения используется для указания того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения; в случае, когда адаптивная контурная фильтрация разрешена для текущего изображения, кодирование идентификатора набора параметров в заголовке изображения, где идентификатор набора параметров используется для указания первого набора параметров, содержащего набор параметров адаптивного контурного фильтра (ALF), и где временной идентификатор первого набора параметров устанавливается меньшим или равным временному идентификатору текущего изображения.
Определение того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения, может содержать: сравнение стоимости выполнения адаптивной контурной фильтрации (ALF) по меньшей мере над одним блоком текущего изображения со стоимостью без выполнения адаптивной контурной фильтрации (ALF) над текущим изображением; в случае, когда стоимость выполнения адаптивной контурной фильтрации (ALF) по меньшей мере над одним блоком текущего изображения больше или равна стоимости выполнения адаптивной контурной фильтрации (ALF) по меньшей мере над одним блоком, определение того, что адаптивный контурный фильтр (ALF) запрещен для текущего изображения; в противном случае определение того, что адаптивная контурная фильтрация (ALF) разрешена для текущего изображения. Стоимость может быть стоимостью по критерию "скорость-искажение".
В возможной форме реализации обеспечивается способ согласно по существу второму аспекту, причем способ дополнительно содержит: кодирование временного идентификатора первого набора параметров и временного идентификатора текущего изображения в битовом видеопотоке.
В возможной форме реализации обеспечивается способ согласно любой предыдущей реализации второго аспекта или по существу второму аспекту, где первый набор параметров содержит набор параметров адаптивной контурной фильтрации (ALF), выполняемой над компонентом яркости по меньшей мере одного среза текущего изображения.
В возможной форме реализации обеспечивается способ согласно любой предыдущей реализации второго аспекта или по существу второму аспекту, причем способ дополнительно содержит: в случае, когда синтаксический элемент уровня изображения указывает то, что адаптивная контурная фильтрация разрешена для текущего изображения, кодирование другого идентификатора набора параметров в заголовке изображения, где идентификатор набора параметров используется для указания второго набора параметров, содержащего набор параметров адаптивной контурной фильтрации (ALF), выполняемой над компонентом цветности по меньшей мере одного среза изображения текущего изображения, и где временной идентификатор второго набора параметров устанавливается меньшим или равным временному идентификатору текущего изображения.
Согласно третьему аспекту раскрытие относится к устройству для декодирования кодированного битового видеопотока. Устройство содержит: блок получения, выполненный с возможностью получения синтаксического элемента уровня изображения, включенного в заголовок изображения текущего изображения, путем синтаксического анализа битового видеопотока, где синтаксический элемент уровня изображения используется для указания того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения. Блок получения дополнительно выполнен с возможностью получения, в случае, когда синтаксический элемент уровня изображения указывает то, что адаптивная контурная фильтрация разрешена для текущего изображения, идентификатора набора параметров, включенного в заголовок изображения, где идентификатор набора параметров используется для указания первого набора параметров, содержащего набор параметров ALF, и где временной идентификатор первого набора параметров меньше или равен временному идентификатору текущего изображения; и блок фильтрации, выполненный с возможностью выполнения адаптивной контурный фильтрации по меньшей мере над одним срезом текущего изображения на основе первого набора параметров.
В возможной форме реализации обеспечивается устройство согласно по существу третьему аспекту, в котором блок фильтрации выполнен с возможностью выполнения адаптивной контурный фильтрации над компонентом яркости по меньшей мере одного среза текущего изображения на основе первого набора параметров.
В возможной форме реализации обеспечивается устройство согласно любой предыдущей реализации третьего аспекта или по существу третьему аспекту, в котором блок получения дополнительно выполнен с возможностью получения, в случае, когда синтаксический элемент уровня изображения указывает, что адаптивная контурная фильтрация разрешена для текущего изображения, другого идентификатора набора параметров включенного в заголовок изображения, где идентификатор набора параметров используется для указания второго набора параметров, содержащего набор параметров ALF, и где временной идентификатор второго набора параметров меньше или равен временному идентификатору текущего изображения; блок фильтрации выполнен с возможностью выполнения адаптивной контурной фильтрации над компонентом цветности по меньшей мере одного среза текущего изображения на основе второго набора параметров.
Согласно четвертому аспекту раскрытие относится к устройству для кодирования кодированного битового видеопотока. Устройство содержит: блок определения, выполненный с возможностью определения того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения; блок кодирования, выполненный с возможностью кодирования синтаксического элемента уровня изображения в заголовке изображения текущего изображения на основе определения того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения, где синтаксический элемент уровня изображения используется для указания того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения; блок кодирования дополнительно выполнен с возможностью кодирования, в случае, когда адаптивная контурная фильтрация разрешена для текущего изображения, идентификатора набора параметров в заголовке изображения, где идентификатор набора параметров используется для указания первого набора параметров, содержащего набор параметров адаптивной контурной фильтрации (ALF), и где временной идентификатор первого набора параметров устанавливается меньшим или равным временному идентификатору текущего изображения.
В возможной форме реализации обеспечивается устройство согласно по существу четвертому аспекту, в котором блок кодирования дополнительно выполнен с возможностью кодирования временного идентификатора первого набора параметров и временного идентификатора текущего изображения в битовом видеопотоке.
В возможной форме реализации обеспечивается устройство согласно любой предыдущей реализации четвертого аспекта или по существу четвертому аспекту, в котором первый набор параметров содержит набор параметров адаптивной контурной фильтрации (ALF), выполняемой над компонентом яркости по меньшей мере одного среза текущего изображения.
В возможной форме реализации обеспечивается устройство согласно любой предыдущей реализации четвертого аспекта или по существу четвертому аспекту, в котором блок кодирования дополнительно выполнен с возможностью кодирования, в случае, когда синтаксический элемент уровня изображения указывает то, что адаптивная контурная фильтрация разрешена для текущего изображения, другого идентификатора набора параметров в заголовке изображения, где идентификатор набора параметров используется для указания второго набора параметров, содержащего набор параметров адаптивной контурной фильтрации (ALF), выполняемой над компонентом цветности по меньшей мере одного среза текущего изображения, и где временной идентификатор второго набора параметров устанавливается меньшим или равным временному идентификатору текущего изображения.
Способ согласно первому аспекту раскрытия может быть выполнен устройством согласно третьему аспекту раскрытия. Дополнительные признаки и формы реализации способа согласно первому аспекту раскрытия соответствуют признакам и формам реализации устройства согласно третьему аспекту раскрытия.
Способ согласно второму аспекту раскрытия может выполняться устройством согласно четвертому аспекту раскрытия. Дополнительные признаки и формы реализации способа согласно второму аспекту раскрытия соответствуют признакам и формам реализации устройства согласно четвертому аспекту раскрытия.
Способ согласно второму аспекту может быть расширен до форм реализации, соответствующих формам реализации способа согласно первому аспекту. Таким образом, форма реализации способа содержит признаки соответствующей формы реализации первого аспекта.
Преимущества способов согласно второму аспекту являются такими же, как и у соответствующих форм осуществления способа согласно первому аспекту.
Согласно пятому аспекту раскрытие относится к устройству для декодирования видеопотока, которое включает в себя процессор и память. В памяти хранятся инструкции, которые предписывают процессору выполнять способ согласно первому аспекту или любой реализации первого аспекта.
Согласно шестому аспекту раскрытие относится к устройству для кодирования видеопотока, которое включает в себя процессор и память. В памяти хранятся инструкции, которые предписывают процессору выполнять способ согласно второму аспекту или любой реализации второго аспекта.
Согласно седьмому аспекту предложен машиночитаемый носитель информации, на котором хранятся инструкции, которые при их исполнении предписывают одному или более процессорам кодировать видеоданные. Инструкции предписывают одному или более процессорам выполнять способ согласно первому или второму аспекту или любой реализации первого или второго аспекта.
Согласно восьмому аспекту раскрытие относится к компьютерной программе, содержащей программный код для выполнения способа согласно первому или второму аспекту или любой реализации первого или второго аспекта при ее исполнении на компьютере.
Согласно девятому аспекту изобретение относится к декодеру, содержащему схему обработки для выполнения способа согласно первому аспекту или любой реализации первого аспекта.
Согласно десятому аспекту раскрытие относится к кодеру, содержащему схему обработки для выполнения способа согласно второму аспекту или любой реализации второго аспекта.
Согласно одиннадцатому аспекту раскрытие относится к энергонезависимому носителю информации, который хранит кодированный битовый поток, декодируемый устройством декодирования изображения, причем битовый поток генерируется путем деления текущего изображения видеосигнала или сигнала изображения на множество блоков и содержит множество синтаксических элементов, где множество синтаксических элементов содержит синтаксический элемент уровня изображения, включенный в заголовок изображения текущего изображения путем синтаксического анализа битового видеопотока, где синтаксический элемент уровня изображения используется для указания того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения; в случае, когда синтаксический элемент уровня изображения указывает то, что адаптивная контурная фильтрация разрешена для текущего изображения, битовый поток дополнительно содержит идентификатор набора параметров, включенный в заголовок изображения, где идентификатор набора параметров используется для указания первого набора параметров, содержащего набор параметров ALF, и где временной идентификатор первого набора параметров устанавливается меньшим или равным временному идентификатору текущего изображения.
Конкретные варианты осуществления описаны в прилагаемых независимых пунктах формулы изобретения, и другие варианты осуществления – в зависимых пунктах формулы изобретения.
Подробности одного или более вариантов осуществления изложены на сопроводительных чертежах и в описании, представленном ниже. Другие признаки, задачи и преимущества будут очевидны из описания, чертежей и формулы изобретения.
Кроме того, представлены следующие варианты осуществления.
В одном варианте осуществления обеспечивается битовый поток для кодирования видео, где DPS присутствует в битовом потоке не более одного раза.
В одном варианте осуществления, в котором DPS не является обязательным в битовом потоке.
В одном варианте осуществления, в котором, когда битовый поток содержит DPS, в битовом потоке присутствует только один DPS.
В одном варианте осуществления, в котором все блоки NAL DPS с конкретным значением dps_decoding_parameter_set_id в битовом потоке должны иметь одинаковое содержание.
В одном варианте осуществления, в котором один идентификатор DPS не может присваивать более одного содержания DPS.
В одном варианте осуществления обеспечивается битовый поток для кодирования видео, в котором уровень, сигнализируемый в DPS, ограничивается таким образом, чтобы быть не меньше, чем уровень, сигнализируемый в SPS.
В одном варианте осуществления обеспечивается способ кодирования, реализуемый устройством декодирования, который содержит синтаксический анализ битового потока согласно любому из предыдущих вариантов осуществления.
В одном варианте осуществления обеспечивается способ кодирования, реализуемый устройством кодирования, который содержит выработку битового потока согласно любому из предыдущих вариантов осуществления.
В одном варианте осуществления обеспечивается кодер (20), содержащий схему обработки для выполнения способа согласно любому из предыдущих вариантов осуществления.
В одном варианте осуществления обеспечивается декодер (30), содержащий схему обработки для выполнения способа согласно любому из предыдущих вариантов осуществления.
В одном варианте осуществления обеспечивается компьютерный программный продукт, содержащий программный код для выполнения способа согласно любому из предыдущих вариантов осуществления при его исполнении в компьютере или процессоре.
В одном варианте осуществления обеспечивается декодер, содержащий:
один или более процессоров; и
Энергонезависимый машиночитаемый носитель информации, подключенный к процессорам и хранящий программу для исполнения процессорами, причем программа, когда она исполняется процессорами, конфигурирует декодер для выполнения способа согласно любому из предыдущих вариантов осуществления.
В одном варианте осуществления обеспечивается кодер, содержащий:
один или более процессоров; и
Энергонезависимый машиночитаемый носитель информации, подключенный к процессорам и хранящий программу для исполнения процессорами, причем программа, когда она исполняется процессорами, конфигурирует кодер для выполнения способа согласно любому из предыдущих вариантов осуществления.
В одном варианте осуществления обеспечивается энергонезависимый машиночитаемый носитель информации, содержащий программный код, который при его исполнении компьютерным устройством предписывает компьютерному устройству выполнять способ согласно любому из предыдущих вариантов осуществления.
В одном варианте осуществления обеспечивается способ декодирования битового видеопотока, реализуемый устройством декодирования, в котором битовый видеопоток включает в себя данные, представляющие кодированное изображение, содержащее столбцы тайлов, причем способ декодирования включает в себя:
получение синтаксических элементов (например, tile_column_width_minus1) путем синтаксического анализа битового видеопотока, причем синтаксический элемент используется для получения значений ширины столбцов тайлов, при этом сумма значений ширины столбцов тайлов меньше или равна ширине кодированного изображения;
предсказание кодированного изображения в соответствии со значениями ширины столбцов тайлов.
В одном варианте осуществления, в котором значение каждого синтаксического элемента плюс 1 равно ширине столбца тайлов из столбцов тайлов.
В одном варианте осуществления, в котором ширина столбцов тайлов с индексом i находится в диапазоне от 0 до num_exp_tile_columns_minus1 – 1.
В одном варианте осуществления ширина столбцов тайлов с индексом i находится в диапазоне от 0 до num_exp_tile_columns_minus1.
В одном варианте осуществления обеспечивается способ декодирования битового видеопотока, реализуемый устройством декодирования, в котором битовый видеопоток включает в себя данные, представляющие кодированное изображение, содержащее столбцы тайлов, причем способ декодирования содержит:
получение синтаксического элемента (например, tile_column_width_minus1) путем синтаксического анализа битового видеопотока, причем синтаксический элемент используется для получения значений ширины столбцов тайлов, при этом значения ширины столбцов тайлов являются одинаковыми, и значения ширины столбцов тайлов меньше или равны ширине кодированного изображения;
предсказание кодированного изображения в соответствии со значениями ширины столбцов тайлов.
В одном варианте осуществления, в котором значение синтаксического элемента плюс 1 равно значению ширины столбцов тайлов.
В одном варианте осуществления, в котором ширина столбцов тайлов с индексом i равна num_exp_tile_columns_minus1.
В одном варианте осуществления обеспечивается способ декодирования битового видеопотока, реализуемый устройством декодирования, в котором битовый видеопоток включает в себя данные, представляющие кодированное изображение, содержащее строки тайлов, причем способ декодирования содержит:
получение синтаксических элементов (например, tile_row_height_minus1) путем синтаксического анализа битового видеопотока, при этом синтаксический элемент используется для получения высот строк тайлов, при этом сумма значений высоты строк тайлов меньше или равна высоте кодированного изображения;
предсказание кодированного изображения в соответствии со значениями высоты строк тайлов.
В одном варианте осуществления, в котором значение каждого синтаксического элемента плюс 1 равно высоте строки тайлов из строк тайлов.
В одном варианте осуществления, в котором значения высоты строк тайлов имеют индекс i в диапазоне от 0 до num_exp_tile_rows_minus1 – 1.
В одном варианте осуществления значения высота строк тайлов с индексом i находятся в диапазоне от 0 до num_exp_tile_rows_minus1.
В одном варианте осуществления обеспечивается способ декодирования битового видеопотока, реализуемый устройством декодирования, в котором битовый видеопоток включает в себя данные, представляющие кодированное изображение, содержащее строки тайлов, причем способ декодирования содержит:
получение синтаксического элемента, например, tile_row_height_minus1) путем синтаксического анализа битового видеопотока, причем синтаксический элемент используется для получения значений высоты строк тайлов, при этом значения высоты строк тайлов являются одинаковыми, и значения высоты строк тайлов меньше или равны высоте кодированного изображения;
предсказание кодированного изображения в соответствии со значениями высоты строк тайлов.
В одном варианте осуществления, в котором значение синтаксического элемента плюс 1 равно значениям высоты строк тайлов.
В одном варианте осуществления, в котором значения высоты строк тайлов имеют индекс i, равный num_exp_tile_rows_minus1.
В одном варианте осуществления обеспечивается кодер (20), содержащий схему обработки для выполнения способа согласно любому из предыдущих вариантов осуществления.
В одном варианте осуществления обеспечивается декодер (30), содержащий схему обработки для выполнения способа согласно любому из предыдущих вариантов осуществления.
В одном варианте осуществления обеспечивается компьютерный программный продукт, содержащий программный код для выполнения способа согласно любому из предыдущих вариантов осуществления при его исполнении в компьютере или процессоре.
В одном варианте осуществления обеспечивается декодер, содержащий:
один или более процессоров; и
Энергонезависимый машиночитаемый носитель информации, подключенный к процессорам и хранящий программу для исполнения процессорами, причем программа, когда она исполняется процессорами, конфигурирует декодер для выполнения способа согласно любому из предыдущих вариантов осуществления.
В одном варианте осуществления обеспечивается кодер, содержащий:
один или более процессоров; и
энергонезависимый машиночитаемый носитель информации, подключенный к процессорам и хранящий программу для исполнения процессорами, причем программа, когда она исполняется процессорами, конфигурирует кодер для выполнения способа согласно любому из предыдущих вариантов осуществления.
В одном варианте осуществления обеспечивается энергонезависимый машиночитаемый носитель информации, содержащий программный код, который при его исполнении компьютерным устройством предписывает компьютерному устройству выполнять способ согласно любому из предыдущих вариантов осуществления.
Краткое описание чертежей
Ниже приведено более подробное описание вариантов осуществления изобретения со ссылкой на сопроводительные фигуры и чертежи, на которых:
фиг.1A – блок-схема, показывающая пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;
фиг.1B – блок-схема, показывающая другой пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;
фиг.2 – блок-схема, показывающая пример видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;
фиг.3 – блок-схема, показывающая примерную структуру видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;
фиг.4 – блок-схема, иллюстрирующая пример устройства кодирования или устройства декодирования;
фиг.5 – блок-схема, иллюстрирующая другой пример устройства кодирования или устройства декодирования;
фиг.8 – блок-схема, показывающая примерную структуру системы 3100 доставки содержания, которая реализует услугу доставки содержания;
фиг.7 – блок-схема, показывающая структуру примера терминального устройства;
фиг.8 – блок-схема последовательности операций способа декодирования согласно одному варианту осуществления;
фиг.9 – блок-схема последовательности операций способа кодирования согласно одному варианту осуществления;
фиг.10 – схематичное представление кодера согласно одному варианту осуществления; и
фиг.11 – схематичное представление декодера согласно одному варианту осуществления.
Приведенные ниже идентичные ссылочные позиции относятся к идентичным или по меньшей мере функционально эквивалентным признакам, если явно не указано иное.
Осуществление изобретения
В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть раскрытия и которые показывают в качестве иллюстрации конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых могут использоваться варианты осуществления настоящего изобретения. Понятно, что варианты осуществления изобретения могут использоваться в других аспектах и содержать структурные или логические изменения, не изображенные на фигурах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется сопроводительной формулой изобретения.
Например, понятно, что раскрытие в связи с описанным способом также справедливо для соответствующего устройства или системы, которые выполнены с возможностью выполнения способа, и наоборот. Например, если описан один этап или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например, функциональных блоков, для выполнения описанного одного или множества этапов способа (например, один блок, выполняющий один или множество этапов или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более базовых блоков явно не описаны или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описано на основе одного или множества блоков, например, функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функции одного или множества блоков, или множество этапов, каждый из которых выполняет функции одного или более из множества блоков), даже если такой один или множество этапов явно не описаны или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.
Кодирование видео, как правило, относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина "изображение" можно использовать термин "кадр" или "картинка" как синонимы в области кодирования видео. Кодирование видео (или кодирование в целом) содержит две части: кодирование видео и декодирование видео. Кодирование видео выполняется на стороне источника, как правило, содержащего обработку (например, путем сжатия) исходных видеоизображений для уменьшения объема данных, необходимого для представления видеоизображений (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне назначения и, как правило, содержит обратную обработку по отношению к кодеру для восстановления видеоизображений. Варианты осуществления, относящиеся к "кодированию" видеоизображений (или изображений в целом), следует понимать как относящиеся к "кодированию" или "декодированию" видеоизображений или соответствующих видеопоследовательностей. Комбинация части кодирования и части декодирования также упоминается как CODEC (кодирование и декодирование).
В случае кодирования видео без потерь исходные видеоизображения могут быть восстановлены, то есть восстановленные видеоизображения имеют то же качество, что и исходные видеоизображения (при условии отсутствия потерь при передаче или других потерь данных во время хранения или передачи). В случае кодирования видео с потерями выполняется дополнительное сжатие, например, путем квантования, чтобы уменьшить объем данных, представляющих видеоизображения, которые не могут быть полностью восстановлены в декодере, то есть качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.
Несколько стандартов кодирования видео принадлежат к группе "гибридных видеокодеков с потерями" (то есть объединяют пространственное и временное предсказание в области выборки и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности, как правило, разделяется на набор неперекрывающихся блоков, и кодирование, как правило, выполняется на уровне блоков. Другими словами, в кодере видео, как правило, обрабатывается, то есть кодируется, на уровне блока (видеоблока), например, с использованием пространственного (изображения с внутрикадровым предсказанием) предсказания и/или временного (изображения с межкадровым предсказанием) предсказания для выработки блока предсказания, вычитания блока предсказания из текущего блока (блока, который обрабатывается на данный момент времени или который должен быть обработан) для получения остаточного блока, преобразовывая остаточного блока и квантования остаточного блока в области преобразования для уменьшения объема данных, подлежащих передаче (сжатию), тогда как в декодере обратная обработка по сравнению с кодером применяется к закодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует контур обработки декодера, так что оба будут вырабатывать идентичные предсказания (например, внутрикадровое предсказание и межкадровое предсказание) и/или восстановления для обработки, то есть кодирования, последующих блоков.
В следующих вариантах осуществления системы 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 изображения также могут называться необработанным изображением или данными 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), плазменные дисплеи, проекторы, микросветодиодные дисплеи, жидкие кристаллы на кремнии (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) и группы экспертов по движущимся изображениям (MPEG) ISO/IEC. Обычный специалист в данной области техники поймет, что варианты осуществления изобретения не ограничиваются 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 яркости (или короткой яркости) представляет яркость или интенсивность уровня серого (например, как в полутоновом изображении), в то время как два компонента цветности (или короткой цветности) Cb и Cr представляют компоненты цветности или информации о цвете. Соответственно, изображение в формате 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) или одну или более групп блоков (например, тайлы (H.265/HEVC и VVC) или блоки (VVC)).
Варианты осуществления видеокодера 20, показанного на фиг.2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования изображения с использованием групп срезов/тайлов (также называемых группами видеотайлов) и/или тайлов (также называемых видеотайлами), в котором изображение может быть разделено на или закодировано с использованием одной или более групп срезов/тайлов (обычно не перекрывающихся), и каждая группа срезов/тайлов может содержать, например, один или более базовых блоков (например, CTU) или один или более тайлов, где каждый тайл, например, может иметь прямоугольную форму и может содержать один или более базовых блоков (например, CTU), например, полные или дробные блоки.
Вычисление остатка
Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также называемого остатком 205) на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания будут предоставлены позже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения, выборки за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборки.
Преобразование
Блок 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например, дискретного косинусного преобразования (DCT) или дискретного синусоидального преобразования (DST), к значениям выборок остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования также могут называться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.
Блок 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, указанные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT, такие целочисленные аппроксимации, как правило, масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, в процессе преобразования применяются дополнительные коэффициенты масштабирования. Коэффициенты масштабирования, как правило, выбираются на основе определенных ограничений, таких как коэффициенты масштабирования, являющиеся степенью два для операций сдвига, разрядность коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.д. Конкретные коэффициенты масштабирования, например, указываются для обратного преобразования, например, с помощью блока 212 обработки обратного преобразования (и соответствующего обратного преобразования, например, с помощью блока 312 обработки обратного преобразования в видеодекодере 30), и, соответственно, могут быть указаны соответствующие коэффициенты масштабирования для прямого преобразования, например, с помощью блока 206 обработки преобразования, в кодере 20.
Варианты осуществления видеокодера 20 (соответственно, блока 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например, типа преобразования или преобразований, например, напрямую или в закодированом или сжатом виде через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.
Квантование
Блок 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.
Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-разрядный коэффициент преобразования может быть округлен до m--разрядного коэффициента преобразования во время квантования, где n больше, чем m. Степень квантования может быть изменена путем регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, быть индексом для заранее определенного набора применимых размеров шага квантования. Например, малые параметры квантования могут соответствовать точному квантованию (малым размерам шагов квантования), и большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, и соответствующее и/или обратное деквантование, например, с помощью блока 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления согласно некоторым стандартам, например, HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. В общем, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, который может быть изменен из-за масштабирования, используемого в приближении с фиксированной точкой уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы могут использоваться таблицы квантования, выполненные с учетом потребностей заказчика, и кодер может передавать их в декодер, например, в битовом потоке. Квантование представляет собой операцию с потерями, в которой потери возрастают с увеличением размера шага квантования.
Варианты осуществления видеокодера 20 (соответственно, блок 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или в закодированном виде через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.
Обратное квантование
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, путем применения обратной схемы квантования, применяемой блоком 208 квантования, на основе или с использованием того же размер шага квантования, что и у блока 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать (хотя, как правило, они не идентичны коэффициентам преобразования из-за потери при квантовании) коэффициентам 207 преобразования.
Обратное преобразование
Блок 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования преобразования, применяемого блоком 206 обработки преобразования, например, обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусоидального преобразования (DST) или других обратных преобразований, чтобы получить восстановленный остаточный блок 213 (или соответствующие деквантованные коэффициенты 213) в области выборки. Восстановленный остаточный блок 213 может также называться блоком 213 преобразования.
Восстановление
Блок 214 восстановления (например, суммирующее устройство или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (то есть восстановленного остаточного блока 213) с блоком 265 предсказания, чтобы получить восстановленный блок 215 в области выборки, например, путем сложения (выборки за выборкой) значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.
Фильтрация
Блок 220 контурной фильтрации (или сокращенно "контурный фильтр" 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных значений выборок. Блок контурного фильтра выполнен, например, с возможностью сглаживания пиксельных переходов или иного повышения качества видео. Блок 220 контурной фильтрации может содержать один или более контурных фильтров, таких как фильтр удаления блочности, фильтр адаптивного к выборке смещения (SAO) или один или более других фильтров, например, адаптивный контурный фильтр (ALF), фильтр подавления шума (NSF) или любое их сочетание. В примере блок 220 контурной фильтрации может содержать фильтр удаления блочности, SAO-фильтр и ALF-фильтр. В процессе фильтрации может поочередно использоваться фильтр удаления блочности, SAO и ALF. В другом примере добавляется процесс, называемый сопоставлением яркости с масштабированием цветности (LMCS) (а именно, адаптивный внутриконтурный восстановитель формы). Этот процесс выполняется перед удалением блочности. В другом примере процесс фильтрации удаления блочности может также применяться к внутренним краям подблоков, например, к аффинным краям подблоков, краям подблоков ATMVP, краям преобразования подблока (SBT) и краям внутрикадрового предсказания подразделов (ISP). Хотя блок 220 контурной фильтрации показан на фиг.2 как контурный фильтр, в других конфигурациях блок 220 контурной фильтрации может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 может также называться фильтрованным восстановленным блоком 221.
Варианты осуществления видеокодера 20 (соответственно, блок 220 контурной фильтрации) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как параметры фильтра SAO или параметры фильтра ALF (параметры ALF) или параметры LMCS), например, непосредственно или закодированные с помощью блока 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять одни и те же параметры контурного фильтра или соответствующие контурные фильтры для декодирования. При этом блок 270 энтропийного кодирования может также кодировать синтаксический элемент уровня изображения в заголовок изображения текущего изображения, причем синтаксический элемент уровня изображения используется для указания того, включен ли адаптивный контурный фильтр (ALF) для текущего изображения.
Буфер декодированного изображения
Буфер 230 декодированных изображений (DPB) может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений для кодирования видеоданных видеокодером 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическое оперативное запоминающее устройство (DRAM), в том числе синхронное DRAM (SDRAM), магниторезистивное RAM (MRAM), резистивное RAM (RRAM) или другие типы запоминающих устройств. Буфер 230 декодированных изображений (DPB) может быть выполнен с возможностью хранения одного или более фильтрованных блоков 221. Буфер 230 декодированных изображений может быть дополнительно выполнен с возможностью хранения других ранее отфильтрованных блоков, например, ранее восстановленных и отфильтрованных блоков 221 одного и того же текущего изображения или различных изображений, например, ранее восстановленных изображений, и может предоставлять полные ранее восстановленные, то есть декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для межкадрового предсказания. Буфер декодированных изображений (DPB) 230 также может быть выполнен с возможностью хранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например, если восстановленный блок 215 не фильтруется блоком 220 контурной фильтрации, или любой другой дополнительно обработанной версии восстановленных блоков или выборок.
Выбор режима (разделение и предсказание)
Блок 260 выбора режима содержит блок 262 разделения, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания и выполнен с возможностью приема или получения исходных данных изображения, например, исходного блока 203 (текущего блока 203 текущего изображения 17), и данных восстановленного изображения, например, отфильтрованных и/или нефильтрованных восстановленных выборок или блоков одного и того же (текущего) изображения и/или из одного или множества ранее декодированных изображений, например, из буфера 230 декодированных изображений или других буферов (например, строкового буфера, не показан). Данные восстановленного изображения используются в качестве данных опорного изображения для предсказания, например, межкадрового предсказания или внутрикадрового предсказания, чтобы получить блок 265 предсказания или предиктор 265.
Блок 260 выбора режима может быть выполнен с возможностью определения или выбора разделения для текущего режима предсказания блока (включая отсутствие разделения) и режима предсказания (например, режима внутрикадровего или межкадрового предсказания) и выработки соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора разделения и режима предсказания (например, из тех, которые поддерживаются или доступны для блока 260 выбора режима), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальное количество служебных данных сигнализации (минимальное количество служебных данных сигнализации означает лучшее сжатие для передачи или хранения), или которое учитывает или уравновешивает и то, и другое. Блок 260 выбора режима может быть выполнен с возможностью определения разделения и режима предсказания на основе оптимизации отношения "скорость-искажение" (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение скорости. Такие термины, как "лучший", "минимальный", "оптимальный" и т.д. в данном контексте необязательно относятся, в общем, к "лучшему", "минимальному", "оптимальному" и т.д., но также могут относиться к выполнению критерия завершения или выбора, такому как значение, которое превышает или находится ниже порогового значения, или к другим ограничениям, потенциально ведущим к "неоптимальному выбору", но уменьшающим сложность и время обработки.
Другими словами, блок 262 разделения может быть выполнен с возможностью разделения изображения из видеопоследовательности на последовательность единиц дерева кодирования (CTU), и CTU 203 может быть дополнительно разделена на более маленькие разделы или подблоки (которые снова образуют блоки), например, итеративно с использованием разделения квадродерева (QT), разделения двоичного дерева (BT) или разделения троичного дерева (TT) или любой их комбинации, и выполнения, например, предсказания для каждого из разделов блоков или подблоков, где выбор режима содержит выбор древовидной структуры разделенного блока 203, и режимы предсказания применяются к каждому из разделов блока или подблоков.
Далее будут объяснены более подробно разделение (например, с помощью блока 260 разделения) и обработка предсказания (с помощью блока 244 межкадрового предсказания и блока 254 внутрикадрового предсказания), выполняемые примерным видеокодером 20.
Разделение
Блок 262 разделения может быть выполнен с возможностью разделения изображения из видеопоследовательности на последовательность единиц дерева кодирования (CTU), и блок 262 разделения может разделить (или разбить) единицу 203 дерева кодирования (CTU) на меньшие разделы, например, меньшие блоки квадратного или прямоугольного размера. Для изображения, которое имеет три массива выборок, CTU состоит из блока N×N выборок яркости вместе с двумя соответствующими блоками выборок цветности. При разработке универсального кодирования видео (VVC) максимально допустимый размер блока яркости в CTU указан равным 128×128, но в будущем он может быть указан как значение, превышающее 128×128, например, 256×256. CTU изображения могут быть кластеризованы/сгруппированы в виде групп срезов/тайлов, тайлов или базовых блоков. Тайл покрывает прямоугольную область изображения, и тайл может быть разделен на один или более базовых блоков. Базовый блок состоит из ряда строк CTU внутри тайла. Тайл, который не разделен на несколько блоков, может называться базовым блоком. Однако базовый блок является истинным поднабором тайлов и не называется тайлом. В VVC поддерживаются два режима групп тайлов, а именно режим растрового сканирования групп срезов/тайлов и режим прямоугольных срезов. В режиме растрового сканирования групп срезов/тайлов группа срезов/тайлов содержит последовательность тайлов в растровом сканировании тайлов изображения. В режиме прямоугольных срезов срез содержит ряд базовых блоков изображения, которые вместе образуют прямоугольную область изображения. Базовые блоки в прямоугольном срезе располагаются в порядке растрового сканирования базовых блоков среза. Эти меньшие блоки (которые также могут называться подблоками) могут быть дополнительно разделены на еще более меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например, на уровне корневого дерева 0 (уровень 0 иерархии, глубина 0), может быть рекурсивно разделен, например, разделен на два или более базовых блоков следующего более низкого уровня дерева, например, на узлы на уровне дерева 1 (уровень 1 иерархии, глубина 1), причем эти блоки могут быть снова разделены на два или более базовых блоков следующего более низкого уровня, например, уровень 2 дерева (уровень 2 иерархии, глубина 2) и т.д. До тех пор, пока разделение не будет завершено, например, так как критерий завершения выполнен, например, достигнута максимальная глубина дерева или минимальный размер блока. Блоки, которые не разделяются далее, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется троичным деревом (TT), и дерево, использующее разделение на четыре раздела, называется квадродеревом (QT).
Например, единица дерева кодирования (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), квадродерево, объединенное с вложенным многотипным деревом и использующее, например, структуру сегментации с двоичным и троичным разбиением, используется для разделения единицы дерева кодирования. В структуре дерева кодирования в единице дерева кодирования CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодирования (CTU) сначала разделяется с использованием четвертичного дерева. Затем листовые узлы четвертичного дерева могут быть дополнительно разделены с использованием многотипной древовидной структуры. Существует четыре типа разбиения в многотипной древовидной структуре: вертикальное двоичное разбиение (SPLIT_BT_VER), горизонтальное двоичное разбиение (SPLIT_BT_HOR), вертикальное троичное разбиение (SPLIT_TT_VER) и горизонтальное троичное разбиение (SPLIT_TT_HOR). Листовые узлы многотипного дерева называются единицами кодирования (CU), и, если CU не слишком велика для максимальной длины преобразования, эта сегментация используется для предсказания и обработки преобразования без какого-либо дальнейшего разделения. Это означает, что в большинстве случаев CU, PU и TU имеют одинаковый размер блока в квадродереве с вложенной многотипной древовидной структурой блока кодирования. Исключениея является случай, когда максимальная поддерживаемая длина преобразования меньше, чем ширина или высота цветового компонента CU. VVC развивает уникальный механизм сигнализации информации о разбиении раздела в квадродереве с вложенной многотипной древовидной структурой блока кодирования. В механизме сигнализации единица дерева кодирования (CTU) рассматривается как корень четвертичного дерева и сначала разделяется с использованием четвертичной древовидной структуры. Каждый листовой узел четвертичного дерева (когда он является достаточно большим, чтобы позволить это) затем дополнительно разделяется с использованием многотипной древовидной структуры. В многотипной древовидной структуре первый флаг (mtt_split_cu_flag) сигнализируется для указания того, разделен ли узел дальше; когда узел разделяется дальше, сигнализируется второй флаг (mtt_split_cu_vertical_flag) для указания направления разбиения, и затем сигнализируется третий флаг (mtt_split_cu_binary_flag) для указания того, является ли разбиение двоичным разбиением или троичным разбиением. Основываясь на значениях mtt_split_cu_vertical_flag и mtt_split_cu_binary_flag, режим разбиения многотипного дерева (MttSplitMode) CU может быть получен с использованием декодера на основе заданного правила или таблицы. Следует отметить, что для определенной схемы, например, для блока яркости размером 64x64 и схемы конвейерной обработки бока цветности размером 32x32 в аппаратных декодерах VVC разделение TT запрещено в том случае, когда ширина или высота блока кодирования яркости больше 64, как показано на фиг.6. Разбиение TT также запрещено, когда ширина или высота блока кодирования цветности больше 32. Схема конвейерной обработки будет делить изображение на единицы данных виртуального конвейера (VPDU), которые определяются как неперекрывающиеся единицы в изображении. В аппаратных декодерах последовательные VPDU обрабатываются одновременно с использованием нескольких этапов конвейерной обработки. Размер VPDU приблизительно пропорционален размеру буфера на большинстве этапов конвейерной обработки, поэтому важно, чтобы размер VPDU был маленьким. В большинстве аппаратных декодеров размер VPDU может быть установлен равным максимальному размеру блока преобразования (TB). Однако в VVC разделение троичного дерева (TT) и двоичного дерева (BT) может привести к увеличению размера VPDU.
В дополнение к этому, следует отметить, что, когда часть блока узла дерева превышает нижнюю или правую границу изображения, блок узла дерева принудительно разбивается до тех пор, пока все выборки каждой кодированной CU не будут расположены внутри границ изображения.
В качестве примера, инструмент внутрикадрового предсказания подразделов (ISP) может разделить блоки яркости с внутрикадровым предсказанием по вертикали или горизонтали на 2 или 4 подраздела в зависимости от размера блока.
В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любой комбинации технологий разделения, описанных в данном документе.
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, заранее определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутрикадрового предсказания и/или режимы межкадрового предсказания.
Внутрикадровое предсказание
Набор режимов внутрикадрового предсказания может содержать 35 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим DC (или среднего значения) и планарный режим, или направленные режимы, например, как определено в HEVC, или может содержать 67 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим DC (или среднего значения) и планарный режим, или направленные режимы, например, как определено для VVC. В качестве примера, несколько традиционных режимов углового внутрикадрового предсказания адаптивно заменяются на режимы широкоугольного внутрикадрового предсказания для неквадратных блоков, например, как определено в VVC. В качестве другого примера, во избежание операций деления для DC-предсказания, только более длинная сторона используется для вычисления среднего значения для неквадратных блоков. Кроме того, результаты внутрикадрового предсказания планарного режима могут быть дополнительно изменены с помощью способа объединения позиционно-зависимого внутрикадрового предсказания (PDPC).
Блок 254 внутрикадрового предсказания выполнен с возможностью использования восстановленных выборок соседних блоков одного и того же текущего изображения для выработки блока 265 внутрикадрового предсказания согласно режиму внутрикадрового предсказания набора режимов внутрикадрового предсказания.
Блок 254 внутрикадрового предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутрикадрового предсказания (или, в общем, информации, указывающей выбранный режим внутрикадрового предсказания для блока) в блок 270 энтропийного кодирования в виде синтаксических элементов 266 для включения в кодированные данные 21 изображения, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.
Межкадровое предсказание
Набор (или возможных) режимов межкадрового предсказания зависит от доступных опорных изображений (то есть предыдущих по меньшей мере частично декодированных изображений, например, сохраненных в DBP 230) и других параметров межкадрового предсказания, например, от того, все ли опорное изображение или только часть его, например, область окна поиска вокруг области текущего блока, опорного изображения используется для поиска наиболее подходящего опорного блока, и/или, например, применяется или нет интерполяция пикселей, например, интерполяция половинных элементов растра/полуэлементов растра и/или 1/16 элементов растра или нет.
Дополнительно к вышеупомянутым режимам предсказания могут применяться режим пропуска прямой режим и/или другой режим межкадрового предсказания.
Например, расширенное предсказание слияния, список кандидатов слияния для такого режима создается путем включения следующих пяти типов кандидатов по порядку: пространственный MVP из соседних пространственных CU, временной MVP из совместно расположенных CU, основанный на истории MVP из таблицы FIFO, попарный средний MVP и нулевые MV. Кроме того, уточнение вектора движения на стороне декодера (DMVR) на основе двустороннего согласования может применяться для повышения точности MV режима слияния. Режим слияния с MVD (MMVD), который получается из режима слияния с различиями векторов движения. Флаг MMVD сигнализируется сразу после отправки флага пропуска и флага слияния, чтобы указать, используется ли режим MMVD для CU. Кроме того, может применяться схема адаптивного разрешения вектора движения (AMVR) на уровне CU. AMVR позволяет кодировать MVD ТС с разной точностью. В зависимости от режима предсказания для текущей CU можно адаптивно выбирать MVD текущей CU. Когда CU кодируется в режиме слияния, режим комбинированного межкадрового/внутрикадрового предсказания (CIIP) может применяться к текущей CU. Взвешенное усреднение сигналов межкадрового и внутрикадрового предсказания выполняется для получения CIIP-предсказания. При предсказании с компенсацией аффинного движения поле аффинного движения блока описывается с помощью информации движении двух векторов движения контрольных точек (4 параметра) или трех векторов движения контрольных точек (6 параметров). Предсказание временного вектора движения на основе подблока (SbTMVP) аналогично предсказанию временного вектора движения (TMVP) в HEVC, но предсказывает векторы движения подблоков в пределах текущей CU. Двунаправленный оптический поток (BDOF), ранее называемый BIO, представляет собой упрощенную версию, требующую гораздо меньше вычислений, особенно с точки зрения количества умножений и размера множителя. Режим треугольного разделения, в таком режиме, CU разбивается равномерно на два треугольных раздела с использованием либо диагонального разбиения, либо антидиагонального разбиения. Кроме того, режим двойного предсказания расширен за пределы простого усреднения, чтобы обеспечить взвешенное усреднение двух сигналов предсказания.
Блок 244 межкадрового предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба не показаны на фиг.2). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 изображения (блока 203 текущего изображения текущего изображения 17) и декодированного изображения 231, или по меньшей мере одного или множества ранее восстановленных блоков, например, восстановленных блоков одного или множества других/различных ранее декодированных изображений 231 для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231, или, другими словами, текущее изображение и ранее декодированные изображения 231 могут представлять собой или могут формировать последовательность изображений, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одного и того же или разных изображений из множества других изображений и предоставления опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещения) между позицией (координаты x, y) опорного блока и позицией текущего блока в качестве параметров межкадрового предсказания для блока оценки движения. Это смещение также называется вектором движения (MV).
Блок компенсации движения выполнен с возможностью получения, например, приема, параметра межкадрового предсказания и выполнения межкадрового предсказания на основе или с использованием параметра межкадрового предсказания для получения блока 265 межкадрового предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя выборку или выработку блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, и, возможно, выполнение интерполяции с точностью до подпикселя. Интерполяционная фильтрация может вырабатывать дополнительные выборки пикселей из известных выборок пикселей, таким образом потенциально увеличивая количество блоков предсказания кандидатов, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок компенсации движения может найти блок предсказания, на который указывает вектор движения, в одном из списков опорных изображений.
Блок компенсации движения может также вырабатывать синтаксические элементы, ассоциированные с блоками, и видеосрезы для использования видеодекодером 30 при декодировании блоков изображения видеосреза. В качестве альтернативы или в дополнение к срезам и соответствующим синтаксическим элементам могут быть выработаны или использованы группы тайлов и/или тайлы и соответствующие синтаксические элементы.
Энтропийное кодирование
Блок 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), контекстно-адаптивной схемы VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с интервалом вероятности (PIPE) или другой методология или технологии энтропийного кодирования) или обхода (без сжатия) квантованных коэффициентов 209, параметров межкадрового предсказания, параметров внутрикадрового предсказания, параметров контурного фильтра (таких как набор параметров ALF) и/или других синтаксических элементов для получения данных 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, буфер декодированных изображений (DBP) 330, блок 360 применения режима, блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания. Блок 344 межкадрового предсказания может представлять собой или включать в себя блок компенсации движения. В некоторых примерах видеодекодер 30 может выполнять этап декодирования, в целом обратный этапу кодирования, описанному применительно к видеокодеру 100, показанному на фиг.2.
Как объяснялось в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурного фильтра 220, буфер декодированных изображений (DPB) 230, блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания также упоминаются как формирующие "встроенный декодер" видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по своим по функциям блоку 210 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по своим по функциям блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по своим по функциям блоку 214 восстановления, контурный фильтр 320 может быть идентичен по своим по функциям контурному фильтру 220, и буфер 330 декодированных изображений может быть идентичен по своим по функциям буферу 230 декодированных изображений. Таким образом, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применяются, соответственно, к соответствующим блокам и функциям видеодекодера 30.
Энтропийное декодирование
Блок 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем, данных 21 кодированного изображения) и выполнения, например, энтропийного декодирования кодированных данных 21 изображения для получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показаны на фиг.3), например, любых или всех параметров межкадрового предсказания (например, индекса опорного изображения и вектора движения), параметра внутрикадрового предсказания (например, режима или индекса внутрикадрового предсказания), параметров преобразования, параметров квантования, параметров контурного фильтра и/или других синтаксических элементов. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, которые описаны в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров межкадрового предсказания, параметра внутрикадрового предсказания и/или других синтаксических элементов для блока 360 применения режима и других параметров для других блоков декодера 30. Видеодекодер 30 может принимать синтаксические элементы на уровне видеосреза и/или уровне видеоблока. В качестве альтернативы или в дополнение к срезам и соответствующим синтаксическим элементам, могут приниматься и/или использоваться группы тайлов и/или тайлы и соответствующие синтаксические элементы.
Обратное квантование
Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, с помощью блока 304 энтропийного декодирования) и применения на основе параметров квантования обратного квантования к декодированным квантованным коэффициентам 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами преобразования 311. Процесс обратного квантования может включать в себя использование параметра квантования, определенного с помощью видеокодера 20 для каждого видеоблока в видеосрезе (или тайле или группе тайлов) для того, чтобы определить степень квантования и, аналогично, степень обратного квантования, которое будет применяться.
Обратное преобразование
Блок 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также называемых коэффициентами 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для получения восстановленных остаточных блоков 213 в области выборки. Восстановленные остаточные блоки 213 также могут называться блоками 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из данных 21 кодированного изображения (например, путем синтаксического анализа и/или декодирования, например, с помощью блока 304 энтропийного декодирования), чтобы определять преобразование, которое должно применяться к деквантованным коэффициентам 311.
Восстановление
Блок 314 восстановления (например, суммирующее устройство или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания для получения восстановленного блока 315 в области выборки, например, путем сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.
Фильтрация
Блок 320 контурной фильтрации (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания пиксельных переходов или иного повышения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр удаления блочности, фильтр адаптивного к выборке смещения (SAO) или один или более других фильтров, например, адаптивный контурный фильтр (ALF), фильтр подавления шума (NSF) или любое их сочетание. В примере блок 220 контурной фильтрации может содержать фильтр удаления блочности, SAO-фильтр и ALF-фильтр. Порядок процесса фильтрации может быть следующим: фильтрация удаления блочности, SAO и ALF. В другом примере добавляется процесс, называемый сопоставлением яркости с масштабированием цветности (LMCS) (а именно, адаптивный внутриконтурный восстановитель формы). Этот процесс выполняется перед удалением блочности. В другом примере процесс фильтрации удаления блочности может также применяться к внутренним краям подблоков, например, к аффинным краям подблоков, краям подблоков ATMVP, краям преобразования подблока (SBT) и краям внутрикадрового предсказания подразделов (ISP). Хотя блок 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), или одну или более групп блоков (например, тайлы (H.265/HEVC и VVC), или базовые блоки (VVC)).
Варианты осуществления видеодекодера 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.
На фиг.4 показано схематичное представление устройства 400 кодирования видео согласно варианту осуществления раскрытия. Устройство 400 кодирования видео подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 кодирования видео может быть декодером, таким как видеодекодер 30 (фиг.1A) или кодер, такой как видеокодер 20 (фиг.1А).
Устройство 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 может быть реализовано в широком разнообразии конфигураций.
Набор параметров декодера (DPS)
Предлагается, чтобы синтаксическая структура содержала максимальное количество подслоев (как в HEVC) и синтаксическую структуру profile_level(), которая указывает профиль и уровень декодера, который способен декодировать битовый поток и включает в себя ограничения, которые применяются к битовому потоку.
Пример синтаксической таблицы DPS показан ниже:
Полезная нагрузка последовательности исходных байтов (RBSP) DPS должна быть доступна для процесса декодирования до обращения к ней, включена по меньшей мере в одну AU с временным идентификатором (TemporalId), равным 0, или предоставлена через внешнее средство.
Примечание 1. Единицы NAL DPS должны быть доступны (либо в битовом потоке, либо с помощью внешнего средства) для процесса декодирования до обращения к ним. Однако RBSP DPS содержит информацию, которая не является необходимой для выполнения процесса декодирования, указанного в пунктах 2–9 данной спецификации.
dps_decoding_parameter_set_id идентифицирует DPS для ссылки на другие синтаксические элементы. Значение dps_decoding_parameter_set_id должно быть больше 0.
dps_max_sublayers_minus1 плюс 1 задает максимальное количество временных подслоев, которые могут присутствовать в слое в каждой CVS, относящейся к DPS. Значение dps_max_sublayers_minus1 должно находиться в диапазоне от 0 до 6 включительно.
Значение dps_reserved_zero_5bits должно быть равным 0 в битовых потоках, соответствующих этой версии данной спецификации. Другие значения для dps_reserved_zero_5bits зарезервированы для будущего использования ITU-T | ISO/IEC.
dps_num_ptls_minus1 плюс 1 задает количество синтаксических структур profile_tier_level( ) в DPS.
Когда в DPS имеется более одной синтаксической структуры profile_tier_level( ), требование соответствия битового потока состоит в том, чтобы каждая CVS в битовом потоке соответствовала по меньшей мере одной из синтаксических структур profile_tier_level( ).
Значение dps_extension_flag, равное 0, указывает то, что синтаксические элементы dps_extension_data_flag отсутствуют в синтаксической структуре RBSP DPS. Значение dps_extension_flag, равное 1, указывает то, что в синтаксической структуре RBSP DPS присутствуют синтаксические элементы dps_extension_data_flag.
Флаг dps_extension_data_flag может иметь любое значение. Его наличие и значение не влияют на соответствие декодера профилям, указанным в приложении A. Декодеры, соответствующие этой версии данной спецификации, должны игнорировать все синтаксические элементы dps_extension_data_flag.
Синтаксис RBSP набора параметров последовательности
Значение 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 ] ].
Если значение vps_independent_layer_flag[ GeneralLayerIdx[ nuh_layer_id ] ] равно 1, переменная MaxDecPicBuffMinus1 устанавливается равной max_dec_pic_buffering_minus1[ sps_max_sublayers_minus1 ] в синтаксической структуре dpb_parameters( ) в SPS. В противном случае значение MaxDecPicBuffMinus1 устанавливается равным max_dec_pic_buffering_minus1[ sps_max_sublayers_minus1 ] в layer_nonoutput_dpb_params_idx[ GeneralLayerIdx[ nuh_layer_id ] ]-ой синтаксической структуре dpb_parameters( ) в VPS.
Общий профиль, ранг и синтаксис уровня
Общий профиль, ранг и семантика уровня
Синтаксическая структура profile_tier_level( ) предоставляет информацию об уровне и при необходимости информацию о профиле, ранге, подпрофиле и общих ограничениях.
Когда синтаксическая структура profile_tier_level( ) включена в DPS, OlsInScope представляет собой OLS, который включает в себя все слои во всем битовом потоке, который обращается к DPS. Когда синтаксическая структура profile_tier_level( ) включена в VPS, OlsInScope представляет собой один или более OLS, указанных VPS. Когда синтаксическая структура profile_tier_level( ) включена в SPS, OlsInScope представляет собой OLS, которая включает в себя только слой. который является нижним слоем среди слоев, обращающихся к SPS, и этот нижний слой является независимым слоем.
general_profile_idc указывает профиль, которому соответствует OlsInScope, как указано в приложении A. Битовые потоки не должны содержать значений general_profile_idc, отличных от указанных в приложении A. Другие значения general_profile_idc зарезервированы для будущего использования ITU-T | ISO/IEC.
general_tier_flag указывает контекст ранга для интерпретации general_level_idc, как указано в приложении A.
general_level_idc указывает уровень, которому соответствует OlsInScope, как указано в приложении A. Битовые потоки не должны содержать значения general_level_idc, отличные от указанных в приложении A. Другие значения general_level_idc зарезервированы для будущего использования ITU-T | ISO/IEC.
Примечание 1. Большее значение general_level_idc указывает более высокий уровень. Максимальный уровень, указанный в DPS для OlsInScope, может быть выше, чем уровень, указанный в SPS для CVS, содержащейся в OlsInScope.
Примечание 2. Когда OlsInScope соответствует нескольким профилям, значение general_profile_idc должно указывать профиль, который обеспечивает предпочтительный результат декодирования или предпочтительную идентификацию битового потока, как определено кодером (способом, не указанным в данной спецификации).
Примечание 3. Когда синтаксическая структура profile_tier_level( ) включена в DPS, и CVS OlsInScope соответствуют разным профилям, general_profile_idc и level_idc должны указывать профиль и уровень для декодера, способного декодировать OlsInScope.
num_sub_profiles указывает количество синтаксических элементов general_sub_profile_idc[ i ].
general_sub_profile_idc[ i ] указывает i-е метаданные интероперабельности, зарегистрированные в соответствии с рекомендацией ITU-T T.35, содержание которой не указано в данной спецификации.
Значение sublayer_level_present_flag[ i ], равное 1, указывает то, что информация об уровне присутствует в синтаксической структуре profile_tier_level( ) для представления подслоя с TemporalId, равным i. Значение sublayer_level_present_flag[ i ], равное 0, указывает то, что информация об уровне отсутствует в синтаксической структуре profile_tier_level( ) для представления подслоя с TemporalId, равным i.
Значение ptl_alignment_zero_bits должно быть равно 0.
Семантика синтаксического элемента sublayer_level_idc[ i ] является, за исключением спецификации вывода отсутствующих значений, такой же, как синтаксический элемент general_level_idc, но применяется к представлению подслоя с TemporalId, равным i.
Если значение sublayer_level_idc[ i ] отсутствует, оно выводится следующим образом:
– предполагается, что значение sublayer_level_idc[ maxNumSubLayersMinus1 ] равно general_level_idc той же самой структуры profile_tier_level( ),
– Для i от maxNumSubLayersMinus1 − 1 до 0 (в порядке убывания значений i) включительно sublayer_level_idc[ i ] предполагается равным sublayer_level_idc[i + 1].
Синтаксис RBSP заголовка изображения
Значение pic_alf_enabled_present_flag, равное 1, указывает то, что pic_alf_enabled_flag, pic_num_alf_aps_ids_luma, pic_alf_aps_id_luma[ i ], pic_alf_chroma_idc и pic_alf_aps_id_chroma присутствуют в РН. Значение pic_alf_enabled_present_flag, равное 0, указывает то, что pic_alf_enabled_flag, pic_num_alf_aps_ids_luma, pic_alf_aps_id_luma[ i ], pic_alf_chroma_idc и pic_alf_aps_id_chroma отсутствуют в РН. Когда значение pic_alf_enabled_present_flag отсутствует, предполагается, что оно равно 0.
Значение pic_alf_enabled_flag, равное 1, указывает то, что адаптивная контурная фильтрация разрешена для всех срезов, связанных с РН, и может применяться к цветовому компоненту Y, Cb или Cr в срезах. Значение pic_alf_enabled_flag, равное 0, указывает то, что адаптивный контурный фильтр может быть запрещен для одного, нескольких или всех слоев, связанных с РН. Если флаг pic_alf_enabled_flag отсутствует, предполагается, что он равен 0.
pic_num_alf_aps_ids_luma указывает количество APS ALF, к которым относятся срезы, связанные с PH.
pic_alf_aps_id_luma[ i ] указывает id_adaptation_parameter_set_id i-го APS ALF, на который ссылается компонент яркости срезов, ассоциированных с PH.
Значение alf_luma_filter_signal_flag единицы NAL APS, имеющего значение aps_params_type, равное ALF_APS, и значение adaptation_parameter_set_id, равное pic_alf_aps_id_luma[ i ], должны быть равны 1.
Значение pic_alf_chroma_idc, равное 0, указывает то, что адаптивный контурный фильтр не применяется к цветовым компонентам Cb и Cr. Значение pic_alf_chroma_idc, равное 1, указывает то, что адаптивный контурный фильтр применяется к цветовому компоненту Cb. Значение pic_alf_chroma_idc, равное 2, указывает то, что адаптивный контурный фильтр применяется к цветовому компоненту Cr. Значение pic_alf_chroma_idc, равное 3, указывает то, что адаптивный контурный фильтр применяется к цветовым компонентам Cb и Cr. Когда значение pic_alf_chroma_idc отсутствует, предполагается, что оно равно 0.
pic_alf_aps_id_chroma задает adaptation_parameter_set_id APS ALF, на который ссылается компонент цветности срезов, ассоциированных с РН.
Значение alf_chroma_filter_signal_flag единицы NAL APS, имеющей значение aps_params_type, равное ALF_APS, и значение adaptation_parameter_set_id, равное pic_alf_aps_id_chroma, должны быть равны 1.
PPS
Значение pps_subpic_id_signalling_present_flag, равное 1, указывает то, что сопоставление ID подизображений сигнализируется в PPS. Значение pps_subpic_id_signalling_present_flag, равное 0, указывает то, что в PPS не сигнализируется сопоставление ID подизображений. Когда значение sps_subpic_id_present_flag равно 0 или значение sps_subpic_id_signalling_present_flag равно 1, значение pps_subpic_id_signalling_present_flag должно быть равно 0.
pps_num_subpics_minus1 плюс 1 задает количество подкадров в кодированных изображениях, относящихся к PPS.
Требование соответствия битового потока состоит в том, что значение pps_num_subpic_minus1 должно быть равно sps_num_subpics_minus1.
pps_subpic_id_len_minus1 плюс 1 указывает количество битов, используемых для представления синтаксического элемента pps_subpic_id[ i ]. Значение pps_subpic_id_len_minus1 должно находиться в диапазоне от 0 до 15 включительно.
Требование соответствия битового потока состоит в том, что значение pps_subpic_id_len_minus1 должно быть одинаковым для всех PPS, на которые ссылаются кодированные изображения в CLVS.
pps_subpic_id[ i ] указывает ID подизображения i-го подизображения. Длина синтаксического элемента pps_subpic_id[ i ] равна pps_subpic_id_len_minus1 + 1 битам.
Значение 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[ 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[0] равно PicHeightInCtbsY – 1.
Значение rect_slice_flag, равное 0, указывает то, что срезы в каждом срезе находятся в порядке растрового сканирования, и информация о срезе не передается в PPS. Значение rect_slice_flag, равное 1, указывает то, что срезы в каждом срезе покрывают прямоугольную область изображения, и информация о срезе передается в PPS. Если значение rect_slice_flag отсутствует, предполагается, что оно равно 1. Когда значение subpics_present_flag равно 1, значение rect_slice_flag должно быть равно 1.
Значение single_slice_per_subpic_flag, равное 1, указывает то, что каждое подизображение состоит из одного и только одного прямоугольного среза. Значение single_slice_per_subpic_flag, равное 0, указывает то, что каждое подизображение может состоять из одного или более прямоугольных срезов. Когда значение subpics_present_flag равно 0, значение single_slice_per_subpic_flag должно быть равно 0. Когда значение single_slice_per_subpic_flag равно 1, предполагается, что значение num_slices_in_pic_minus1 равно sps_num_subpics_minus1.
num_slices_in_pic_minus1 плюс 1 задает количество прямоугольных срезов в каждом изображении, относящихся к PPS. Значение num_slices_in_pic_minus1 должно находиться в диапазоне от 0 до MaxSlicesPerPicture − 1 включительно, где MaxSlicesPerPicture указано в приложении A. Когда значение no_pic_partition_flag равно 1, предполагается, что значение num_slices_in_pic_minus1 равно 0.
Значение tile_idx_delta_present_flag, равное 0, указывает то, что значения tile_idx_delta отсутствуют в PPS, и что все прямоугольные срезы в изображениях, относящиеся к PPS, указываются в порядке растра в соответствии с процессом, определенным в пункте 6.5.1. Значение tile_idx_delta_present_flag, равное 1, указывает то, что значения tile_idx_delta могут присутствовать в PPS, и что все прямоугольные срезы в изображениях, относящиеся к PPS, указаны в порядке, указанном значениями tile_idx_delta.
slice_width_in_tiles_minus1 [ я ] плюс 1 указывает ширину i-го прямоугольного среза в единицах столбцов тайлов. Значение slice_width_in_tiles_minus1[ i ] должно находиться в диапазоне от 0 до NumTileColumns − 1 включительно. Если оно отсутствует, значение slice_width_in_tiles_minus1[ i ] выводится таким образом, как указано в пункте 6.5.1.
slice_height_in_tiles_minus1[ i ] плюс 1 указывает высоту i-го прямоугольного среза в единицах строк тайлов. Значение slice_height_in_tiles_minus1[ i ] должно находиться в диапазоне от 0 до NumTileRows – 1 включительно. Если оно отсутствует, значение slice_height_in_tiles_minus1[ i ] выводится таким образом, как указано в пункте 6.5.1.
num_slices_in_tile_minus1[ i ] плюс 1 задает количество слоев в текущем срезе для случая, когда i-й срез содержит поднабор строк CTU из одного среза. Значение num_slices_in_tile_minus1[ i ] должно находиться в диапазоне от 0 до RowHeight[ tileY ] − 1 включительно, где tileY – индекс строки тайлов, содержащий i-й срез. Если оно не указано, значение num_slices_in_tile_minus1[ i ] считается равным 0.
slice_height_in_ctu_minus1[ i ] плюс 1 задает высоту i-го прямоугольного среза в единицах строк CTU для случая, когда i-й срез содержит поднабор строк CTU из одного тайла. Значение slice_height_in_ctu_minus1[ i ] должно находиться в диапазоне от 0 до RowHeight[ tileY ] − 1 включительно, где tileY – индекс строки тайлов, содержащий i-й срез.
tile_idx_delta[ i ] задает различие в индексе тайла между i-м прямоугольным срезом и (i + 1 )-м прямоугольным срезом. Значение tile_idx_delta[ i ] должно находиться в диапазоне от –NumTilesInPic + 1 до NumTilesInPic − 1 включительно. Если оно отсутствует, предполагается, что значение tile_idx_delta[ i ] равно 0. Во всех остальных случаях значение tile_idx_delta[ i ] не должно быть равно 0.
6.5.1 Процессы растрового сканирования CTB, сканирования тайлов и сканирования подизображений
Переменная NumTileColumns, задающая количество столбцов тайла, и список colWidth[ i ] для i в диапазоне от 0 до NumTileColumn − 1 включительно, задающий ширину i-го столбца тайлов в единицах CTB, получают следующим образом:
remainingWidthInCtbsY = PicWidthInCtbsY
for( i = 0; i < num_exp_tile_columns_minus1; i++ ) {
colWidth[ i ] = tile_column_width_minus1[ i ] + 1
remainingWidthInCtbsY −= colWidth[ i ]
}
uniformTileColWidth = tile_column_width_minus1[ num_exp_tile_columns_minus1 ] + 1 (23)
while( remainingWidthInCtbsY >= uniformTileColWidth ) {
colWidth[ i++ ] = uniformTileColWidth
remainingWidthInCtbsY −= uniformTileColWidth
}
if( remainingWidthInCtbsY > 0 )
colWidth[ i++ ] = remainingWidthInCtbsY
NumTileColumns = i
Переменная NumTileRows, задающая количество строк тайлов, и список RowHeight[ j ] для j в диапазоне от 0 до NumTileRows – 1 включительно, задающий высоту j-ой строки тайлов в единицах CTB, получают следующим образом:
remainingHeightInCtbsY = PicHeightInCtbsY
for( j = 0; j < num_exp_tile_rows_minus1; j++ ) {
RowHeight[ j ] = tile_row_height_minus1[ j ] + 1
remainingHeightInCtbsY −= RowHeight[ j ]
}
uniformTileRowHeight = tile_row_height_minus1[ num_exp_tile_rows_minus1 ] + 1 (24)
while( remainingHeightInCtbsY >= uniformTileRowHeight ) {
RowHeight[ j++ ] = uniformTileRowHeight
remainingHeightInCtbsY −= uniformTileRowHeight
}
if( remainingHeightInCtbsY > 0 )
RowHeight[ j++ ] = remainingHeightInCtbsY
NumTileRows = j
Переменная NumTilesInPic устанавливается равной NumTileColumns * NumTileRows.
Список tileColBd[ i ] для i в диапазоне от 0 до NumTileColumns включительно, указывающий местоположение границы i-го столбца тайлов в единицах CTB, получают следующим образом:
for( tileColBd[ 0 ] = 0, i = 0; i < NumTileColumns; i++ )
tileColBd[ i + 1 ] = tileColBd[ i ] + colWidth[ i ] (25)
Список tileRowBd[ j ] для j в диапазоне от 0 до NumTileRows включительно, указывающий местоположение границы j-й строки тайлов в единицах CTB, получают следующим образом:
for( tileRowBd[ 0 ] = 0, j = 0; j < NumTileRows; j++ )
tileRowBd[ j + 1 ] = tileRowBd[ j ] + RowHeight[ j ] (26)
Список CtbToTileColBd[ ctbAddrX ] для ctbAddrX в диапазоне от 0 до PicWidthInCtbsY включительно, задающий преобразование из горизонтального адреса CTB в левую границу столбца тайлов в единицах CTB, получают следующим образом:
tileX = 0
for( ctbAddrX = 0; ctbAddrX <= PicWidthInCtbsY; ctbAddrX++ ) {
if( ctbAddrX = = tileColBd[ tileX + 1 ] ) (27)
tileX++
CtbToTileColBd[ ctbAddrX ] = tileColBd[ tileX ]
}
Список CtbToTileRowBd[ctbAddrY] для ctbAddrY в диапазоне от 0 до PicHeightInCtbsY включительно, указывающий преобразование вертикального адреса CTB в верхнюю границу столбца тайлов в единицах CTB, получают следующим образом:
tileY = 0
for( ctbAddrY = 0; ctbAddrY <= PicHeightInCtbsY; ctbAddrY++ ) {
if( ctbAddrY = = tileRowBd[ tileY + 1 ] ) (28)
tileY++
CtbToTileRowBd[ ctbAddrY ] = tileRowBd[ tileY ]
}
Для прямоугольных срезов список NumCtuInSlice[ i ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно, задающий количество CTU в i-м срезе, и матрица CtbAddrInSlice[ i ][ j ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно и j в диапазоне от 0 до NumCtuInSlice[ i ] − 1 включительно, задающая адрес растрового сканирования изображения j-го CTB в i-м срезе, получают следующим образом:
if( subpics_present_flag && single_slice_per_subpic_flag ) {
for( i = 0; i <= sps_num_subpics_minus1; i++ )
NumCtuInSlice[ i ] = 0
for( i = 0; i < PicSizeInCtbsY; i ++ ) {
sliceIdx = CtbToSubPicIdx[ i ]
CtbAddrInSlice[ sliceIdx ][ NumCtuInSlice[ sliceIdx ] ] = i
NumCtuInSlice[ sliceIdx ]++
}
} else {
tileIdx = 0
for( i = 0; i <= num_slices_in_pic_minus1; i++ )
NumCtuInSlice[ i ] = 0
for( i = 0; i <= num_slices_in_pic_minus1; i++ ) {
tileX = tileIdx % NumTileColumns
tileY = tileIdx / NumTileColumns
if( i = = num_slices_in_pic_minus1 ) {
slice_width_in_tiles_minus1[ i ] = NumTileColumns − 1 − tileX
slice_height_in_tiles_minus1[ i ] = NumTileRows − 1 − tileY
num_slices_in_tile_minus1[ i ] = 0
}
if( slice_width_in_tiles_minus1[ i ] = = 0 && slice_height_in_tiles_minus1[ i ] = = 0 ) { (29)
ctbY = tileRowBd[ tileY ]
for( j = 0; j < num_slices_in_tile_minus1[ i ]; j++ ) {
AddCtbsToSlice( i, tileColBd[ tileX ], tileColBd[ tileX + 1 ],
ctbY, ctbY + slice_height_in_ctu_minus1[ i ] + 1 )
ctbY += slice_height_in_ctu_minus1[ i ] + 1
i++
}
AddCtbsToSlice( i, tileColBd[ tileX ], tileColBd[ tileX + 1 ], ctbY, tileRowBd[ tileY + 1 ] )
} else
for( j = 0; j <= slice_height_in_tiles_minus1[ i ]; j++ )
for( k = 0; k <= slice_width_in_tiles_minus1[ i ]; k++ )
AddCtbsToSlice( i, tileColBd[ tileX + k ], tileColBd[ tileX + k + 1 ],
tileRowBd[ tileY + j ], tileRowBd[ tileY + j + 1 ] )
if( tile_idx_delta_present_flag )
tileIdx += tile_idx_delta[ i ]
else {
tileIdx += slice_width_in_tiles_minus1[ i ] + 1
if( tileIdx % NumTileColumns = = 0 )
tileIdx += slice_height_in_tiles_minus1[ i ] * NumTileColumns
}
}
}
Где функция AddCtbsToSlice(sliceIdx, startX, stopX, startY, stopY) указана следующим образом:
for( ctbY = startY; ctbY < stopY; ctbY++ )
for( ctbX = startX; ctbX < stopX; ctbX++ ) {
CtbAddrInSlice[ sliceIdx ][ NumCtuInSlice[ sliceIdx ] ] = ctbY * PicWidthInCtbsY + ctbX (30)
NumCtuInSlice[ sliceIdx ]++
}
Требование соответствия битового потока состоит в том, что значения NumCtuInSlice[ i ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно должны быть больше 0. Кроме того, требование соответствия битового потока состоит в том, что матрица CtbAddrInSlice[ i ] [ j ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно и j в диапазоне от 0 до NumCtuInSlice[ i ] − 1 включительно должна включать все адреса CTB в диапазоне от 0 до PicSizeInCtbsY − 1 один раз и только один раз.
Список CtbToSubPicIdx[ ctbAddrRs ] для ctbAddrRs в диапазоне от 0 до PicSizeInCtbsY – 1 включительно, указывающий преобразование из адреса CTB при растровом сканировании изображения в индекс подизображения, получают следующим образом:
for( ctbAddrRs = 0; ctbAddrRs < PicSizeInCtbsY; ctbAddrRs++ ) {
posX = ctbAddrRs % PicWidthInCtbsY
posY = ctbAddrRs / PicWidthInCtbsY
CtbToSubPicIdx[ ctbAddrRs ] = −1
for( i = 0; CtbToSubPicIdx[ ctbAddrRs ] < 0 && i <= sps_num_subpics_minus1; i++ ) { (31)
if( ( posX >= subpic_ctu_top_left_x[ i ] ) &&
( posX < subpic_ctu_top_left_x[ i ] + subpic_width_minus1[ i ] + 1 ) &&
( posY >= subpic_ctu_top_left_y[ i ] ) &&
( posY < subpic_ctu_top_left_y[ i ] + subpic_height_minus1[ i ] + 1 ) )
CtbToSubPicIdx[ ctbAddrRs ] = i
}
}
Список NumSlicesInSubpic[ i ] и SliceSubpicToPicIdx[ i ][k], указывающий количество прямоугольных срезов в i-м подкадре, и индекс среза уровня изображения k-го среза в i-м срезе изображения получают следующим образом:
for( j = 0; j <= sps_num_subpics_minus1; j++ )
NumSlicesInSubpic[ j ] = 0
for( i = 0; i <= num_slices_in_pic_minus1; i++ ) {
posX = CtbAddrInSlice[ i ][ 0 ] % PicWidthInCtbsY
posY = CtbAddrInSlice[ i ][ 0 ] / PicWidthInCtbsY
for( j = 0; j <= sps_num_subpics_minus1; j++ ) {
if( ( posX >= subpic_ctu_top_left_x[ j ] ) && (32)
( posX < subpic_ctu_top_left_x[ j ] + subpic_width_minus1[ j ] + 1 ) &&
( posY >= subpic_ctu_top_left_y[ j ] ) &&
( posY < subpic_ctu_top_left_y[ j ] + subpic_height_minus1[ j ] + 1 ) ) {
SliceSubpicToPicIdx[ j ][ NumSlicesInSubpic[ j ] ] = i
NumSlicesInSubpic[ j ]++
}
}
}
В настоящее время DPS имеет ID DPS, и нет ограничений на соответствующую взаимосвязь содержания единиц NAL DPS и значения ID.
Кроме того, нет ограничения на время, в течение которого DPS может быть в битовом потоке. Если в битовом потоке много DPS, и у них одинаковый DPS ID, декодер не знает, какой DPS выбрать.
Уровень, сигнализируемый в DPS, должен иметь возможность наихудшего случая для всего битового потока, поэтому уровень, сигнализируемый в DPS, не должен быть меньше уровня, сигнализируемого в SPS.
В настоящее время нет ограничений на TemporalId единицы NAL APS и TemporalId изображения, ассоциированного с заголовком изображения (PH). Однако, когда значение nal_unit_type равно PPS_NUT, PREFIX_APS_NUT или SUFFIX_APS_NUT, значение TemporalId должно быть больше или равно TemporalId PU, содержащей единицу NAL, и в сценарии вычитания битового потока должно быть ограничение на TemporalId единицы NAL APS и TemporalId изображения, ассоциированного с PH.
Относительные переменные тайлов tile_column_width_minus1[ i ], tile_row_height_minus1[ i ], tile_idx_delta[ i ] должны иметь некоторые ограничения, применяемые к ним, чтобы гарантировать надлежащие значения этих переменных, так как эти переменные любого тайла не могут выходить за пределы диапазона изображения. Кроме того, столбец тайлов и высота тайла должны быть больше 0.
Варианты осуществления:
Вариант A: добавление ограничения, согласно которому DPS может существовать в битовом потоке не более одного раза. Это означает, что DPS не является обязательным в битовом потоке, и если битовый поток содержит DPS, в битовом потоке может быть только один DPS.
RBSP DPS должна быть доступна для процесса декодирования до того, как на нее будет сделана ссылка, она должна быть включена по меньшей мере в одну AU со значением TemporalId, равным 0 или предоставлена через внешнее средство.
Примечание 1. В битовом потоке существует не более одной единицы NAL DPS.
Примечание 2. Единица NAL DPS должен быть доступна (либо в битовом потоке, либо с помощью внешнего средства) для процесса декодирования до того, как на нее будет сделана ссылка. Однако RBSP DPS содержит информацию, которая не является необходимой для выполнения процесса декодирования, указанного в пунктах 2–9 данной спецификации.
Вариант B: добавление ограничения, согласно которому все единицы NAL DPS с конкретным значением dps_decoding_parameter_set_id в битовом потоке должны иметь одинаковое содержание. В этом случае один DPS ID не может присваивать (соответствовать) более чем одному содержанию DPS.
Например:
RBSP DPS должна быть доступна для процесса декодирования до того, как на нее будет сделана ссылка, она должна быть включена по меньшей мере в одну AU со значением TemporalId, равным 0 или предоставлена через внешнее средство.
Примечание 1. Единицы NAL DPS должны быть доступны (либо в битовом потоке, либо с помощью внешнего средства) для процесса декодирования до обращения к ним. Однако RBSP DPS содержит информацию, которая не является необходимой для выполнения процесса декодирования, указанного в пунктах 2–9 данной спецификации.
Все единицы NAL DPS с конкретным значением dps_decoding_parameter_set_id в битовом потоке должны иметь одинаковое содержание.
Добавление ограничения, согласно которому уровень, сигнализируемый в DPS, должен быть не меньше уровня, сигнализируемого в SPS.
general_level_idc указывает уровень, которому соответствует OlsInScope, как указано в приложении A. Битовые потоки не должны содержать значения general_level_idc, отличные от указанных в приложении A. Другие значения general_level_idc зарезервированы для будущего использования ITU-T | ISO/IEC.
Примечание 1. Большее значение general_level_idc указывает на более высокий уровень. Максимальный уровень, указанный в DPS для OlsInScope, не должен быть меньше уровня, указанного в SPS для CVS, содержащегося в OlsInScope.
Примечание 2. Когда OlsInScope соответствует нескольким профилям, general_profile_idc должен указывать профиль, который обеспечивает предпочтительный результат декодирования или предпочтительную идентификацию битового потока, как определено кодером (способом, не указанным в данной спецификации).
Примечание 3. Когда синтаксическая структура profile_tier_level( ) включена в DPS, и CVS OlsInScope соответствуют разным профилям, general_profile_idc и level_idc должны указывать профиль и уровень для декодера, способного декодировать OlsInScope.
Ограничение на единицу NAL ALF
pic_alf_aps_id_luma[ i ] указывает id_setup_parameter_set_id i-го APS ALF, на который ссылается компонент яркости срезов, ассоциированных с PH.
Значение alf_luma_filter_signal_flag единицы NAL APS, имеющей значение aps_params_type, равное ALF_APS, и значение adaptation_parameter_set_id, равное pic_alf_aps_id_luma[ i ], должны быть равны 1.
Значение TemporalId единицы NAL APS, имеющей значение aps_params_type, равное ALF_APS, и значение adaptation_parameter_set_id, равное pic_alf_aps_id_luma[ i ], должны быть меньше или равны TemporalId изображения, ассоциированного с PH.
pic_alf_aps_id_chroma указывает adaptation_parameter_set_id APS ALF, на который ссылается компонент цветности срезов, ассоциированных с РН.
Значение alf_chroma_filter_signal_flag единицы NAL APS, имеющей значение aps_params_type, равное ALF_APS, и значение adaptation_parameter_set_id, равное pic_alf_aps_id_chroma, должны быть равны 1.
Значение TemporalId единицы NAL APS, имеющей значение aps_params_type, равное ALF_APS, и значение adaptation_parameter_set_id, равное pic_alf_aps_id_chroma, должны быть меньше или равны TemporalId изображения, ассоциированного с PH.
Ограничение на относительную переменную тайла
Переменные, относящиеся к тайлам, tile_column_width_minus1[ i ], tile_row_height_minus1[ i ], tile_idx_delta[ i ] должны иметь некоторые ограничения, наложенные на них, чтобы гарантировать надлежащие значения этих переменных.
Вариант А:
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.
Для i в диапазоне от 0 до num_exp_tile_columns_minus1 − 1 сумма tile_column_width_minus1[ i ] должна быть меньше, чем PicWidthInCtbsY.
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. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 − 1 сумма tile_row_height_minus1[ i ] должна быть меньше, чем PicHeightInCtbsY.
Вариант А':
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[ 0 ] отсутствует, предполагается, что оно равно PicWidthInCtbsY – 1.
Для i в диапазоне от 0 до num_exp_tile_columns_minus1 – 1 включительно сумма (tile_column_width_minus1[ i ] +1 ) должна быть меньше или равна PicWidthInCtbsY.
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[ 0 ] отсутствует, предполагается, что оно равно PicHeightInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 − 1 включительно сумма (tile_row_height_minus1[ i ] +1 ) должна быть меньше или равна PicHeightInCtbsY.
Вариант В:
tile_idx_delta[ i ] задает различие в индексе тайла между i-м прямоугольным срезом и (i+1)-м прямоугольным срезом. Значение tile_idx_delta[ i ] должно находиться в диапазоне от –NumTilesInPic + 1 до NumTilesInPic − 1 включительно. Если значение tile_idx_delta[ i ] отсутствует, предполагается, что оно равно 0. Во всех остальных случаях значение tile_idx_delta[ i ] не должно быть равно 0. Для i в диапазоне от 0 до num_slices_in_pic_minus1 − 1 включительно, сумма tile_idx_delta[ i ] должна быть меньше, чем NumTilesInPic.
Вариант С: вариант А + вариант В
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.
Для i в диапазоне от 0 до num_exp_tile_columns_minus1 − 1 сумма tile_column_width_minus1[ i ] должна быть меньше, чем PicWidthInCtbsY.
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. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 − 1 сумма tile_row_height_minus1[ i ] должна быть меньше, чем PicHeightInCtbsY.
tile_idx_delta[ i ] задает различие в индексе тайла между i-м прямоугольным срезом и (i+1)-м прямоугольным срезом. Значение tile_idx_delta[ i ] должно находиться в диапазоне от –NumTilesInPic + 1 до NumTilesInPic − 1 включительно. Если значение tile_idx_delta[ i ] отсутствует, предполагается, что оно равно 0. Во всех остальных случаях значение tile_idx_delta[ i ] не должно быть равно 0. Для i в диапазоне от 0 до num_slices_in_pic_minus1 − 1, сумма tile_idx_delta[ i ] должна быть меньше, чем NumTilesInPic.
Вариант C': вариант A' + вариант B
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[ 0 ] отсутствует, предполагается, что оно равно PicWidthInCtbsY – 1.
Для i в диапазоне от 0 до num_exp_tile_columns_minus1 − 1 включительно сумма (tile_column_width_minus1[ i ] +1) должна быть меньше или равна PicWidthInCtbsY.
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[ 0 ] отсутствует, предполагается, что оно равно PicHeightInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 − 1 включительно сумма (tile_row_height_minus1[ i ]+1) должна быть меньше или равна PicHeightInCtbsY.
tile_idx_delta[ i ] задает различие в индексе тайла между i-м прямоугольным срезом и (i+1)-м прямоугольным срезом. Значение tile_idx_delta[ i ] должно находиться в диапазоне от –NumTilesInPic + 1 до NumTilesInPic − 1 включительно. Если значение tile_idx_delta[ i ] отсутствует, предполагается, что оно равно 0. Во всех остальных случаях значение tile_idx_delta[ i ] не должно быть равно 0. Для i в диапазоне от 0 до num_slices_in_pic_minus1 − 1 включительно, сумма tile_idx_delta[ i ] должна быть меньше, чем NumTilesInPic.
Вариант D: (альтернативный способ для варианта A')
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[ 0 ] отсутствует, предполагается, что оно равно PicWidthInCtbsY – 1.
Для i в диапазоне от 0 до num_exp_tile_columns_minus1 включительно сумма (tile_column_width_minus1[ i ]+1) должна быть меньше или равна PicWidthInCtbsY.
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[ 0 ] отсутствует, предполагается, что оно равно PicHeightInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 включительно сумма (tile_row_height_minus1[ i ] +1 ) должна быть меньше или равна в PicHeightInCtbsY.
Вариант E: вариант D + вариант B
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[ 0 ] отсутствует, предполагается, что оно равно PicWidthInCtbsY – 1.
Для i в диапазоне от 0 до num_exp_tile_columns_minus1 включительно сумма (tile_column_width_minus1[ i ]+1) должна быть меньше или равна PicWidthInCtbsY.
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[ 0 ] отсутствует, предполагается, что оно равно PicHeightInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 включительно сумма (tile_row_height_minus1[ i ]+1) должна быть меньше или равна в PicHeightInCtbsY.
tile_idx_delta[ i ] задает различие в индексе тайла между i-м прямоугольным срезом и (i+1)-м прямоугольным срезом. Значение tile_idx_delta[ i ] должно находиться в диапазоне от –NumTilesInPic + 1 до NumTilesInPic − 1 включительно. Если значение tile_idx_delta[ i ] отсутствует, предполагается, что оно равно 0. Во всех остальных случаях значение tile_idx_delta[ i ] не должно быть равно 0. Для i в диапазоне от 0 до num_slices_in_pic_minus1 − 1 включительно, сумма tile_idx_delta[ i ] должна быть меньше, чем NumTilesInPic.
Вариант F: (альтернативный способ для варианта А')
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[ 0 ] отсутствует, предполагается, что оно равно PicWidthInCtbsY – 1.
Для i в диапазоне от 0 до num_exp_tile_columns_minus1 − 1 включительно сумма (tile_column_width_minus1[ i ]+1) должна быть меньше или равна PicWidthInCtbsY. Значение tile_column_width_minus1[ num_exp_tile_columns_minus1 ] должно быть меньше, чем PicWidthInCtbsY
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[ 0 ] отсутствует, предполагается, что оно равно PicHeightInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 − 1 включительно сумма (tile_row_height_minus1[ i ]+1) должна быть меньше или равна PicHeightInCtbsY. Значение tile_row_height_minus1[ num_exp_tile_rows_minus1 ] должно быть меньше, чем PicHeightInCtbsY.
Вариант G: вариант F + вариант B
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[ 0 ] отсутствует, предполагается, что оно равно PicWidthInCtbsY – 1.
Для i в диапазоне от 0 до num_exp_tile_columns_minus1 − 1 включительно сумма (tile_column_width_minus1[ i ] +1) должна быть меньше или равна PicWidthInCtbsY. Значение tile_column_width_minus1[ num_exp_tile_columns_minus1 ] должно быть меньше, чем PicWidthInCtbsY
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[ 0 ] отсутствует, предполагается, что оно равно PicHeightInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 − 1 включительно сумма (tile_row_height_minus1[ i ]+1) должна быть меньше или равна PicHeightInCtbsY. Значение tile_row_height_minus1[ num_exp_tile_rows_minus1 ] должно быть меньше, чем PicHeightInCtbsY
tile_idx_delta[ i ] задает различие в индексе тайла между i-м прямоугольным срезом и (i+1)-м прямоугольным срезом. Значение tile_idx_delta[ i ] должно находиться в диапазоне от –NumTilesInPic + 1 до NumTilesInPic − 1 включительно. Если значение tile_idx_delta[ i ] отсутствует, предполагается, что оно равно 0. Во всех остальных случаях значение tile_idx_delta[ i ] не должно быть равно 0. Для i в диапазоне от 0 до num_slices_in_pic_minus1 − 1 включительно, сумма tile_idx_delta[ i ] должна быть меньше, чем NumTilesInPic.
В приведенном выше описании касательно двух значений M и N то, что «M должно быть меньше или равно N», также можно описать как: «M должно быть не больше, чем N».
Ниже приведены различные реализации настоящей заявки:
Первый вариант осуществления [ID DPS]
В настоящее время DPS имеет ID DPS, и отсутствует ограничение на соответствующую взаимосвязь содержания единиц NAL DPS и значения ID.
Кроме того, ограничение отсутствует на время, в течение которого DPS может находиться в битовом потоке. Если в битовом потоке много DPS и у них один и тот же ID DPS, декодер не знает, какой DPS выбрать.
Для решения этой проблемы обеспечиваетсяы два варианта:
Вариант A: добавление ограничения, согласно которому DPS может существовать в битовом потоке не более одного раза, что означает, что DPS не является обязательным в битовом потоке, и если битовый поток содержит DPS, в битовом потоке может быть только один DPS.
RBSP DPS должна быть доступна для процесса декодирования до того, как на нее будет сделана ссылка, и она должна быть включена по меньшей мере в одну AU со значением TemporalId, равным 0 или предоставлена через внешнее средство.
Примечание 1. В битовом потоке существует не более одной единицы NAL DPS.
Примечание 2. Требуется, чтобы единица NAL DPS была доступна (либо в битовом потоке, либо с помощью внешнего средства) для процесса декодирования до обращения к нему. Однако RBSP DPS содержит информацию, которая не является необходимой для выполнения процесса декодирования, указанного в пунктах 2–9 данной спецификации.
Вариант B: добавление ограничения, согласно которому все единицы NAL DPS с конкретным значением dps_decoding_parameter_set_id в битовом потоке должны иметь одинаковое содержание. В этом случае один ID DPS не может присваивать (соответствовать) более чем одно содержание DPS.
Например:
RBSP DPS должна быть доступна для процесса декодирования до того, как на нее будет сделана ссылка, и она должна быть включена по меньшей мере в одну AU со значением TemporalId, равным 0 или предоставлен через внешнее средство.
Примечание 1. Единицы NAL DPS должны быть доступны (либо в битовом потоке, либо с помощью внешнего средства) для процесса декодирования до обращения к ним. Однако RBSP DPS содержит информацию, которая не является необходимой для выполнения процесса декодирования, указанного в пунктах 2–9 данной спецификации.
Все единицы NAL DPS с конкретным значением dps_decoding_parameter_set_id в битовом потоке должны иметь одинаковое содержание.
Второй вариант осуществления [уровень DPS]
Уровень, сигнализируемый в DPS, должен иметь или представлять возможность наихудшего случая для всего битового потока, поэтому уровень, сигнализируемый в DPS, должен быть не меньше уровня, сигнализируемого в SPS.
Может быть наложено ограничение, согласно которому уровень, сигнализируемый в DPS, не должен быть меньше уровня, сигнализируемого в SPS.
general_level_idc указывает уровень, которому соответствует OlsInScope, как указано в приложении A. Битовые потоки не должны содержать значения general_level_idc, отличные от тех, которые указаны в приложении A. Другие значения general_level_idc зарезервированы для будущего использования ITU-T | ISO/IEC.
Примечание 1. Большее значение general_level_idc указывает на более высокий уровень. Максимальный уровень, указанный в DPS для OlsInScope, не должен быть меньше, чем уровень, указанный в SPS для CVS, содержащейся в OlsInScope.
Примечание 2. Когда OlsInScope соответствует нескольким профилям, значение general_profile_idc должно указывать профиль, который обеспечивает предпочтительный результат декодирования или предпочтительную идентификацию битового потока, как определено кодером (способом, не указанным в данной спецификации).
Примечание 3. Когда синтаксическая структура profile_tier_level( ) включена в DPS, и CVS OlsInScope соответствуют разным профилям, general_profile_idc и level_idc должны указывать профиль и уровень для декодера, способного декодировать OlsInScope.
Третий вариант осуществления [TID NALU ALF]
В настоящее время нет ограничений на TemporalId единицы NAL APS и TemporalId изображения, ассоциированного с PH. Однако, когда значение nal_unit_type равно PPS_NUT, PREFIX_APS_NUT или SUFFIX_APS_NUT, значение TemporalId должно быть больше или равно TemporalId PU, содержащей единицу NAL, и в случае в сценарии вычитания битового потока, должно быть ограничение на TemporalId единицы NAL APS и TemporalId изображения, ассоциированного с PH.
Ограничение на единицу NAL ALF
pic_alf_aps_id_luma[ i ] указывает id_setup_parameter_set_id i-го APS ALF, на который ссылается компонент яркости срезов, ассоциированных с PH.
Значение alf_luma_filter_signal_flag единицы NAL APS, имеющей значение aps_params_type, равное ALF_APS, и значение adaptation_parameter_set_id, равное pic_alf_aps_id_luma[ i ], должны быть равны 1.
Значение TemporalId единицы NAL APS, имеющей значение aps_params_type, равное ALF_APS, и значение adaptation_parameter_set_id, равное pic_alf_aps_id_luma[ i ], должны быть меньше или равны TemporalId изображения, ассоциированного с PH.
pic_alf_aps_id_chroma задает adaptation_parameter_set_id APS ALF, на который ссылается компонент цветности срезов, ассоциированных с РН.
Значение alf_chroma_filter_signal_flag единицы NAL APS, имеющей значение aps_params_type, равное ALF_APS, и значение adaptation_parameter_set_id, равное pic_alf_aps_id_chroma, должны быть равны 1.
Значение TemporalId единицы NAL APS, имеющей значение aps_params_type, равное ALF_APS, и значение adaptation_parameter_set_id, равное pic_alf_aps_id_chroma, должны быть меньше или равны TemporalId изображения, ассоциированного с PH.
Четвертый вариант осуществления [тайл]
Относительные переменные tile_column_width_minus1[ i ], tile_row_height_minus1[ i ], tile_idx_delta[ i ] должны иметь некоторые ограничения, наложенные на них, для обеспечения правильных значений этих переменных.
Это связано с тем, что эти переменные любого среза не могут выходить за пределы диапазона изображения. Кроме того, столбец тайлов и высота тайла должны быть больше 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. Для i в диапазоне от 0 до num_exp_tile_columns_minus1 – 1 сумма tile_column_width_minus1[ i ] должна быть меньше, чем PicWidthInCtbsY.
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. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 − 1 сумма tile_row_height_minus1[ i ] должна быть меньше, чем PicHeightInCtbsY.
Вариант А':
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[ 0 ] отсутствует, предполагается, что оно равно PicWidthInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_columns_minus1 − 1 включительно сумма (tile_column_width_minus1[ i ] +1) должна быть меньше или равна PicWidthInCtbsY.
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[ 0 ] отсутствует, предполагается, что оно равно PicHeightInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 − 1 включительно сумма (tile_row_height_minus1[ i ]+1) должна быть меньше или равна PicHeightInCtbsY.
Вариант В:
Необходимо убедиться, что прямоугольный срез должен содержаться в изображении.
tile_idx_delta[ i ] задает различие в индексе тайла между i-м прямоугольным срезом и (i+1)-м прямоугольным срезом. Значение tile_idx_delta[ i ] должно находиться в диапазоне от –NumTilesInPic + 1 до NumTilesInPic − 1 включительно. Если значение tile_idx_delta[ i ] отсутствует, предполагается, что оно равно 0. Во всех остальных случаях значение tile_idx_delta[ i ] не должно быть равно 0. Для i в диапазоне от 0 до num_slices_in_pic_minus1 − 1 включительно, сумма tile_idx_delta[ i ] должна быть меньше, чем NumTilesInPic.
Вариант C: вариант A + вариант B
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. Для i в диапазоне от 0 до num_exp_tile_columns_minus1 – 1 сумма tile_column_width_minus1[ i ] должна быть меньше, чем PicWidthInCtbsY.
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. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 − 1 сумма tile_row_height_minus1[ i ] должна быть меньше, чем PicHeightInCtbsY.
tile_idx_delta[ i ] задает различие в индексе тайла между i-м прямоугольным срезом и (i+1)-м прямоугольным срезом. Значение tile_idx_delta[ i ] должно находиться в диапазоне от –NumTilesInPic + 1 до NumTilesInPic − 1 включительно. Если значение tile_idx_delta[ i ] отсутствует, предполагается, что оно равно 0. Во всех остальных случаях значение tile_idx_delta[ i ] не должно быть равно 0. Для i в диапазоне от 0 до num_slices_in_pic_minus1 − 1, сумма tile_idx_delta[ i ] должна быть меньше, чем NumTilesInPic.
Вариант C': вариант A' + вариант B
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[ 0 ] отсутствует, предполагается, что оно равно PicWidthInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_columns_minus1 − 1 включительно сумма (tile_column_width_minus1[ i ]+1) должна быть меньше или равна PicWidthInCtbsY.
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[ 0 ] отсутствует, предполагается, что оно равно PicHeightInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 − 1 включительно сумма (tile_row_height_minus1[ i ]+1) должна быть меньше или равна PicHeightInCtbsY.
tile_idx_delta[ i ] задает различие в индексе тайла между i-м прямоугольным срезом и (i+1)-м прямоугольным срезом. Значение tile_idx_delta[ i ] должно находиться в диапазоне от –NumTilesInPic + 1 до NumTilesInPic − 1 включительно. Если значение tile_idx_delta[ i ] отсутствует, предполагается, что оно равно 0. Во всех остальных случаях значение tile_idx_delta[ i ] не должно быть равно 0. Для i в диапазоне от 0 до num_slices_in_pic_minus1 − 1 включительно, сумма tile_idx_delta[ i ] должна быть меньше, чем NumTilesInPic.
Вариант D: (альтернативный способ для варианта A')
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[ 0 ] отсутствует, предполагается, что оно равно PicWidthInCtbsY – 1.
Для i в диапазоне от 0 до num_exp_tile_columns_minus1 включительно сумма (tile_column_width_minus1[ i ]+1) должна быть меньше или равна PicWidthInCtbsY.
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[ 0 ] отсутствует, предполагается, что оно равно PicHeightInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 включительно сумма (tile_row_height_minus1[ i ] +1 ) должна быть меньше или равна в PicHeightInCtbsY.
Вариант E: вариант D + вариант B
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[ 0 ] отсутствует, предполагается, что оно равно PicWidthInCtbsY – 1.
Для i в диапазоне от 0 до num_exp_tile_columns_minus1 включительно сумма (tile_column_width_minus1[ i ] +1) должна быть меньше или равна PicWidthInCtbsY.
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[ 0 ] отсутствует, предполагается, что оно равно PicHeightInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 включительно сумма (tile_row_height_minus1[ i ]+1) должна быть меньше или равна в PicHeightInCtbsY.
tile_idx_delta[ i ] задает различие в индексе тайла между i-м прямоугольным срезом и (i+1)-м прямоугольным срезом. Значение tile_idx_delta[ i ] должно находиться в диапазоне от –NumTilesInPic + 1 до NumTilesInPic − 1 включительно. Если значение tile_idx_delta[ i ] отсутствует, предполагается, что оно равно 0. Во всех остальных случаях значение tile_idx_delta[ i ] не должно быть равно 0. Для i в диапазоне от 0 до num_slices_in_pic_minus1 − 1 включительно, сумма tile_idx_delta[ i ] должна быть меньше, чем NumTilesInPic.
Вариант F: (альтернативный способ для варианта А')
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[ 0 ] отсутствует, предполагается, что оно равно PicWidthInCtbsY – 1.
Для i в диапазоне от 0 до num_exp_tile_columns_minus1 − 1 включительно сумма (tile_column_width_minus1[ i ] +1) должна быть меньше или равна PicWidthInCtbsY. Значение tile_column_width_minus1[ num_exp_tile_columns_minus1 ] должно быть меньше, чем PicWidthInCtbsY
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[ 0 ] отсутствует, предполагается, что оно равно PicHeightInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 − 1 включительно сумма (tile_row_height_minus1[ i ]+1) должна быть меньше или равна PicHeightInCtbsY. Значение tile_row_height_minus1[ num_exp_tile_rows_minus1 ] должно быть меньше, чем PicHeightInCtbsY.
Вариант G: вариант F + вариант B
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[ 0 ] отсутствует, предполагается, что оно равно PicWidthInCtbsY – 1.
Для i в диапазоне от 0 до num_exp_tile_columns_minus1 − 1 включительно сумма (tile_column_width_minus1[ i ] +1) должна быть меньше или равна PicWidthInCtbsY. Значение tile_column_width_minus1[ num_exp_tile_columns_minus1 ] должно быть меньше, чем PicWidthInCtbsY.
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[ 0 ] отсутствует, предполагается, что оно равно PicHeightInCtbsY − 1. Для i в диапазоне от 0 до num_exp_tile_rows_minus1 − 1 включительно сумма (tile_row_height_minus1[ i ]+1) должна быть меньше или равна PicHeightInCtbsY. Значение tile_row_height_minus1[ num_exp_tile_rows_minus1 ] должно быть меньше, чем PicHeightInCtbsY.
tile_idx_delta[ i ] задает различие в индексе тайла между i-м прямоугольным срезом и (i+1)-м прямоугольным срезом. Значение tile_idx_delta[ i ] должно находиться в диапазоне от –NumTilesInPic + 1 до NumTilesInPic − 1 включительно. Если значение tile_idx_delta[ i ] отсутствует, предполагается, что оно равно 0. Во всех остальных случаях значение tile_idx_delta[ i ] не должно быть равно 0. Для i в диапазоне от 0 до num_slices_in_pic_minus1 − 1 включительно, сумма tile_idx_delta[ i ] должна быть меньше, чем NumTilesInPic.
В приведенном выше описании касательно двух значений M и N то, что «M должно быть меньше или равно N», также можно описать как «M должно быть не больше, чем N».
(1) ограничение, состоящее в том, что DPS может существовать в битовом потоке не более одного раза, и механизм в другом способе, согласно которому, если битовый поток может иметь более одного DPS, то все единицы NAL DPS с конкретным значением dps_decoding_parameter_set_id в битовом потоке должны иметь одно и то же содержание, уменьшает или устраняет неоднозначность в декодере.
(2) Уровень, сигнализируемый в DPS, должен иметь возможность наихудшего случая для всего битового потока, поэтому уровень, сигнализируемый в DPS, не должен быть меньше уровня, сигнализируемого в SPS. Иначе параметр в DPS не имел бы смысла.
(3) Ограничение на TID ALF NALU добавлено для того, чтобы обеспечить правильную работу вычитания битового потока в соответствии с TID NALU.
(4) С точки зрения соответствия: относительная переменная тайла должна быть ограничена допустимым диапазоном, чтобы гарантировать то, что каждый тайл имеет по меньшей мере одну CTU, и каждый тайл должен быть включен в изображение. Кроме того, необходимо убедиться, что прямоугольный срез должен содержаться в изображении.
Ниже приводится пояснение применения способа кодирования, а также способа декодирования, который показан в вышеупомянутых вариантах осуществления, и системы, использующей их.
На фиг.6 показана блок-схема, показывающая систему 3100 доставки содержания для реализации услуги распространения содержания. Эта система 3100 доставки содержания включает в себя устройство 3102 захвата, терминальное устройство 3106 и дополнительно включает в себя дисплей 3126. Устройство 3102 захвата обменивается данными с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Примеры линии 3104 связи включают в себя, но без ограничений, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB, любую их комбинацию или т.п.
Устройство 3102 захвата вырабатывает данные и может кодировать данные способом кодирования, как показано в приведенных выше вариантах осуществления. В качестве альтернативы, устройство 3102 захвата может передавать данные на сервер потоковой передачи (не показан на фигурах), и сервер кодирует данные и передает кодированные данные в терминальное устройство 3106. Примеры устройства 3102 захвата включают в себя, но без ограничений, камеру, смартфон или планшетный компьютер, компьютер или ноутбук, систему видеоконференцсвязи, PDA, устройство, установленное на транспортном средстве, любую их комбинацию или т.п. Например, устройство 3102 захвата может включать в себя устройство-источник 12, как описано выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования видео. Когда данные включают в себя звук (то есть голос), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования звука. Для некоторых практических сценариев устройство 3102 захвата распределяет кодированные видео- и аудиоданные, мультиплексируя их вместе. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распределяет по отдельности кодированные аудиоданные и кодированные видеоданные для терминального устройства 3106.
В системе 3100 доставки содержания терминальное устройство 3106 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и восстановления данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR)/цифровой видеомагнитофон (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, персональный цифровой помощник (PDA) 3122, устройство 3124, установленное на транспортном средстве, любая их комбинация или т.п, которые способны декодировать вышеупомянутые кодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-адресат 14, как описано выше. Когда кодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения декодирования видео. Когда кодированные данные включают в себя звук, аудиодекодер, включенный в терминальное устройство, получает приоритет для выполнения обработки декодирования звука.
Для терминального устройства с собственным дисплеем, например, смартфона или планшетного компьютера 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR)/цифрового видеомагнитофона (DVR) 3112, телевизора 3114, персонального цифрового помощника (PDA) 3122 или устройства 3124, установленного на транспортном средстве, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, например, STB 3116, системы 3118 видеоконференцсвязи или системы 3120 видеонаблюдения, в нем устанавливается контакт с внешним дисплеем 3126 для приема и отображения декодированных данных.
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображения или устройство декодирования изображения, как показано в вышеупомянутых вариантах осуществления.
На фиг.7 показана схема, иллюстрирующая структуру примерного терминального устройства 3106. После того, как терминальное устройство 3106 примет поток из устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи потока. Примеры протоколов включают в себя, но без ограничений, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи в реальном времени HTTP (HLS), MPEG-DASH, транспортный протокол в реальном времени (RTP), протокол обмена сообщениями в реальном времени (RTMP), любую их комбинацию или тому подобное.
После того, как блок 3202 обработки протокола обработает поток, генерируется потоковый файл. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, в некоторых сценариях, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются в видеодекодер 3206 и аудиодекодер 3208 без прохождения через блок 3204 демультиплексирования.
С использованием процесса демультиплексирования генерируется элементарный видеопоток (ES), аудио ES и при необходимости субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, как объяснено в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для выработки видеокадра и подает эти данные в блок 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES для выработки аудиокадра и подает эти данные в блок 3212 синхронизации. В качестве альтернативы видеокадр может храниться в буфере (не показан на фиг.7) перед подачей в блок 3212 синхронизации. Аналогичным образом, аудиокадр может храниться в буфере (не показан на фиг.7) перед подачей в блок 3212 синхронизации.
Блок 3212 синхронизации синхронизирует видеокадр и звуковой кадр и подает видео/аудио в блок 3214 отображения видео/аудио. Например, блок 3212 синхронизации синхронизирует представление информации видео и аудио. Информация может быть закодирована в синтаксисе с использованием меток времени, касающихся представления кодированных аудио- и визуальных данных, и меток времени, касающихся доставки непосредственно потока данных.
Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры в блок 3216 отображения видео/аудио/субтитров.
Варианты осуществления настоящего изобретения не ограничиваются вышеупомянутой системой, и либо устройство кодирования изображения, либо устройство декодирования изображения в вышеупомянутых вариантах осуществления могут быть включено в другие системы, например, в автомобильную систему
Математические операторы
Математические операторы, используемые в настоящей заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определены более точно, и определены дополнительные операции, такие как возведение в степень и деление действительных чисел. Правила нумерации и подсчета, как правило, начинаются с 0, например, "первый" эквивалентен 0-му, "второй" эквивалентен 1-му и т.д.
Арифметические операторы
Следующие арифметические операторы определены следующим образом:
Логические операторы
Следующие логические операторы определены следующим образом:
x && y – булевое логическое "И" для x и y
x | | y – булевое логическое "ИЛИ" x и y
! – булевое логическое "НЕ"
x ? y : z – если x равен значению "ИСТИНА" (TRUE) или не равен 0, вычисляется значение y; в противном случае вычисляется значение z.
– Операторы отношения
– Следующие операторы отношения определены следующим образом:
> больше
>= больше или равно
< меньше
<= меньше или равно
= = равно
!= не равно
Когда оператор отношения применяется к синтаксическому элементу или переменной, которой было присвоено значение "na" (не применимо), значение "na" обрабатывается как отдельное значение для синтаксического элемента или переменной. Значение "na" не считается равным любому другому значению.
Поразрядные операторы
Следующие поразрядные операторы определены следующим образом:
& Поразрядное "И". При выполнении операций с целочисленными аргументами производится действие над представлением целочисленного значения с дополнением до двух. При выполнении операций с двоичным аргументом, который содержит меньше разрядов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значимых разрядов, равных 0.
| Поразрядное "ИЛИ". При выполнении операций с целочисленными аргументами производится действие над представлением с дополнением до двух целочисленного значения. При выполнении операций с двоичным аргументом, который содержит меньше разрядов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значимых разрядов, равных 0.
^ Поразрядное "ИСКЛЮЧАЮЩЕЕ ИЛИ". При выполнении операций с целочисленными аргументами производится действие над представлением с дополнением до двух целочисленного значения. При выполнении операций с двоичным аргументом, который содержит меньше разрядов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значимых разрядов, равных 0.
x >> y Арифметический сдвиг вправо целочисленного представления x с дополнением до двух на y двоичных цифр. Эта функция определена только для неотрицательных целых значений y. Разряды, сдвинутые в старшие значащие разряды (MSB) в результате сдвига вправо, имеют значение, равное MSB x до операции сдвига.
x << y Арифметический сдвиг влево целочисленного представления x с дополнением до двух на y двоичных цифр. Эта функция определена только для неотрицательных целых значений y. Разряды, сдвинутые в младшие значащие разряды (LSB) в результате сдвига влево, имеют значение, равное 0.
Операторы присваивания
Приведенные ниже арифметические операторы определены следующим образом:
= Оператор присваивания
+ + Приращение, то есть x + + эквивалентно x = x + 1, при его использовании в индексе массива, оценивает значение переменной до операции приращения.
− − Уменьшение, то есть x− - эквивалентно x = x – 1, при его использовании в индексе массива, оценивает значение переменной до операции уменьшения.
+= Увеличение на указанную величину, то есть X + = 3 эквивалентно x = x + 3, и x + = (−3) эквивалентно x = x + (−3).
−= Уменьшение на указанную величину, то есть X - = 3 эквивалентно x = x - 3, и x - = (−3) эквивалентно x = x - (−3).
Обозначение диапазона
Для указания диапазона значений используются следующие обозначения:
x = y..z x принимает целые значения, начиная с y до z включительно, где x, y и z являются целыми числами, и z больше y.
Математические функции
Приведенные ниже математические функции определены следующим образом:
Abs(x) =
Asin(x) тригонометрическая обратная функция синуса, которая производит действие над аргументом x, который находится в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне - от π ÷ 2 до π ÷ 2 включительно в радианах.
Atan(x) тригонометрическая функция арктангенса, которая производит действие над аргументом x при выходном значении в диапазоне от - π ÷ 2 до π ÷ 2 включительно в радианах.
Atan2( y, x ) =
Ceil(x) наименьшее целое число, большее или равное х.
Clip1Y(x) = Clip3(0, (1 << BitDepthY) − 1, x)
Clip1C(x) = Clip3(0, (1 << BitDepthC) − 1, x)
Clip3(x, y, z) =
Cos(x) тригонометрическая косинусная функция, работающая с аргументом x в радианах.
Floor(x)наибольшее целое число, меньшее или равное x.
GetCurrMsb( a, b, c, d ) =
Ln(x) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 2,718 281 828 ...).
Log2(x) логарифм по основанию 2 числа x.
Log10(x) десятичный логарифм x.
Min(x, y) =
Max(x, y) =
Round(x) = Sign(x) * Floor(Abs(x) + 0.5)
Sign(x) =
Sin(x) тригонометрическая функция синуса, работающая с аргументом x в радианах
Sqrt(x) =
Swap(x, y) = (y, x)
Tan(x) тригонометрическая тангенциальная функция, которая производит действие над аргументом x в радианах.
Порядок приоритета операций
Когда порядок приоритета в выражении явно не указан с помощью круглых скобок, применяются следующие правила:
- Операции с более высоким приоритетом оцениваются перед любой операцией с более низким приоритетом.
- Операции с одинаковым приоритетом оцениваются последовательно слева направо.
В таблице ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет.
Для тех операторов, которые также используются в языке программирования C, порядок приоритета, используемый в данном описании, является таким, который используется в языке программирования C.
Таблица: Приоритет операций от самого высокого (вверху таблицы) до самого низкого (внизу таблицы)
", "x % y"
"
Текстовое описание логических операций
В тексте представлено изложение логических операций, которые могут быть описаны математически в следующей форме:
if(условие 0)
утверждение 0
else if(условие 1)
утверждение 1
...
else /* информативное замечание по оставшемуся условию */
утверждение n
можно описать следующим образом:
... следующим образом / ... применяется следующее:
– If условие 0, утверждение 0
– В противном случае, if условие 1, утверждение 1
– ...
– В противном случае (информативное замечание по оставшемуся условию), утверждение n
Каждое "If ... В противном случае, if ... В противном случае, ..." утверждение в тексте вводится с"... следующим образом" or "... применяется следующее" сразу за которым следует "If ... ". Последнее условие "If ... В противном случае, if ... В противном случае, ..." всегда "В противном случае, ...". С чередованием "If ... В противном случае, if ... В противном случае, ..." утверждения могут быть идентифицированы путем сопоставления "... следующим образом " or "... применяется следующее" с окончанием "В противном случае, ...".
В тексте утверждение логических операций, как было бы математически описано в следующей виде:
if(условие 0a && условие 0b)
утверждение 0
else if(условие 1a | | условие 1b)
утверждение 1
...
else
утверждение n
можно описать следующим образом:
... следующим образом / ... применяется следующее:
– Если все следующие условия верны, утверждение 0:
– условие 0a
– условие 0b
– В противном случае, если выполняется одно или более из следующих условий, утверждение 1:
– условие 1a
– условие 1b
– ...
– В противном случае, утверждение n
В тексте утверждение логических операций, как было бы математически описано в следующей форме:
if (условие 0)
утверждение 0
if (условие 1)
утверждение 1
можно описать следующим образом:
Когда условие 0, утверждение 0
Когда условие 1, утверждение 1.
Хотя варианты осуществления настоящего изобретения были в основном описаны на основе кодирования видео, следует отметить, что варианты осуществления системы 10 кодирования, кодера 20 и декодера 30 (и, соответственно, системы 10) и другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодирования неподвижного изображения, то есть обработки или кодирования отдельного изображения независимо от любого предшествующего или последовательного изображения, как при кодировании видео. В общем, блоки 244 (кодер) и 344 (декодер) межкадрового предсказания могут быть недоступны только в случае, если кодирование обработки изображения ограничено одним изображением 17. Все другие функциональные возможности (которые упоминаются также как инструментальные средства или технологии) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки неподвижных изображений, например, вычисления остатка 204/304, преобразования 206, квантования 208, обратного квантования 210/310, (обратного) преобразования 212/312, разделения 262/362, внутрикадрового предсказания 254/354, и/или контурной фильтрации 220, 320, энтропийного кодирования 270 и энтропийного декодирования 304.
Варианты осуществления, например, кодера 20 и декодера 30, и функции, описанные в данном документе, например, со ссылкой на кодер 20 и декодер 30, могут быть реализованы в аппаратных средствах, программном обеспечении, программно-аппаратных средствах или любой их комбинации. В случае реализации в программном обеспечении, функции могут храниться на машиночитаемом носителе информации или передаваться через среду связи в виде одной или более инструкций или кода и исполняться аппаратным процессором. Машиночитаемые носители информации могут включать в себя машиночитаемый носитель информации, который соответствует материальному носителю информации, например, носителю информации, или носителю связи, в том числе любой носитель информации, который облегчает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, машиночитаемые носители информации, как правило, могут соответствовать (1) материальным машиночитаемым носителям информации, которые являются невременными, или (2) среде передачи данных, такой как сигнал или несущая волна. Носители информации могут быть любыми доступными носителями информации, к которым может обращаться один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации технологий, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель информации.
В частности, обеспечивается способ декодирования кодированного битового видеопотока, реализованного в декодере, как показано на фиг.8, причем способ содержит: получение (S801) синтаксического элемента уровня изображения, включенного в заголовок изображения текущего изображения, путем синтаксического анализа битового видеопотока, где синтаксический элемент уровня изображения (например, pic_alf_enabled_flag) используется для указания того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения; в случае, когда синтаксический элемент уровня изображения указывает то, что адаптивная контурная фильтрация разрешена для текущего изображения, получение (S802) идентификатора набора параметров (например, pic_alf_aps_id_luma[ i ]), включенного в заголовок изображения, где идентификатор набора параметров используется для указания первого набор параметров (например, APS), содержащего набор параметров ALF, и где временной идентификатор (например, TemporalId ) первого набора параметров меньше или равен временному идентификатору текущего изображения; и выполнение (S803) адаптивной контурной фильтрации по меньшей мере над одним срезом текущего изображения на основе первого набора параметров.
Текущее изображение представляет собой кодированное изображение, содержащееся в единице изображения (PU), причем PU представляет собой набор единиц NAL, которые ассоциированы друг с другом в соответствии с заданным правилом классификации и расположены последовательно в порядке декодирования.
Единица слоя сетевой абстракции (NAL) представляет собой синтаксическую структуру, содержащую указатель типа данных, которому необходимо следовать, и байты, содержащие все или часть кодированных данных текущего изображения, заголовок изображения или набор параметров, содержащий набор параметров ALF. При этом каждая единица NAL имеет временной идентификатор.
Временной идентификатор (например, TemporalId ) первого набора параметров представляет собой TemporalId единицы NAL APS, имеющей значение aps_params_type, равное ALF_APS. Значение aps_params_type, равное ALF_APS, означает, что параметры ALF переносятся в APS. Единица NAL APS представляет собой единицу NAL, содержащую APS.
Если временной идентификатор первой единицы NAL меньше, чем временной идентификатор второй единицы NAL того же слоя, данные, инкапсулированные первой единицей NAL, могут быть декодированы без обращения к данным, инкапсулированным второй единицей NAL. Временной идентификатор можно также использовать в процессе извлечения битового подпотока, который представляет собой процесс, посредством которого единицы NAL в битовом потоке, не принадлежащие к целевому набору, определенному целевым наивысшим временным идентификатором, удаляются из битового потока, при этом выходной битовый подпоток, состоит из единиц NAL в битовом потоке, принадлежащих к целевому набору.
Временной идентификатор может быть связан с порядком декодирования.
Выполнение адаптивной контурной фильтрации по меньшей мере над одним срезом текущего изображения на основе первого набора параметров содержит: выполнение адаптивной контурной фильтрации над компонентом яркости по меньшей мере одного среза текущего изображения на основе первого набора параметров.
Когда ALF включен для CTB, каждая выборка R(i,j) в пределах CU фильтруется с использованием ALF, в результате чего получается значение выборки R'(i,j), как показано ниже,
где f(k,l) обозначает коэффициенты декодированного фильтра, K(x,y) – функция отсечения, и c(k,l) обозначает декодированные параметры отсечения. Переменные k и l варьируются от -L/2 до L/2, где L обозначает длину фильтра. Функция отсечения соответствует функции Clip3 (-y,y,x). Операция отсечения вносит нелинейность, чтобы сделать ALF более эффективной за счет уменьшения влияния значений соседних выборок, которые слишком отличаются от значения текущей выборки.
Параметры фильтра ALF (или параметры ALF) указываются в наборе параметров адаптации (APS). В одном APS может сигнализироваться до 25 наборов коэффициентов фильтра яркости и индексов значений отсечения и до восьми наборов коэффициентов фильтра цветности и индексов значений отсечения. Чтобы уменьшить служебные биты, можно объединить коэффициенты фильтра различной классификации для компонента яркости. В заголовке изображения указываются индексы APS, используемые для текущего изображения.
Индексы значений отсечения, которые декодируются из APS, позволяют определять значения отсечения с использованием таблицы значений отсечения как для компонентов яркости, так и для компонентов цветности. Эти значения отсечения зависят от внутренней битовой глубины. Более конкретно, значения отсечения получаются по следующей формуле:
AlfClip,
где B равно внутренней битовой глубине, α – заданное постоянное значение, равное 2,35, и N – количество допустимых значений отсечения в VVC, равное 4. Затем AlfClip округляется до ближайшего значения в формате степени 2.
В заголовке среза может быть указано до 7 индексов APS для указания наборов фильтров яркости, которые используются для текущего среза. Процессом фильтрации можно дополнительно управлять на уровне CTB. Флаг всегда сигнализируется для указания того, применяется ли ALF к CTB яркости. CTB яркости может выбрать набор фильтров из 16 фиксированных наборов фильтров и наборов фильтров из APS. Индекс набора фильтров сигнализируется для CTB яркости, чтобы указать, какой набор фильтров применяется. 16 фиксированных наборов фильтров заданы и жестко закодированы как в кодере, так и в декодере.
Для компонента цветности индекс APS сигнализируется в заголовке среза, чтобы указать наборы фильтров цветности, используемые для текущего среза. На уровне CTB индекс фильтра сигнализируется для каждого CTB цветности, если в APS установлено более одного фильтра цветности.
Коэффициенты фильтра квантуются с нормой, равной 128. Чтобы ограничить сложность умножения, применяется соответствие битового потока, так что значение коэффициента нецентральной позиции должно находиться в диапазоне от – 27 до 27 – 1 включительно. Коэффициент центральной позиции не сигнализируется в битовом потоке и считается равным 128.
Способ может дополнительно содержать: в случае, когда синтаксический элемент уровня изображения (например, pic_alf_enabled_flag) указывает то, что адаптивная контурная фильтрация разрешена для текущего изображения, получение другого идентификатора набора параметров, включенного в заголовок изображения, где идентификатор набора параметров (например, pic_alf_aps_id_chroma) используется для указания второго набора параметров (например, APS), содержащего набор параметров ALF, и где временной идентификатор второго набора параметров меньше или равен временному идентификатору текущего изображения; и выполнение адаптивной контурный фильтрации над компонентом цветности по меньшей мере одного среза текущего изображения на основе второго набора параметров.
Аналогичным образом, обеспечивается способ кодирования битового видеопотока, содержащего кодированные данные, реализованные в кодере, как показано на фиг.9. Способ содержит: определение (S901) того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения, кодирование (S903) синтаксического элемента уровня изображения (например, pic_alf_enabled_flag) в заголовке изображения текущего изображения на основе определения того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения, где синтаксический элемент уровня изображения используется для указания того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения, и, в случае, когда адаптивная контурная фильтрация разрешена для текущего изображения, кодирование (S905) идентификатора набора параметров (например, pic_alf_aps_id_luma[ i ]) в заголовке изображения, где идентификатор набора параметров используется для указания первого набора параметров (например, APS), содержащего набор параметров адаптивной контурной фильтрации (ALF), и где временной идентификатор (например, TemporalId) первого набора параметров устанавливается меньшим или равным временному идентификатору текущего изображения.
Способ может дополнительно содержать: кодирование временного идентификатора первого набора параметров и временного идентификатора текущего изображения в битовом видеопотоке.
Первый набор параметров содержит набор параметров адаптивной контурной фильтрации (ALF), выполняемой над компонентом яркости по меньшей мере одного среза текущего изображения.
Способ может дополнительно содержать: в случае, когда синтаксический элемент уровня изображения указывает то, что адаптивная контурная фильтрация разрешена для текущего изображения, кодирование другого идентификатора набора параметров в заголовке изображения, где идентификатор набора параметров (например, pic_alf_aps_id_chroma) используется для указания второго набора параметров (например, APS), содержащего набор параметров адаптивной контурной фильтрации (ALF), выполняемой над компонентом цветности по меньшей мере одного среза текущего изображения, и где временной идентификатор второго набора параметров устанавливается меньшим или равным временному идентификатору текущего изображения.
На фиг.10 показан декодер 1000, выполненный с возможностью декодирования битового видеопотока, содержащего кодированные данные для множества изображений. Декодер 1000 согласно показанному примеру содержит: блок 1010 получения, выполненный с возможностью получения синтаксического элемента уровня изображения, включенного в заголовок изображения текущего изображения, путем синтаксического анализа битового видеопотока, причем синтаксический элемент уровня изображения используется для указания того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения. Блок 1010 получения дополнительно выполнен с возможностью получения, в случае, когда синтаксический элемент уровня изображения указывает то, что адаптивная контурная фильтрация разрешена для текущего изображения, идентификатора набора параметров, включенного в заголовок изображения, где идентификатор набора параметров используется для указания первого набора параметров, содержащего набор параметров ALF, и где временной идентификатор первого набора параметров меньше или равен временному идентификатору текущего изображения; и блок 1020 фильтрации, выполненный с возможностью выполнения адаптивной контурный фильтрации по меньшей мере над одним срезом текущего изображения на основе первого набора параметров.
Блок 1010 получения может быть блоком 304 энтропийного декодирования. Блок 1020 фильтрации может быть контурным фильтром 320. Декодер 1000 может быть устройством-адресатом 14, декодером 30, устройством 500, видеодекодером 3206 или терминальным устройством 3106.
Аналогичным образом, обеспечивается кодер 1100, выполненный с возможностью кодирования битового видеопотока, содержащего кодированные данные для множества изображений, как показано на фиг.11. Кодер 1100 содержит: блок 1110 определения, выполненный с возможностью определения того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения, блок 1120 кодирования, выполненный с возможностью кодирования синтаксического элемента уровня изображения в заголовке изображения текущего изображения на основе определения того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения, где синтаксический элемент уровня изображения используется для указания того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения. Блок 1120 кодирования дополнительно выполнен с возможностью кодирования, в случае, когда адаптивная контурная фильтрация разрешена для текущего изображения, идентификатора набора параметров в заголовке изображения, где идентификатор набора параметров используется для указания первого набора параметров, содержащего набор параметров адаптивного контурного фильтра (ALF), и где временной идентификатор первого набора параметров устанавливается меньшим или равным временному идентификатору текущего изображения.
Блок 1120 кодирования может быть блоком 270 энтропийного кодирования. Блок 1110 определения может быть контурным фильтром 220. Кодер 1100 может быть устройством-источником 12, кодером 20 или устройством 500.
В качестве примера, но не ограничения, такие машиночитаемые носители информации могут содержать RAM, ROM, EEPROM, CD-ROM или другой накопитель на оптических дисках, накопитель на магнитных дисках или другие магнитные запоминающие устройства, флэш-память, или любой другой носитель информации, который может быть использован для хранения желаемого программного кода в виде инструкций или структур данных, и к которым может обращаться компьютер. Кроме того, любое соединение называется соответствующим образом машиночитаемым носителем информации. Например, если инструкции передаются из веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная, радио- и микроволновая, то коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасные, радио- и микроволновые, включены в определение носителя информации. Однако следует понимать, что машиночитаемые носители информации и носители для хранения данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, и вместо этого направлены на невременные, материальные носители информации. Используемые в данном документе термины "магнитный диск" и "оптический диск" включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий магнитный диск и Blu-ray диск, где магнитные диски, как правило, воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптическим способом с помощью лазеров, Комбинации вышеупомянутых носителей информации также должны быть включены в объем охраны машиночитаемых носителей информации.
Команды могут исполняться одним или несколькими процессорами, такими как один или более процессоров цифровых сигналов (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA) или другие эквивалентные интегрированные или дискретные логические схемы. Соответственно, используемый в данном документе термин "процессор" может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации описанных в данном документе технологий. Кроме того, в некоторых аспектах описанные в данном документе функциональные возможности могут быть предоставлены в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования и декодирования или включенных в объединенный кодек. Кроме того, технологии могут быть также полностью реализованы в одной или более схемах или логических элементах.
Технологии настоящего раскрытия могут быть реализованы в большом количестве устройств или устройств, включая беспроводной телефон, интегральную схему (IC) или набор IC (например, набор микросхем). В настоящем раскрытии описаны различные компоненты, модули или блоки для того, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но необязательно требующих реализации с помощью различных аппаратных блоков. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены набором взаимодействующих аппаратных блоков, включая один или более процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или программно-аппаратными средствами.
Изобретение относится к области обработки изображений и, в частности, к синтаксическим элементам высокого уровня. Техническим результатом является повышение эффективности технологии сжатия и распаковки изображений. Результат достигается тем, что способ декодирования кодированного битового видеопотока содержит следующие этапы: получение синтаксического элемента уровня изображения, включенного в заголовок изображения текущего изображения, путем синтаксического анализа битового видеопотока, где синтаксический элемент уровня изображения используется для указания того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения; в случае, когда синтаксический элемент уровня изображения указывает то, что адаптивная контурная фильтрация разрешена для текущего изображения, получение идентификатора набора параметров, включенного в заголовок изображения, где идентификатор набора параметров используется для указания первого набора параметров, содержащего набор параметров ALF, и где временной идентификатор первого набора параметров меньше или равен временному идентификатору текущего изображения; выполнение адаптивной контурной фильтрации по меньшей мере над одним срезом текущего изображения на основе первого набора параметров. 10 н. и 5 з.п. ф-лы, 12 ил., 1 табл.
1. Способ декодирования битового видеопотока, реализуемый устройством декодирования, причем битовый видеопоток включает в себя данные, представляющие текущее изображение, содержащий этапы, на которых:
получают синтаксический элемент уровня изображения, содержащийся в заголовке изображения текущего изображения, посредством синтаксического анализа битового видеопотока, причем синтаксический элемент уровня изображения используется для указания того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения;
получают, когда синтаксический элемент уровня изображения указывает, что адаптивная контурная фильтрация разрешена для текущего изображения, первый идентификатор набора параметров, содержащийся в заголовке изображения, причем первый идентификатор набора параметров используется для указания первого набора параметров, содержащего набор параметров ALF, при этом временной идентификатор первого набора параметров меньше или равен временному идентификатору текущего изображения; и
выполняют адаптивную контурную фильтрацию по меньшей мере одного среза текущего изображения на основе первого набора параметров.
2. Способ по п.1, в котором этап выполнения адаптивной контурной фильтрации по меньшей мере одного среза текущего изображения на основе первого набора параметров содержит подэтап, на котором: выполняют адаптивную контурную фильтрацию компоненты яркости по меньшей мере одного среза текущего изображения на основе первого набора параметров.
3. Способ по п.2, дополнительно содержащий этапы, на которых: получают, когда синтаксический элемент уровня изображения указывает, что адаптивная контурная фильтрация разрешена для текущего изображения, второй идентификатор набора параметров, содержащийся в заголовке изображения, причем второй идентификатор набора параметров используется для указания второго набора параметров, содержащего набор параметров ALF, при этом временной идентификатор второго набора параметров меньше или равен временному идентификатору текущего изображения; и выполняют адаптивную контурную фильтрацию компоненты цветности по меньшей мере одного среза текущего изображения на основе второго набора параметров.
4. Способ кодирования битового видеопотока, реализуемый устройством кодирования, причем битовый видеопоток включает в себя данные, представляющие текущее изображение, содержащий этапы, на которых:
определяют, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения;
кодируют синтаксический элемент уровня изображения в заголовке изображения текущего изображения на основе определения того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения, причем синтаксический элемент уровня изображения используется для указания того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения; и
кодируют, когда адаптивная контурная фильтрация разрешена для текущего изображения, первый идентификатор набора параметров в заголовке изображения, причем первый идентификатор набора параметров используется для указания первого набора параметров, содержащего набор параметров адаптивной контурной фильтрации (ALF), при этом временной идентификатор первого набора параметров установлен меньшим или равным временному идентификатору текущего изображения.
5. Способ по п.4, дополнительно содержащий этап, на котором: кодируют временной идентификатор первого набора параметров и временной идентификатор текущего изображения в битовом видеопотоке.
6. Способ по п.4 или 5, в котором первый набор параметров содержит набор параметров адаптивной контурной фильтрации (ALF), выполняемой над компонентом яркости по меньшей мере одного среза текущего изображения.
7. Способ по п.6, дополнительно содержащий этап, на котором: кодируют, когда синтаксический элемент уровня изображения указывает, что адаптивная контурная фильтрация разрешена для текущего изображения, второй идентификатор набора параметров в заголовке изображения, причем второй идентификатор набора параметров используется для указания второго набора параметров, содержащего набор параметров адаптивной контурной фильтрации (ALF), выполняемой для компоненты цветности по меньшей мере одного среза текущего изображения, при этом временной идентификатор второго набора параметров установлен меньшим или равным временному идентификатору текущего изображения.
8. Кодер, содержащий схему обработки, выполненную с возможностью реализации способа по любому из пп.4-7.
9. Декодер, содержащий схему обработки, выполненную с возможностью реализации способа по любому из пп.1-3.
10. Декодер, содержащий:
один или более процессоров; и
энергонезависимый машиночитаемый носитель информации, соединенный с процессорами и хранящий программу, вызывающую, при исполнении процессорами, конфигурирование декодера для выполнения способа по любому из пп.1-3.
11. Кодер, содержащий:
один или более процессоров; и
энергонезависимый машиночитаемый носитель информации, соединенный с процессорами и хранящий программу, вызывающую, при исполнении процессорами, конфигурирование кодера для выполнения способа по любому из пп.4-7.
12. Энергонезависимый машиночитаемый носитель информации, содержащий программный код, вызывающий, при его исполнении компьютерным устройством, выполнение, компьютерным устройством, способа по любому из пп.1-7.
13. Устройство сохранения битового потока, содержащее приемник и носитель хранения информации, причем приемник выполнен с возможностью приема одного или более битовых потоков; а носитель хранения информации выполнен с возможностью хранения указанных одного или более битовых потоков; причем
указанный битовый поток содержит множество синтаксических элементов, при этом множество синтаксических элементов содержит синтаксический элемент уровня изображения, содержащийся в заголовке изображения текущего изображения, где синтаксический элемент уровня изображения используется для указания того, разрешена ли адаптивная контурная фильтрация (ALF) для текущего изображения; в случае, когда синтаксический элемент уровня изображения указывает то, что адаптивная контурная фильтрация разрешена для текущего изображения, битовый поток дополнительно содержит первый идентификатор набора параметров, включенный в заголовок изображения, причем первый идентификатор набора параметров используется для указания первого набора параметров, содержащего набор параметров ALF, при этом временной идентификатор первого набора параметров устанавливается меньшим или равным временному идентификатору текущего изображения.
14. Устройство декодирования видеоданных, содержащее:
энергонезависимый носитель информации, выполненный с возможностью хранения видеоданных в виде битового потока; и
декодер, выполненный с возможностью реализации способа по любому из пп.1-3.
15. Устройство кодирования видеоданных, содержащее:
энергонезависимый носитель информации, выполненный с возможностью хранения видеоданных в виде битового потока; и
кодер, выполненный с возможностью реализации способа по любому из пп.4-7.
WO 2019069968 A1, 2019.04.11 | |||
US 2012207227 A1, 2012.08.16 | |||
US 2014294067 A1, 2014.10.02 | |||
US 2017332075 A1, 2017.11.16 | |||
US 2013343465 A1, 2013.12.26 | |||
US 2014049604 A1, 2014.02.20 | |||
СПОСОБ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ, СПОСОБ ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ, УСТРОЙСТВО КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ, УСТРОЙСТВО ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ И УСТРОЙСТВО КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ | 2013 |
|
RU2653236C2 |
Авторы
Даты
2025-02-03—Публикация
2020-12-30—Подача