[go: up one dir, main page]

RU2821429C1 - Prevention of redundant signaling in multilayer bit video streams - Google Patents

Prevention of redundant signaling in multilayer bit video streams Download PDF

Info

Publication number
RU2821429C1
RU2821429C1 RU2022111990A RU2022111990A RU2821429C1 RU 2821429 C1 RU2821429 C1 RU 2821429C1 RU 2022111990 A RU2022111990 A RU 2022111990A RU 2022111990 A RU2022111990 A RU 2022111990A RU 2821429 C1 RU2821429 C1 RU 2821429C1
Authority
RU
Russia
Prior art keywords
layer
dpb
ols
vps
image
Prior art date
Application number
RU2022111990A
Other languages
Russian (ru)
Inventor
Е-куй Ван
Original Assignee
Хуавей Текнолоджиз Ко., Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Хуавей Текнолоджиз Ко., Лтд. filed Critical Хуавей Текнолоджиз Ко., Лтд.
Application granted granted Critical
Publication of RU2821429C1 publication Critical patent/RU2821429C1/en

Links

Abstract

FIELD: physics.
SUBSTANCE: invention relates to video encoding techniques. Result is achieved by receiving a bit sub-stream having a sequence parameter set (SPS) with a decoded picture buffer (DPB) syntax for an output layer set (OLS) with one single layer; setting the number of layers in the OLS to a value equal to one, based on the fact that the OLS has one single layer; obtaining a DPB syntax structure for OLS with one layer from the SPS, when the number of layers in the OLS is equal to one; and the single layer image is decoded using the DPB syntax to obtain a decoded image.
EFFECT: high efficiency of video encoding.
18 cl, 11 dwg, 1 tbl

Description

Область техники, к которой относится изобретениеField of technology to which the invention relates

В общем, настоящее раскрытие описывает технологии для многослойных битовых видеопотоков при кодировании видео. Более конкретно, настоящее раскрытие описывает технологии устранения избыточности при параметрах сигнализации, соответствующих слоям в многослойном битовом потоке при кодировании видео.In general, the present disclosure describes techniques for multilayer video bitstreams in video encoding. More specifically, the present disclosure describes techniques for eliminating redundancy at signaling parameters corresponding to layers in a multilayer bitstream in video encoding.

Уровень техникиState of the art

Объем видеоданных, необходимых для отображения даже относительно короткого видео, может быть значительным, что может привести к трудностям в тех случаях, когда данные должны передаваться в потоковом режиме или передаваться иным образом по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед передачей по современным телекоммуникационным сетям. Размер видео также может быть проблемой, когда видео хранится в запоминающем устройстве, так как ресурсы памяти могут быть ограничены. Устройства для сжатия видео часто используют программное обеспечение и/или аппаратные средства в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Затем сжатые данные принимаются в пункте назначения устройством для распаковки видео, которое декодирует видеоданные. При ограниченных сетевых ресурсах и постоянно растущих требованиях к более высокому качеству видео желательны улучшенные технологии сжатия и распаковки, которые улучшают коэффициент сжатия практически без ущерба для качества изображения.The amount of video data required to display even a relatively short video can be significant, which can lead to difficulties in cases where the data must be streamed or otherwise transmitted over a communications network with limited bandwidth. Thus, video data is typically compressed before being transmitted over modern telecommunications networks. Video size can also be an issue when the video is stored in a storage device, as memory resources may be limited. Video compression devices often use software and/or hardware at the source to encode video data before transmission or storage, thereby reducing the amount of data required to represent digital video images. The compressed data is then received at its destination by a video decompressor, which decodes the video data. With limited network resources and ever-increasing demands for higher video quality, improved compression and decompression technologies are desired that improve the compression ratio with little or no sacrifice in image quality.

Раскрытие сущности изобретенияDisclosure of the invention

Первый аспект относится к способу декодирования, реализуемому видеодекодером и содержащему: прием, видеодекодером, битового подпотока, имеющего набор параметров последовательности (SPS) с синтаксической структурой буфера декодированных изображений (DPB) для набора слоев вывода (OLS) с одним единственным слоем; получение, видеодекодером, синтаксической структуры DPB для OLS с одним слоем из SPS; и декодирование, видеодекодером, изображения одного единственного слоя с использованием синтаксической структуры DPB для получения декодированного изображения.The first aspect relates to a decoding method implemented by a video decoder, comprising: receiving, by the video decoder, a bit substream having a sequence parameter set (SPS) with a decoded picture buffer (DPB) syntactic structure for an output layer set (OLS) with one single layer; obtaining, by the video decoder, a DPB syntax structure for the OLS with one layer from the SPS; and decoding, by the video decoder, the image of one single layer using a DPB syntax structure to obtain a decoded image.

Способ предусматривает технологии, которые обеспечивают включение параметров буфера декодированных изображений (DPB) в набор параметров последовательности (SPS) тогда, когда набор слоев вывода (OLS) содержит один единственный слой. Так как SPS включает в себя параметры DPB для OLS с одним слоем, набор параметров видео (VPS) может быть удален из битового потока, что уменьшает избыточность и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») при кодировании видео улучшен по сравнению с современными кодеками. С практической точки зрения улучшенный процесс кодирования видео обеспечивает пользователю лучшее пользовательское восприятие при отправке, приеме и/или просмотре видео.The method provides techniques that enable decoded picture buffer (DPB) parameters to be included in a sequence parameter set (SPS) when the output layer set (OLS) contains a single layer. Since SPS includes DPB parameters for single-layer OLS, the video parameter set (VPS) can be removed from the bitstream, reducing redundancy and improving coding efficiency. Thus, the encoder/decoder (aka "codec") for video encoding is improved compared to modern codecs. From a practical standpoint, the improved video encoding process provides the user with a better user experience when sending, receiving and/or viewing video.

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой синтаксическая структура DPB обозначается как dpb_parameters().As an alternative to any of the previous aspects, another implementation of the aspect is provided in which the DPB syntactic structure is denoted dpb_parameters().

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, где один единственный слой является i-м слоем, и где OLS является i-м OLS.As an alternative to any of the previous aspects, another implementation of the aspect is provided, wherein the single layer is the i-th layer, and wherein the OLS is the i-th OLS.

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой синтаксическая структура DPB присутствует в i-й синтаксической структуре dpb_parameters() в SPS.As an alternative to any of the previous aspects, another implementation of the aspect is provided in which the DPB syntax structure is present in the i-th dpb_parameters() syntax structure in the SPS.

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой битовый подпоток не включает в себя набор параметров видео (VPS).As an alternative to any of the previous aspects, another implementation of the aspect is provided wherein the bitstream does not include a video parameter set (VPS).

В качестве варианта в любом из предыдущих аспектов другая реализация аспекта предусматривает сохранение декодированного изображения в DPB перед отображением.As an alternative to any of the previous aspects, another implementation of the aspect involves storing the decoded image in the DPB before display.

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой на SPS ссылается один единственный слой в OLS.As an alternative to any of the previous aspects, another implementation of the aspect is provided in which the SPS is referenced by a single layer in the OLS.

В качестве варианта в любом из предыдущих аспектов другая реализация аспекта предусматривает отображение декодированного изображения на дисплее электронного устройства.As an alternative to any of the previous aspects, another implementation of the aspect involves displaying the decoded image on a display of an electronic device.

Второй аспект относится к способу кодирования, реализуемому видеокодером, причем способ содержит: выработку, видеокодером, набора параметров видео (VPS) и набора параметров последовательности (SPS), где VPS включает в себя список синтаксических структур буфера декодированных изображений (DPB) для всех наборов слоев вывода (OLS), и где SPS включает в себя синтаксическую структуру DPB для каждого OLS, имеющего один единственный слой; кодирование, видеокодером, VPS и SPS в битовый видеопоток; и сохранение, видеокодером, битового видеопотока для передачи в видеодекодер.The second aspect relates to an encoding method implemented by a video encoder, the method comprising: generating, by the video encoder, a video parameter set (VPS) and a sequence parameter set (SPS), wherein the VPS includes a list of decoded picture buffer (DPB) syntax structures for all sets of layers output (OLS), and where the SPS includes a DPB syntax structure for each OLS having one single layer; encoding, video encoder, VPS and SPS into a bit video stream; and storing, by the video encoder, the video bit stream for transmission to the video decoder.

Способ предусматривает технологии, которые обеспечивают включение параметров буфера декодированных изображений (DPB) в набор параметров последовательности (SPS) тогда, когда набор слоев вывода (OLS) содержит один единственный слой. Так как SPS включает в себя параметры DPB для OLS с одним слоем, набор параметров видео (VPS) может быть удален из битового потока, что уменьшает избыточность и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») при кодировании видео улучшен по сравнению с современными кодеками. Таким образом, кодер/декодер (он же «кодек») при кодировании видео улучшен по сравнению с современными кодеками.The method provides techniques that enable decoded picture buffer (DPB) parameters to be included in a sequence parameter set (SPS) when the output layer set (OLS) contains a single layer. Since SPS includes DPB parameters for single-layer OLS, the video parameter set (VPS) can be removed from the bitstream, reducing redundancy and improving coding efficiency. Thus, the encoder/decoder (aka "codec") for video encoding is improved compared to modern codecs. Thus, the encoder/decoder (aka "codec") for video encoding is improved compared to modern codecs.

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, где VPS включает в себя индекс для списка синтаксических структур DPB, и где индекс обозначается как vps_ols_dpb_params_idx[ i ].As an alternative to any of the previous aspects, another implementation of the aspect is provided where the VPS includes an index for a list of DPB syntax structures, and where the index is denoted vps_ols_dpb_params_idx[i].

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой значение vps_ols_dpb_params_idx[ i ] находится в диапазоне от нуля до общего количества синтаксических структур DPB в VPS.As an alternative to any of the previous aspects, another implementation of the aspect is provided in which the value of vps_ols_dpb_params_idx[ i ] ranges from zero to the total number of DPB syntax structures in the VPS.

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой VPS включает в себя vps_num_dpb_params_minus1, и где vps_num_dpb_params_minus1 плюс 1 указывает общее количество синтаксических структур DPB в VPS.As an alternative to any of the previous aspects, another implementation of the aspect is provided wherein the VPS includes vps_num_dpb_params_minus1, and where vps_num_dpb_params_minus1 plus 1 indicates the total number of DPB syntax structures in the VPS.

В качестве варианта в любом из предыдущих аспектов другая реализация аспекта предусматривает извлечение битового подпотока из битового потока, причем битовый подпоток включает в себя SPS из битового потока, но не включает в себя VPS из битового потока.As an option in any of the previous aspects, another implementation of the aspect involves extracting a subbitstream from the bitstream, wherein the subbitstream includes an SPS from the bitstream but does not include a VPS from the bitstream.

В качестве варианта в любом из предыдущих аспектов другая реализация аспекта предусматривает передачу битового подпотока в видеодекодер.As an alternative to any of the previous aspects, another implementation of the aspect provides for transmitting the bit substream to a video decoder.

Третий аспект относится к устройству декодирования, содержащему: приемник, выполненный с возможностью приема битового подпотока, имеющего набор параметров последовательности (SPS) с синтаксической структурой буфера декодированных изображений (DPB) для набора слоев вывода (OLS) с одним единственным слоем; и процессор, подключенный к памяти, причем процессор выполнен с возможностью исполнения инструкций, которые предписывают устройству декодирования: установить количество слоев в OLS на значение, равное единице, на основании того, что OLS имеет один единственный слой; получить синтаксическую структуру DPB для OLS с одним слоем из SPS, когда количество слоев в OLS равно единице; и декодировать изображение одного единственного слоя с использованием синтаксической структуры DPB для получения декодированного изображения.The third aspect relates to a decoding apparatus comprising: a receiver configured to receive a bit substream having a sequence parameter set (SPS) with a decoded picture buffer (DPB) syntax structure for an output layer set (OLS) with one single layer; and a processor coupled to the memory, wherein the processor is configured to execute instructions that instruct the decoding device to: set the number of layers in the OLS to a value equal to one based on the fact that the OLS has one single layer; obtain the syntactic structure of DPB for OLS with one layer from SPS when the number of layers in OLS is one; and decode the image of one single layer using a DPB syntax structure to obtain a decoded image.

Устройство декодирования предоставляет технологии, обеспечивающие включение параметров буфера декодированных изображений (DPB) в набор параметров последовательности (SPS) тогда, когда набор слоев вывода (OLS) содержит один единственный слой. Так как SPS включает в себя параметры DPB для OLS с одним слоем, набор параметров видео (VPS) может быть удален из битового потока, что уменьшает избыточность и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») при кодировании видео улучшен по сравнению с современными кодеками. С практической точки зрения улучшенный процесс кодирования видео обеспечивает пользователю лучшее пользовательское восприятие при отправке, приеме и/или просмотре видео.The decoder provides technologies to enable decoded picture buffer (DPB) parameters to be included in a sequence parameter set (SPS) when the output layer set (OLS) contains a single layer. Since SPS includes DPB parameters for single-layer OLS, the video parameter set (VPS) can be removed from the bitstream, reducing redundancy and improving coding efficiency. Thus, the encoder/decoder (aka "codec") for video encoding is improved compared to modern codecs. From a practical standpoint, the improved video encoding process provides the user with a better user experience when sending, receiving and/or viewing video.

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, где синтаксическая структура DPB обозначается как dpb_parameters(), где одним единственным слоем является i-й слой, и где OLS является i-м OLS.As an alternative to any of the previous aspects, another implementation of the aspect is provided wherein the syntactic structure of the DPB is denoted dpb_parameters(), where the single layer is the i-th layer, and where the OLS is the i-th OLS.

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой синтаксическая структура DPB присутствует в i-й синтаксической структуре dpb_parameters() в SPS.As an alternative to any of the previous aspects, another implementation of the aspect is provided in which the DPB syntax structure is present in the i-th dpb_parameters() syntax structure in the SPS.

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой битовый подпоток не включает в себя набор параметров видео (VPS).As an alternative to any of the previous aspects, another implementation of the aspect is provided wherein the subbitstream does not include a video parameter set (VPS).

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой на SPS ссылается один единственный слой в OLS.As an alternative to any of the previous aspects, another implementation of the aspect is provided in which the SPS is referenced by a single layer in the OLS.

В качестве варианта в любом из предыдущих аспектов другая реализация аспекта предусматривает дисплей, выполненный с возможностью отображения декодированного изображения.As an option in any of the previous aspects, another implementation of the aspect provides a display configured to display a decoded image.

Четвертый аспект относится к устройству кодирования, содержащему: память, содержащую инструкции; процессор, подключенный к памяти, причем процессор выполнен с возможностью реализации инструкций, которые предписывают устройству кодирования: выработать набор параметров видео (VPS) и набор параметров последовательности (SPS), где VPS включает в себя список буферов декодированных изображений (DPB). ) синтаксические структуры для всех наборов слоев вывода (OLS), где SPS включает в себя синтаксическую структуру DPB для каждого OLS, имеющего один единственный слой; и кодировать VPS и SPS в битовый видеопоток; и передатчик, подключенный к процессору, причем передатчик выполнен с возможностью передачи битового видеопотока в видеодекодер.The fourth aspect relates to an encoding device comprising: a memory containing instructions; a processor coupled to the memory, wherein the processor is configured to implement instructions that instruct the encoding device to: generate a video parameter set (VPS) and a sequence parameter set (SPS), where the VPS includes a list of decoded picture buffers (DPBs). ) syntax structures for all output layer sets (OLS), where the SPS includes a DPB syntax structure for each OLS having one single layer; and encode VPS and SPS into a video bitstream; and a transmitter coupled to the processor, wherein the transmitter is configured to transmit the video bit stream to the video decoder.

Устройство кодирования предусматривает технологии, которые обеспечивают включение параметров буфера декодированных изображений (DPB) в набор параметров последовательности (SPS) тогда, когда набор слоев вывода (OLS) содержит один единственный слой. Так как SPS включает в себя параметры DPB для OLS с одним слоем, набор параметров видео (VPS) может быть удален из битового потока, что уменьшает избыточность и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») при кодировании видео улучшен по сравнению с современными кодеками. С практической точки зрения улучшенный процесс кодирования видео обеспечивает пользователю лучшее пользовательское восприятие при отправке, приеме и/или просмотре видео.The encoding apparatus provides techniques that enable decoded picture buffer (DPB) parameters to be included in a sequence parameter set (SPS) when the output layer set (OLS) contains a single layer. Since SPS includes DPB parameters for single-layer OLS, the video parameter set (VPS) can be removed from the bitstream, reducing redundancy and improving coding efficiency. Thus, the encoder/decoder (aka "codec") for video encoding is improved compared to modern codecs. From a practical standpoint, the improved video encoding process provides the user with a better user experience when sending, receiving and/or viewing video.

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, где VPS включает в себя индекс для списка синтаксических структур DPB, и где индекс обозначается как vps_ols_dpb_params_idx[ i ].As an alternative to any of the previous aspects, another implementation of the aspect is provided where the VPS includes an index for a list of DPB syntax structures, and where the index is denoted vps_ols_dpb_params_idx[i].

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой значение vps_ols_dpb_params_idx[ i ] находится в диапазоне от нуля до общего количества синтаксических структур DPB в VPS.As an alternative to any of the previous aspects, another implementation of the aspect is provided in which the value of vps_ols_dpb_params_idx[ i ] ranges from zero to the total number of DPB syntax structures in the VPS.

В качестве варианта в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой VPS включает в себя vps_num_dpb_params_minus1, и где vps_num_dpb_params_minus1 плюс 1 указывает общее количество синтаксических структур DPB в VPS.As an alternative to any of the previous aspects, another implementation of the aspect is provided wherein the VPS includes vps_num_dpb_params_minus1, and where vps_num_dpb_params_minus1 plus 1 indicates the total number of DPB syntax structures in the VPS.

Пятый аспект относится к устройству кодирования. Устройство кодирования включает в себя приемник, выполненный с возможностью приема изображения для кодирования или приема битового потока для декодирования; передатчик, подключенный к приемнику, причем передатчик выполнен с возможностью передачи битового потока в декодер или передачи декодированного изображения в дисплей; память, подключенную по меньшей мере к одному из: приемника или передатчика, причем память выполнена с возможностью хранения инструкций; и процессор, подключенный к памяти, причем процессор выполнен с возможностью исполнения инструкций, хранящихся в памяти, для выполнения любого из способов, раскрытых в данном документе.The fifth aspect relates to the encoding device. The encoding device includes a receiver configured to receive an image for encoding or receive a bitstream for decoding; a transmitter connected to the receiver, wherein the transmitter is configured to transmit a bit stream to a decoder or transmit a decoded image to a display; a memory connected to at least one of: a receiver or a transmitter, the memory being configured to store instructions; and a processor coupled to the memory, the processor configured to execute instructions stored in the memory to perform any of the methods disclosed herein.

Устройство кодирования предусматривает технологии, которые обеспечивают включение параметров буфера декодированных изображений (DPB) в набор параметров последовательности (SPS) тогда, когда набор слоев вывода (OLS) содержит один единственный слой. Так как SPS включает в себя параметры DPB для OLS с одним слоем, набор параметров видео (VPS) может быть удален из битового потока, что уменьшает избыточность и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») при кодировании видео улучшен по сравнению с современными кодеками. С практической точки зрения улучшенный процесс кодирования видео обеспечивает пользователю лучшее пользовательское восприятие при отправке, приеме и/или просмотре видео.The encoding apparatus provides techniques that enable decoded picture buffer (DPB) parameters to be included in a sequence parameter set (SPS) when the output layer set (OLS) contains a single layer. Since SPS includes DPB parameters for single-layer OLS, the video parameter set (VPS) can be removed from the bitstream, reducing redundancy and improving coding efficiency. Thus, the encoder/decoder (aka "codec") for video encoding is improved compared to modern codecs. From a practical standpoint, the improved video encoding process provides the user with a better user experience when sending, receiving and/or viewing video.

В качестве варианта в любом из предыдущих аспектов другая реализация аспекта предусматривает дисплей, выполненный с возможностью отображения декодированного изображения.As an option in any of the previous aspects, another implementation of the aspect provides a display configured to display a decoded image.

Шестой аспект относится к системе. Система включает в себя кодер; и декодер, взаимодействующий с кодером, причем кодер или декодер включает в себя устройство декодирования, устройство кодирования или устройство кодирования, раскрытые в данном документе.The sixth aspect relates to the system. The system includes an encoder; and a decoder operative with the encoder, wherein the encoder or decoder includes a decoding apparatus, an encoding apparatus, or an encoding apparatus disclosed herein.

Система предусматривает технологии, которые обеспечивают включение параметров буфера декодированных изображений (DPB) в набор параметров последовательности (SPS) тогда, когда набор слоев вывода (OLS) содержит один единственный слой. Так как SPS включает в себя параметры DPB для OLS с одним слоем, набор параметров видео (VPS) может быть удален из битового потока, что уменьшает избыточность и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») при кодировании видео улучшен по сравнению с современными кодеками. С практической точки зрения улучшенный процесс кодирования видео обеспечивает пользователю лучшее пользовательское восприятие при отправке, приеме и/или просмотре видео.The system provides technologies that enable decoded picture buffer (DPB) parameters to be included in a sequence parameter set (SPS) when the output layer set (OLS) contains a single layer. Since SPS includes DPB parameters for single-layer OLS, the video parameter set (VPS) can be removed from the bitstream, reducing redundancy and improving coding efficiency. Thus, the encoder/decoder (aka "codec") for video encoding is improved compared to modern codecs. From a practical standpoint, the improved video encoding process provides the user with a better user experience when sending, receiving and/or viewing video.

Седьмой аспект относится к средству кодирования. Средство кодирования включает в себя средство приема, выполненное с возможностью приема изображения для кодирования или приема битового потока для декодирования; средство передачи, подключенное к средству приема, причем средство передачи выполнено с возможностью передачи битового потока в средство декодирования или передачи декодированного изображения в средство отображения; средство хранения, подключенное по меньшей мере к одному из: средства приема или средства передачи, причем средство хранения выполнено с возможностью хранения инструкций; и средство обработки, подключенное к средству хранения, причем средство обработки выполнено с возможностью исполнения инструкций, хранящихся в средстве хранения, для выполнения любого из способов, раскрытых в данном документе.The seventh aspect relates to the encoding medium. The encoding means includes receiving means configured to receive an image for encoding or receive a bit stream for decoding; transmission means connected to the reception means, wherein the transmission means is configured to transmit a bit stream to the decoding means or transmit a decoded image to the display means; storage means connected to at least one of: receiving means or transmitting means, wherein the storage means is configured to store instructions; and processing means connected to the storage means, wherein the processing means is configured to execute instructions stored in the storage means to perform any of the methods disclosed herein.

Средство кодирования предусматривает технологии, которые обеспечивают включение параметров буфера декодированных изображений (DPB) в набор параметров последовательности (SPS) тогда, когда набор слоев вывода (OLS) содержит один единственный слой. Так как SPS включает в себя параметры DPB для OLS с одним слоем, набор параметров видео (VPS) может быть удален из битового потока, что уменьшает избыточность и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») при кодировании видео улучшен по сравнению с современными кодеками. С практической точки зрения улучшенный процесс кодирования видео обеспечивает пользователю лучшее пользовательское восприятие при отправке, приеме и/или просмотре видео.The encoding engine provides techniques that enable decoded picture buffer (DPB) parameters to be included in a sequence parameter set (SPS) when the output layer set (OLS) contains a single layer. Since SPS includes DPB parameters for single-layer OLS, the video parameter set (VPS) can be removed from the bitstream, reducing redundancy and improving coding efficiency. Thus, the encoder/decoder (aka "codec") for video encoding is improved compared to modern codecs. From a practical standpoint, the improved video encoding process provides the user with a better user experience when sending, receiving and/or viewing video.

В целях ясности любой из вышеизложенных вариантов осуществления может быть объединен с любым одним или несколькими другими вышеизложенными вариантами осуществления для создания нового варианта осуществления в пределах объема настоящего раскрытия.For purposes of clarity, any of the above embodiments may be combined with any one or more other embodiments above to create a new embodiment within the scope of this disclosure.

Эти и другие признаки станут более понятными из последующего подробного описания, рассматриваемого совместно с сопроводительными чертежами и формулой изобретения.These and other features will become more apparent from the following detailed description, taken in conjunction with the accompanying drawings and claims.

Краткое описание чертежейBrief description of drawings

Для более полного понимания настоящего раскрытия теперь делается ссылка на последующее краткое описание, приведенное совместно с сопроводительными чертежами и подробным описанием, в котором одинаковые ссылочные позиции обозначают одинаковые части.For a more complete understanding of the present disclosure, reference is now made to the following brief description, taken in conjunction with the accompanying drawings and detailed description, in which like reference numerals denote like parts.

Фиг. 1 - блок-схема последовательности операций примерного способа кодирования видеосигнала.Fig. 1 is a flowchart of an exemplary method for encoding a video signal.

Фиг. 2 - схематичное представление примерной системы кодирования и декодирования (кодека) для кодирования видео.Fig. 2 is a schematic diagram of an exemplary encoding and decoding system (codec) for video encoding.

Фиг. 3 - схематичное представление, иллюстрирующее примерный видеокодер.Fig. 3 is a schematic diagram illustrating an exemplary video encoder.

Фиг. 4 - схематичное представление, иллюстрирующее примерный видеодекодер.Fig. 4 is a schematic diagram illustrating an exemplary video decoder.

Фиг. 5 - пример многослойного кодирования для пространственной масштабируемости.Fig. 5 is an example of multilayer coding for spatial scalability.

Фиг. 6 - пример многослойного кодирования с использованием наборов слоев вывода (OLS).Fig. 6 is an example of multi-layer encoding using output layer sets (OLS).

Фиг. 7 - вариант осуществления битового видеопотока.Fig. 7 is an embodiment of a video bit stream.

Фиг. 8 - вариант осуществления способа декодирования кодированного битового видеопотока.Fig. 8 illustrates an embodiment of a method for decoding an encoded video bit stream.

Фиг. 9 - вариант осуществления способа кодирования кодированного битового видеопотока.Fig. 9 is an embodiment of a method for encoding a coded video bit stream.

Фиг. 10 - схематичное представление устройства для кодирования видео.Fig. 10 is a schematic diagram of a video encoding apparatus.

Фиг. 11 - схематичное представление варианта осуществления средства кодирования.Fig. 11 is a schematic diagram of an embodiment of an encoding means.

Осуществление изобретенияCarrying out the invention

Прежде всего, следует отметить, что, хотя иллюстративная реализация одного или более вариантов осуществления представлена ниже, раскрытые системы и/или способы могут быть реализованы с использованием любого количества технологий, известных в настоящее время или уже существующих. Настоящее раскрытие никоим образом не должно быть ограничено иллюстративными реализациями, чертежами и технологиями, проиллюстрированными ниже, включая иллюстративные конструкции и реализации, проиллюстрированные и описанные в данном документе, но может быть изменено в пределах объема прилагаемой формулы изобретения вместе с их полным объемом эквивалентов.First, it should be noted that while an illustrative implementation of one or more embodiments is presented below, the disclosed systems and/or methods may be implemented using any number of technologies currently known or existing. The present disclosure is not to be limited in any way to the illustrative implementations, drawings and techniques illustrated below, including the illustrative designs and implementations illustrated and described herein, but may be varied within the scope of the appended claims along with their full scope of equivalents.

Приведенные ниже термины определяются следующим образом, если они не используются в данном контексте в противоположном контексте. В частности, следующие определения предназначены для обеспечения дополнительной ясности настоящего раскрытия. Однако термины могут быть описаны по-разному в разных контекстах. Соответственно, приведенные ниже определения следует рассматривать как дополнение и не следует рассматривать как ограничение любых других определений описаний, представленных для таких терминов в данном документе.The following terms are defined as follows unless otherwise used herein. In particular, the following definitions are intended to provide further clarity of this disclosure. However, the terms may be described differently in different contexts. Accordingly, the definitions below should be considered in addition to, and should not be construed as limiting, any other definitions of the descriptions provided for such terms herein.

Битовый поток - это последовательность битов, включающая в себя видеоданные, которые сжимают для передачи между кодером и декодером. Кодер - это устройство, которое выполнено с возможностью использования процессов кодирования для сжатия видеоданных в битовый поток. Декодер - это устройство, которое выполнено с возможностью использования процессов декодирования для восстановления видеоданных из битового поток для отображения. Изображение представляет собой массив выборок яркости и/или массив выборок цветности, которые создают кадр или его область. Изображение, которое кодируется или декодируется, для ясности обсуждения может называться текущим изображением. Опорное изображение представляет собой изображение, которое содержит опорные выборки, которые можно использовать при кодировании других изображений по ссылке в соответствии с межкадровым предсказанием и/или межслойным предсказанием. Список опорных изображений представляет собой список опорных изображений, используемых для межкадрового предсказания и/или межслойного предсказания. Некоторые системы кодирования видео используют два списка опорных изображений, которые можно обозначить как список 1 (один) опорных изображений и список 0 (ноль) опорных изображений. Структура списка опорных изображений представляет собой адресуемую синтаксическую структуру, которая содержит несколько списков опорных изображений.A bitstream is a sequence of bits comprising video data that is compressed for transmission between an encoder and a decoder. An encoder is a device that is configured to use encoding processes to compress video data into a bitstream. A decoder is a device that is configured to use decoding processes to recover video data from a bitstream for display. An image is an array of luma samples and/or an array of chrominance samples that create a frame or region of it. The image that is being encoded or decoded may be referred to as the current image for clarity of discussion. A reference picture is an image that contains reference samples that can be used when encoding other pictures by reference in accordance with inter-picture prediction and/or inter-layer prediction. The reference picture list is a list of reference pictures used for inter-picture prediction and/or inter-layer prediction. Some video encoding systems use two reference picture lists, which can be referred to as reference picture list 1 (one) and reference picture list 0 (zero). The reference picture list structure is an addressable syntactic structure that contains multiple reference picture lists.

Межкадровое предсказание представляет собой механизм кодирования выборок текущего изображения путем ссылки на указанные выборки в опорном изображении, которое отличается от текущего изображения, где опорное изображение и текущее изображение находятся в одном и том же слое. Запись структуры списка опорных изображений представляет собой адресуемую ячейку в структуре списка опорных изображений, которая указывает опорное изображение, ассоциированное со списком опорных изображений.Inter-frame prediction is a mechanism for encoding samples of a current image by referring to said samples in a reference image that is different from the current image, where the reference image and the current image are in the same layer. A reference picture list structure entry is an addressable cell in the reference picture list structure that specifies a reference picture associated with the reference picture list.

Заголовок среза является частью кодированного среза, содержащего элементы данных, относящиеся ко всем видеоданным в тайле, представленном в срезе. Набор параметров изображения (PPS) представляет собой набор параметров, который содержит данные, относящиеся ко всему изображению. Более конкретно, PPS представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются к нулевому или более полным кодированным изображениям, что определяется синтаксическим элементом, находящимся в каждом заголовке изображения. Набор параметров последовательности (SPS) представляет собой набор параметров, который содержит данные, относящиеся к последовательности изображений. Единица доступа (AU) представляет собой набор из одного или более кодированных изображений, ассоциированных с одним и тем же временем отображения (например, одним и тем же счетчиком очередности изображений) для вывода из буфера декодированных изображений (DPB) (например, для отображения пользователю). Разделитель единиц доступа (AUD) представляет собой индикатор или структуру данных, используемую для указания начала AU или границы между AU. Декодированная видеопоследовательность является последовательностью изображений, восстановленных декодером при подготовке к отображению пользователю.The slice header is part of an encoded slice containing data elements related to all video data in the tile represented in the slice. A picture parameter set (PPS) is a set of parameters that contains data related to the entire image. More specifically, a PPS is a syntax structure containing syntax elements that apply to zero or more complete encoded pictures, as determined by a syntax element found in each picture header. A sequence parameter set (SPS) is a set of parameters that contains data related to a sequence of images. An access unit (AU) is a set of one or more encoded pictures associated with the same display time (e.g., the same picture queue counter) for output from a decoded picture buffer (DPB) (e.g., for display to a user) . An Access Unit Delimiter (AUD) is an indicator or data structure used to indicate the start of an AU or the boundary between AUs. The decoded video sequence is a sequence of images reconstructed by the decoder in preparation for display to the user.

Единица слоя сетевой абстракции (NAL) представляет собой синтаксическую структуру, содержащую данные в виде необработанных полезных данных последовательности байтов (RBSP), указатель типа данных и чередующиеся по желанию байты предотвращения эмуляции. Единица NAL слоя кодирования видео (VCL) представляет собой единицу NAL, кодированную таким образом, чтобы она содержала видеоданные, такие как кодированный срез изображения. Единица NAL без VCL представляет собой единицу NAL, которая содержит данные, не относящиеся к видео, такие как синтаксис и/или параметры, которые поддерживают декодирование видеоданных, выполнение проверки на соответствие или другие операции. Слой представляет собой набор единиц NAL VCL, которые совместно используют заданную характеристику (например, общее разрешение, частоту кадров, размер изображения и т.д.), и ассоциированные единицы NAL без VCL. Единицы NAL VCL слоя могут совместно использовать конкретное значение идентификатора слоя заголовка единицы NAL (nuh_layer_id). Кодированное изображение представляет собой кодированное представление изображения, содержащее единицы NAL VCL с конкретным значением идентификатора слоя заголовка единицы NAL (nuh_layer_id) в единице доступа (AU) и содержащее все единицы дерева кодирования (CTU) изображения. Декодированное изображение представляет собой изображение, полученное путем применения процесса декодирования к кодированному изображению.A Network Abstraction Layer (NAL) unit is a syntactic structure containing raw byte sequence payload (RBSP) data, a data type indicator, and optionally interleaved emulation prevention bytes. A video coding layer (VCL) NAL unit is a NAL unit encoded to contain video data, such as a coded image slice. A non-VCL NAL unit is a NAL unit that contains non-video data, such as syntax and/or parameters that support decoding video data, performing conformance checking, or other operations. A layer is a collection of VCL NAL units that share a given characteristic (eg, overall resolution, frame rate, image size, etc.) and associated non-VCL NAL units. Layer VCL NAL units can share a specific NAL unit header layer identifier value (nuh_layer_id). A coded picture is a coded representation of the picture containing VCL NAL units with a specific NAL unit header layer identifier value (nuh_layer_id) in the access unit (AU) and containing all the coding tree units (CTUs) of the picture. A decoded image is an image obtained by applying a decoding process to an encoded image.

Набор слоев вывода (OLS) - это набор слоев, для которого один или более слоев задаются в виде одного или более слоев вывода. Слой вывода представляет собой слой, предназначенный для вывода (например, на дисплей). Нулевой (0-й) OLS - это OLS, который содержит только нижний слой (слой с идентификатором нижнего слоя) и, следовательно, содержит только слой вывода. Количество слоев в OLS может быть обозначено синтаксическим элементом, обозначенным NumLayersInOLS. Набор параметров видео (VPS) представляет собой блок данных, который содержит параметры, относящиеся ко всему видео. Межслойное предсказание представляет собой механизм кодирования текущего изображения в текущем слое путем ссылки на опорное изображение в ссылочном слое, где текущее изображение и опорное изображение включены в одну и ту же AU, и опорный слой включает в себя более низкий nuh_layer_id, чем текущий слой.An output layer set (OLS) is a layer set for which one or more layers are defined as one or more output layers. The output layer is a layer intended for output (for example, to a display). A null (0th) OLS is an OLS that contains only the bottom layer (the layer with the bottom layer ID) and therefore only contains the output layer. The number of layers in an OLS can be indicated by a syntax element denoted NumLayersInOLS. A video parameter set (VPS) is a block of data that contains parameters relevant to the entire video. Inter-layer prediction is a mechanism for encoding the current image in the current layer by referring to a reference image in the reference layer, where the current image and the reference image are included in the same AU, and the reference layer includes a lower nuh_layer_id than the current layer.

Профиль представляет собой определенный набор инструментов кодирования, используемых для создания совместимого или соответствующего битового потока. Каждый профиль определяет подмножество алгоритмических функций и ограничений, которые должны поддерживаться всеми декодерами, соответствующими этому профилю. Ранги и уровни - это ограничения, которые определяют битовый поток с точки зрения максимальной скорости передачи данных, максимальной частоты дискретизации яркости, максимального размера изображения яркости, минимальной степени сжатия, максимального количества разрешенных срезов и максимального количества разрешенных тайлов. Нижние слои ограничены в большей степени, чем более высокие слои, и более низкие слои ограничены в большей степени, чем более высокие уровни. Параметры профиля, ранга и уровня (PTL) представляют собой синтаксическую структуру, предоставляющую информацию о профиле, ранге и/или уровне.A profile is a specific set of encoding tools used to create a compatible or conforming bitstream. Each profile defines a subset of algorithmic features and constraints that must be supported by all decoders conforming to that profile. Ranks and levels are constraints that define a bitstream in terms of maximum bit rate, maximum luminance sampling rate, maximum luminance image size, minimum compression ratio, maximum number of slices allowed, and maximum number of tiles allowed. Lower layers are constrained to a greater extent than higher layers, and lower layers are constrained to a greater extent than higher layers. Profile, Rank, and Level (PTL) parameters are a syntactic structure that provides profile, rank, and/or level information.

Масштабируемый во времени битовый поток представляет собой битовый поток, закодированный в множестве слоев, обеспечивающих различное временное разрешение/частоту кадров (например, каждый слой кодируется для поддержки разной частоты кадров). Подслой представляет собой масштабируемый во времени слой масштабируемого во времени битового потока, включающего в себя единицы NAL VCL с конкретным значением временного идентификатора и ассоциированные единицы NAL без VCL. Например, временной подслой - это слой, который содержит видеоданные, ассоциированные с заданной частотой кадров. Представлением подслоя является подмножество битового потока, содержащего единицы NAL конкретного подслоя и более низких подслоев. Таким образом, один или более временных подслоев могут быть объединены для достижения представления подслоя, которое может быть декодировано для получения видеопоследовательности с заданной частотой кадров. Индекс OLS - это индекс, который однозначно идентифицирует соответствующий OLS. Временной идентификатор (ID) - это элемент данных, указывающий, что данные соответствуют временному местоположению в видеопоследовательности. Процесс извлечения битового подпотока представляет собой процесс, который удаляет единицы NAL из битового потока, которые не принадлежат целевому набору, как это определено целевым индексом OLS и целевым наивысшим временным идентификатором. Результатом процесса извлечения битового подпотока является выходной битовый подпоток, содержащий единицы NAL из битового потока, которые являются частью целевого набора.A time-scaled bitstream is a bitstream encoded in multiple layers providing different temporal resolution/frame rates (eg, each layer is encoded to support a different frame rate). The sublayer is a time-scaled time-scaled bitstream layer including VCL NAL units with a specific temporal identifier value and associated non-VCL NAL units. For example, a temporal sublayer is a layer that contains video data associated with a given frame rate. A sublayer representation is a subset of a bitstream containing the NAL units of a particular sublayer and lower sublayers. Thus, one or more temporal sublayers can be combined to achieve a sublayer representation that can be decoded to obtain a video sequence at a given frame rate. An OLS index is an index that uniquely identifies the corresponding OLS. A temporal identifier (ID) is a data element indicating that the data corresponds to a temporal location in a video sequence. The substream bitstream extraction process is a process that removes NAL units from the bitstream that do not belong to the target set, as determined by the target OLS index and the target highest temporary identifier. The result of the bitstream extraction process is an output bitstream containing the NAL units from the bitstream that are part of the target set.

Гипотетический опорный декодер (HRD) представляет собой модель декодера, работающую в кодере, который проверяет изменчивость битовых потоков, создаваемых процессом кодирования, для проверки на соответствие заданным ограничениям. Тест на соответствие битового потока - это тест для определения того, соответствует ли кодированный битовый поток стандарту, такому как универсальное кодирование видео (VVC). Параметры HRD представляют собой синтаксические элементы, которые инициируют и/или определяют рабочие условия HRD. Параметры HRD на уровне последовательности представляют собой параметры HRD, которые применяются ко всей кодированной видеопоследовательности. Максимальный временной идентификатор (ID) HRD (hrd_max_tid[ i ]) указывает временной ID представления верхнего слоя, для которого параметры HRD содержатся в i-м наборе параметров HRD OLS. Синтаксическая структура общих параметров HRD (general_hrd_parameters) представляет собой синтаксическую структуру, которая содержит параметры HRD на уровне последовательности. Рабочая точка (OP) - это временное поднабор OLS, который идентифицируется индексом OLS и наибольшим временным ID. Тестируемая OP (targetOp) - это OP, выбранная для тестирования на соответствие в HRD. Целевой OLS - это OLS, выбранный для извлечения из битового потока. Флаг наличия параметров HRD единицы декодирования (decoding_unit_hrd_params_present_flag) является флагом, который указывает то, действуют ли соответствующие параметры HRD на уровне единицы декодирования (DU) или на уровне AU. Буфер кодированных изображений (CPB) представляет собой буфер обратного магазинного типа в HRD, который содержит кодированные изображения в порядке декодирования для использования во время проверки на соответствие битового потока. Буфер декодированных изображений (DPB) представляет собой буфер для хранения декодированных изображений для ссылки, переупорядочивания вывода и/или задержки вывода.A hypothetical reference decoder (HRD) is a decoder model running within an encoder that examines the variability of the bitstreams produced by the encoding process to test against specified constraints. A bitstream conformance test is a test to determine whether an encoded bitstream conforms to a standard such as Versatile Video Coding (VVC). HRD parameters are syntactic elements that initiate and/or define HRD operating conditions. Sequence-level HRD parameters are HRD parameters that apply to the entire encoded video sequence. The maximum HRD temporal identifier (ID) (hrd_max_tid[ i ]) specifies the temporal ID of the top layer view for which the HRD parameters are contained in the i-th OLS HRD parameter set. The syntactic structure of the general HRD parameters (general_hrd_parameters) is a syntactic structure that contains the HRD parameters at the sequence level. An operating point (OP) is a temporary subset of the OLS that is identified by the OLS index and the largest temporary ID. The OP under test (targetOp) is the OP selected for compliance testing in the HRD. The target OLS is the OLS selected to be extracted from the bitstream. The decoding unit HRD parameters present flag (decoding_unit_hrd_params_present_flag) is a flag that indicates whether the corresponding HRD parameters operate at the decoding unit (DU) level or at the AU level. The Coded Picture Buffer (CPB) is a reverse store buffer in HRD that holds coded pictures in decoding order for use during bitstream consistency checking. A decoded picture buffer (DPB) is a buffer for storing decoded pictures for reference, output reordering, and/or output delay.

Параметры буфера декодированных изображений (DPB) представляют собой синтаксическую структуру, которая обеспечивает размер DPB и в качестве варианта информацию о максимальном количестве переупорядочений изображений и максимальной задержке. Информация о максимальном количестве переупорядочений изображений и максимальной задержке может обобщенно обозначаться аббревиатурой MRML.Decoded picture buffer (DPB) parameters are a syntactic structure that provides the size of the DPB and optionally information about the maximum number of picture reorders and maximum delay. Information about the maximum number of image reorders and maximum delay can be collectively abbreviated as MRML.

В данном документе используются следующие сокращения: блок дерева кодирования (CTB), единица дерева кодирования (CTU), единица кодирования (CU), кодированная видеопоследовательность (CVS), объединенная группа экспертов по видео (JVET), набор тайлов с ограничением по движению (MCTS), максимальная единица передачи (MTU), слой сетевой абстракции (NAL), счетчик очередности изображений (POC), набор параметров изображения (PPS), необработанные полезные данные последовательности байтов (RBSP), набор параметров последовательности (SPS), универсальное кодирование видео (VVC) и рабочий проект (WD).The following abbreviations are used in this document: Coding Tree Block (CTB), Coding Tree Unit (CTU), Coding Unit (CU), Coded Video Sequence (CVS), Joint Video Expert Team (JVET), Motion Constrained Tile Set (MCTS) ), Maximum Transmission Unit (MTU), Network Abstraction Layer (NAL), Picture Queue Counter (POC), Picture Parameter Set (PPS), Raw Byte Sequence Payload (RBSP), Sequence Parameter Set (SPS), Universal Video Coding ( VVC) and working draft (WD).

На фиг. 1 показана блок-схема последовательности операций примерного способа 100 кодирования видеосигнала. В частности, видеосигнал кодируется в кодере. Процесс кодирования сжимает видеосигнал, используя различные механизмы, чтобы уменьшить размер видеофайла. Меньший размер файла позволяет передавать сжатый видеофайл пользователю, уменьшая при этом ассоциированные с этим издержки на полосу пропускания. Затем декодер декодирует сжатый видеофайл, чтобы восстановить исходный видеосигнал для отображения конечному пользователю. Процесс декодирования, как правило, повторяет процесс кодирования, что позволяет декодеру последовательно восстанавливать видеосигнал.In fig. 1 is a flowchart of an exemplary video encoding method 100. In particular, the video signal is encoded in the encoder. The encoding process compresses the video signal using various mechanisms to reduce the size of the video file. The smaller file size allows the compressed video file to be transmitted to the user while reducing the associated bandwidth overhead. The decoder then decodes the compressed video file to reconstruct the original video signal for display to the end user. The decoding process typically repeats the encoding process, allowing the decoder to reconstruct the video signal sequentially.

На этапе 101 видеосигнал вводится в кодер. Например, видеосигнал может быть несжатым видеофайлом, хранящимся в памяти. В качестве другого примера, видеофайл может быть захвачен устройством видеозахвата, таким как видеокамера, и кодирован для поддержки прямой потоковой передачи видео. Видеофайл может включать в себя как компонент аудио, так и компонент видео. Компонент видео содержит ряд кадров изображения, которые при последовательном просмотре создают визуальное впечатление движения. Кадры содержат пиксели, которые выражены с точки зрения света, называемого в данном документе компонентами яркости (или выборками яркости), и цвета, который упоминается как компоненты цветности (или выборки цвета). В некоторых примерах кадры могут также содержать значения глубины для поддержки трехмерного просмотра.At step 101, the video signal is input to the encoder. For example, the video signal may be an uncompressed video file stored in memory. As another example, a video file may be captured by a video capture device, such as a video camera, and encoded to support live video streaming. A video file may include both an audio component and a video component. The video component contains a series of image frames that, when viewed in sequence, create the visual impression of movement. Frames contain pixels that are expressed in terms of light, referred to herein as luminance components (or luminance samples), and color, which is referred to as chrominance components (or color samples). In some examples, frames may also contain depth values to support 3D viewing.

На этапе 103 видео разделяется на блоки. Разделение включает в себя разделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, в высокоэффективном кодировании видео (HEVC) (также известном как H.265 и MPEG-H часть 2) кадр может быть сначала разделен на единицы дерева кодирования (CTU), которые представляют собой блоки заданного размера (например, шестьдесят четыре пикселя на шестьдесят четыре пикселя). CTU содержат как выборки яркости, так и выборки цветности. Деревья кодирования могут использоваться для разделения CTU на блоки, и затем для рекурсивного подразделения блоков до тех пор, пока не будут достигнуты конфигурации, поддерживающие дальнейшее кодирование. Например, компоненты яркости кадра могут разделяться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения света. Кроме того, компоненты цветности кадра могут разделяться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения цвета. Соответственно, механизмы разделения различаются в зависимости от содержания видеокадров.At step 103, the video is divided into blocks. Division involves dividing the pixels in each frame into square and/or rectangular blocks for compression. For example, in High Efficiency Video Coding (HEVC) (also known as H.265 and MPEG-H part 2), a frame may first be divided into coding tree units (CTUs), which are blocks of a given size (for example, sixty-four pixels by sixty four pixels). CTUs contain both luma and chrominance samples. Encoding trees can be used to divide a CTU into blocks, and then recursively subdivide the blocks until configurations that support further encoding are reached. For example, the luminance components of a frame may be separated until the individual blocks contain relatively uniform light values. Additionally, the chrominance components of a frame can be separated until the individual blocks contain relatively uniform color values. Accordingly, the separation mechanisms differ depending on the content of the video frames.

На этапе 105 используются различные механизмы сжатия для сжатия блоков изображения, разделенных на этапе 103. Например, может использоваться межкадровое предсказание и/или внутрикадровое предсказание. Межкадровое предсказание предназначено для использования того факта, что объекты в общей сцене имеют тенденцию появляться в виде следующих друг за другом кадрах. Соответственно, блок, изображающий объект в опорном кадре, не нужно повторно описывать в соседних кадрах. В частности, объект, такой как таблица, может оставаться в постоянной позиции в течение нескольких кадров. Следовательно, таблица описывается один раз, и соседние кадры могут ссылаться на опорный кадр. Механизмы сопоставления шаблонов могут использоваться для сопоставления объектов в нескольких кадрах. Кроме того, движущиеся объекты могут быть представлены в нескольких кадрах, например, из-за движения объекта или движения камеры. В качестве конкретного примера видео может показывать автомобиль, который движется на экране в течение нескольких кадров. Для описания такого движения можно использовать векторы движения. Вектор движения - это двумерный вектор, обеспечивающий смещение координат объекта в кадре до координат объекта в опорном кадре. Таким образом, межкадровое предсказание позволяет кодировать блок изображения в текущем кадре как набор векторов движения, указывающих смещение от соответствующего блока в опорном кадре.At step 105, various compression mechanisms are used to compress the image blocks divided at step 103. For example, inter-frame prediction and/or intra-frame prediction may be used. Inter-frame prediction is designed to take advantage of the fact that objects in the overall scene tend to appear in consecutive frames. Accordingly, a block representing an object in a reference frame does not need to be re-described in adjacent frames. In particular, an object such as a table may remain in a constant position for several frames. Therefore, the table is described once, and neighboring frames can refer to the reference frame. Pattern matching engines can be used to match objects across multiple frames. In addition, moving objects can be represented in multiple frames, for example due to object movement or camera movement. As a specific example, a video might show a car moving on screen for several frames. Motion vectors can be used to describe such motion. A motion vector is a two-dimensional vector that provides a displacement of the coordinates of an object in the frame to the coordinates of the object in the reference frame. Thus, inter-frame prediction allows an image block in the current frame to be encoded as a set of motion vectors indicating an offset from the corresponding block in the reference frame.

При внутрикадровом предсказании блоки кодируются в общем кадре. Внутрикадровое предсказание использует тот факт, что компоненты яркости и цветности имеют тенденцию группироваться в кадре. Например, участок зелени в части дерева имеет тенденцию располагаться рядом с аналогичными участками зелени. Внутрикадровое предсказание использует несколько режимов направленного предсказания (например, тридцать три в HEVC), планарный режим и режим постоянного тока (DC). Направленные режимы указывают, что текущий блок является аналогичным/таким же, как выборки соседнего блока в соответствующем направлении. Планарный режим указывает то, что последовательность блоков по строкам/столбцам (например, в плоскости) может быть интерполирована на основе соседних блоков на краях строки. Планарный режим по существу указывает на плавный переход света/цвета по строке/столбцу за счет использования относительно постоянного наклона при изменении значений. Режим DC используется для сглаживания границ и указывает то, что блок является аналогичным/таким же, как среднее значение, ассоциированное с выборками всех соседних блоков, ассоциированных с угловыми направлениями режимов направленного предсказания. Соответственно, блоки внутрикадрового предсказания могут представлять блоки изображений как различные относительные значения режима предсказания вместо фактических значений. Кроме того, блоки межкадрового предсказания могут представлять блоки изображений как значения векторов движения вместо фактических значений. Так или иначе, в некоторых случаях блоки предсказания могут не точно представлять блоки изображений. Любые различия сохраняются в остаточных блоках. Преобразования могут быть применены к остаточным блокам для дальнейшего сжатия файла.In intra-frame prediction, blocks are encoded in a common frame. Intra-frame prediction takes advantage of the fact that luma and chrominance components tend to cluster together within a frame. For example, a patch of greenery in a part of a tree tends to be located next to similar patches of greenery. Intra-frame prediction uses several directional prediction modes (e.g., thirty-three in HEVC), planar mode, and direct current (DC) mode. Directional modes indicate that the current block is similar/same as the samples of the neighboring block in the corresponding direction. Planar mode indicates that a sequence of blocks along rows/columns (eg, in a plane) can be interpolated based on adjacent blocks at the edges of the row. Planar mode essentially refers to a smooth transition of light/color across a row/column by using a relatively constant slope as values change. The DC mode is used to smooth edges and indicates that a block is the same as the average value associated with samples of all neighboring blocks associated with the angular directions of the directional prediction modes. Accordingly, the intra-frame prediction blocks may represent the image blocks as different relative prediction mode values instead of actual values. In addition, inter-frame prediction blocks may represent image blocks as motion vector values instead of actual values. However, in some cases, prediction blocks may not accurately represent image blocks. Any differences are stored in residual blocks. Transformations can be applied to the residual blocks to further compress the file.

На этапе 107 могут применяться различные технологии фильтрации. В HEVC фильтры применяются в соответствии со схемой внутриконтурной фильтрации. Предсказание на блочной основе, рассмотренное выше, может привести к созданию блочных изображений в декодере. Кроме того, схема предсказания на блочной основе позволяет кодировать блок, и затем восстанавливать кодированный блок для последующего использования в качестве опорного блока. Схема внутриконтурной фильтрации итеративно применяет к блокам/кадрам фильтры подавления шума, деблокирующие фильтры, адаптивные контурные фильтры и фильтры адаптивного смещения выборок (SAO). Эти фильтры уменьшают такие артефакты блокировки для того, чтобы можно было точно восстановить кодированный файл. Кроме того, эти фильтры уменьшают артефакты в восстановленных опорных блоках, так что артефакты с меньшей вероятностью создают дополнительные артефакты в последующих блоках, которые кодируются на основе восстановленных опорных блоков.At step 107, various filtering technologies may be used. In HEVC, filters are applied according to an in-loop filtering scheme. The block-based prediction discussed above can result in blocky images being produced in the decoder. In addition, the block-based prediction scheme allows a block to be encoded, and then the encoded block to be recovered for later use as a reference block. The in-loop filtering scheme iteratively applies noise reduction filters, deblocking filters, adaptive loop filters, and sample adaptive offset (SAO) filters to blocks/frames. These filters reduce such blocking artifacts so that the encoded file can be accurately reconstructed. In addition, these filters reduce artifacts in the reconstructed reference blocks, so that artifacts are less likely to create additional artifacts in subsequent blocks that are encoded based on the reconstructed reference blocks.

После того, как видеосигнал был разделен, сжат и отфильтрован, результирующие данные кодируются в битовый поток на этапе 109. Битовый поток включает в себя данные, рассмотренные выше, а также любые данные сигнализации, необходимые для поддержки надлежащего восстановления видеосигнала в декодере. Например, такие данные могут включать в себя данные разделения, данные предсказания, остаточные блоки и различные флаги, предоставляющие декодеру инструкции по кодированию. Битовый поток может храниться в памяти для передачи в декодер по запросу. Битовый поток может быть также широковещательно и/или многоадресно передан в множество декодеров. Создание битового потока является итеративным процессом. Соответственно, этапы 101, 103, 105, 107 и 109 могут выполняться непрерывно и/или одновременно во многих кадрах и блоках. Порядок, показанный на фиг. 1, представлен для ясности и простоты обсуждения и не предназначен для ограничения процесса кодирования видео определенным порядком.After the video signal has been separated, compressed, and filtered, the resulting data is encoded into a bitstream at step 109. The bitstream includes the data discussed above as well as any signaling data necessary to support proper reconstruction of the video signal at the decoder. For example, such data may include partition data, prediction data, residual blocks, and various flags providing encoding instructions to the decoder. The bit stream can be stored in memory for transmission to the decoder on demand. The bitstream may also be broadcast and/or multicast to a plurality of decoders. Creating a bitstream is an iterative process. Accordingly, steps 101, 103, 105, 107 and 109 may be performed continuously and/or simultaneously across multiple frames and blocks. The order shown in FIG. 1 is presented for clarity and ease of discussion and is not intended to limit the video encoding process to a particular order.

Декодер принимает битовый потока и начинает процесс декодирования на этапе 111. В частности, декодер использует схему энтропийного декодирования для преобразования битового потока в соответствующий синтаксис и видеоданные. Декодер использует синтаксические данные из битового потока для определения разделов для кадров на этапе 111. Разделение должно совпадать с результатами разделения блоков на этапе 103. Теперь будет описано энтропийное кодирование/декодирование, используемое на этапе 111. В процессе сжатия кодер делает выбор из различных вариантов, например, выбирает схемы разделения блоков из нескольких возможных вариантов на основе пространственного позиционирования значений во входном(ых) изображении(ях). Сигнализация точного выбора может использовать большое количество бинов. В используемом в данном документе значении бин представляет собой двоичное значение, которое обрабатывается как переменная (например, битовое значение, которое может изменяться в зависимости от контекста). Энтропийное кодирование позволяет кодеру отбрасывать любые варианты, которые явным образом не подходят для конкретного случая, оставляя набор допустимых вариантов. Затем каждому допустимому варианту присваивается кодовое слово. Длина кодовых слов зависит от количества допустимых вариантов (например, один бин для двух вариантов, два бина для трех-четырех вариантов и т.д.). Затем кодер кодирует кодовое слово для выбранного варианта. Эта схема уменьшает размер кодовых слов, так как кодовые слова настолько велики, насколько это необходимо, чтобы однозначно указывать выбор из небольшого подмножества допустимых вариантов, в отличие от однозначного указания выбора из потенциально большого набора всех возможных вариантов. Затем декодер декодирует выбранный вариант, определяя набор допустимых опций аналогично кодеру. Определив набор допустимых вариантов, декодер может считать кодовое слово и определить выбор, сделанный кодером.The decoder receives the bit stream and begins the decoding process at step 111. Specifically, the decoder uses an entropy decoding scheme to convert the bit stream into appropriate syntax and video data. The decoder uses syntax data from the bitstream to determine partitions for frames at step 111. The partitioning should match the results of block partitioning at step 103. The entropy encoding/decoding used at step 111 will now be described. During the compression process, the encoder makes a selection from various options, for example, selects block partitioning schemes from several possible options based on the spatial positioning of values in the input image(s). Precise selection signaling can use a large number of bins. As used herein, a bean is a binary value that is treated as a variable (eg, a bit value that can change depending on the context). Entropy coding allows the encoder to discard any options that are clearly not suitable for a particular case, leaving a set of valid options. Each valid option is then assigned a code word. The length of the codewords depends on the number of valid options (for example, one bin for two options, two bins for three or four options, etc.). The encoder then encodes the codeword for the selected option. This scheme reduces the size of codewords because codewords are as large as necessary to unambiguously indicate a choice from a small subset of valid options, as opposed to unambiguously indicating a choice from a potentially large set of all possible options. The decoder then decodes the selected option, determining the set of valid options in a similar manner to an encoder. Having determined the set of valid options, the decoder can read the codeword and determine the choice made by the encoder.

На этапе 113 декодер выполняет блочное декодирование. В частности, декодер использует обратные преобразования для выработки остаточных блоков. Затем декодер использует остаточные блоки и соответствующие блоки предсказания для восстановления блоков изображения в соответствии с разделением. Блоки предсказания могут включать в себя как блоки внутрикадрового предсказания, так и блоки межкадрового предсказания, выработанные кодером на этапе 105. Блоки восстановленного изображения затем помещаются в кадры восстановленного видеосигнала в соответствии с данными разделения, определенными на этапе 111. Синтаксис на этапе 113 также может быть обозначен в битовом потоке с помощью энтропийного кодирования, как обсуждалось выше.At step 113, the decoder performs block decoding. In particular, the decoder uses inverse transforms to generate residual blocks. The decoder then uses the residual blocks and corresponding prediction blocks to reconstruct the image blocks according to the division. The prediction blocks may include both intra-prediction blocks and inter-prediction blocks generated by the encoder at step 105. The reconstructed image blocks are then placed into frames of the reconstructed video signal in accordance with the partitioning data determined at step 111. The syntax at step 113 may also be denoted in the bitstream using entropy encoding as discussed above.

На этапе 115 выполняется фильтрация кадров восстановленного видеосигнала способом, аналогичным этапу 107 в кодере. Например, фильтры подавления шума, фильтры устранения блочности, адаптивные контурные фильтры и фильтры SAO могут применяться к кадрам для удаления артефактов блочности. Как только кадры отфильтрованы, видеосигнал может быть выведен на дисплей на этапе 117 для просмотра конечным пользователем.At step 115, frames of the reconstructed video signal are filtered in a manner similar to step 107 in the encoder. For example, noise reduction filters, deblocking filters, adaptive edge filters, and SAO filters can be applied to frames to remove blocking artifacts. Once the frames are filtered, the video signal can be displayed at step 117 for viewing by the end user.

На фиг. 2 показано схематичное представление примерной системы 200 кодирования и декодирования (кодека) для кодирования видео. В частности, система 200 кодирования/декодирования обеспечивает функциональные возможности для поддержки реализации способа 100 функционирования. Система 200 кодирования/декодирования обобщена для отображения компонентов, используемых как в кодере, так и в декодере. Система 200 кодирования/декодирования принимает и разделяет видеосигнал, как описано в отношении этапов 101 и 103 в способе 100 функционирования, в результате чего получается разделенный видеосигнал 201. Затем система 200 кодирования/декодирования сжимает разделенный видеосигнал 201 в кодированный битовый поток, действуя в качестве кодера, как описано в отношении этапов 105, 107 и 109 в способе 100. При работе в качестве декодера система 200 кодирования/декодирования вырабатывает выходной видеосигнал из битового потока, как описано в отношении этапов 111, 113, 115 и 117 в способе 100 функционирования. Система 200 кодирования/декодирования включает в себя компонент 211 общего управления кодером, компонент 213 преобразования с масштабированием и квантования, компонент 215 внутрикадровой оценки, компонент 217 внутрикадрового предсказания, компонент 219 компенсации движения, компонент 221 оценки движения, компонент 229 масштабирования и обратного преобразования, компонент 227 анализа управления фильтром, компонент 225 внутриконтурных фильтров, компонент 223 буфера декодированных изображений и компонент 231 форматирования заголовка и контекстно-адаптивного двоичного арифметического кодирования (CABAC). Такие компоненты соединены так, как показано на чертеже. На фиг. 2 черные линии указывают перемещение данных, подлежащих кодированию/декодированию, и пунктирные линии указывают перемещение управляющих данных, которые управляют работой других компонентов. Все компоненты системы 200 кодирования/декодирования могут присутствовать в кодере. Декодер может включать в себя подмножество компонентов системы 200 кодирования/декодирования. Например, декодер может включать в себя компонент 217 внутрикадрового предсказания, компонент 219 компенсации движения, компонент 229 масштабирования и обратного преобразования, компонент 225 внутриконтурных фильтров, и компонент 223 буфера декодированных изображений. Теперь эти компоненты будут описаны.In fig. 2 shows a schematic diagram of an exemplary encoding and decoding (codec) system 200 for video encoding. In particular, the encoding/decoding system 200 provides functionality to support the implementation of the method 100 of operation. The encoding/decoding system 200 is generalized to display components used in both the encoder and the decoder. The encoding/decoding system 200 receives and splits the video signal as described with respect to steps 101 and 103 in the operating method 100, resulting in a divided video signal 201. The encoding/decoding system 200 then compresses the divided video signal 201 into an encoded bit stream, acting as an encoder , as described with respect to steps 105, 107 and 109 in the method 100. When operating as a decoder, the encoding/decoding system 200 produces a video output signal from the bitstream, as described with respect to steps 111, 113, 115 and 117 in the method 100 of operation. The encoding/decoding system 200 includes a general encoder control component 211, a upscaling and quantization component 213, an intra-frame estimation component 215, an intra-frame prediction component 217, a motion compensation component 219, a motion estimation component 221, a scaling and inverse transform component 229, a 227 filter control analysis, in-loop filters component 225, decoded image buffer component 223, and header formatting and context adaptive binary arithmetic coding (CABAC) component 231. Such components are connected as shown in the drawing. In fig. 2, black lines indicate the movement of data to be encoded/decoded, and dotted lines indicate the movement of control data that controls the operation of other components. All components of the encoding/decoding system 200 may be present in the encoder. The decoder may include a subset of components of the encoding/decoding system 200. For example, the decoder may include an intra-frame prediction component 217, a motion compensation component 219, a scaling and demapping component 229, an in-loop filter component 225, and a decoded image buffer component 223. These components will now be described.

Разделенный видеосигнал 201 представляет собой захваченную видеопоследовательность, которая была разделена на блоки пикселей с помощью дерева кодирования. Дерево кодирования использует различные режимы разделения для разделения блока пикселей на более мелкие блоки пикселей. Затем эти блоки можно разделить на еще более мелкие блоки. Блоки могут называться узлами дерева кодирования. Более крупные родительские узлы разделяются на более мелкие дочерние узлы. Количество раз, когда узел подразделяется, называется глубиной узла/дерева кодирования. В некоторых случаях разделенные блоки могут быть включены в единицы кодирования (CU). Например, CU может быть частью CTU, которая содержит блок яркости, блок(и) красной разностной цветности (Cr) и блок(и) синей разностной цветности (Cb) вместе с соответствующими синтаксическими инструкциями для КР. Режимы разделения могут включать в себя двоичное дерево (BT), троичное дерево (TT) и квадродерево (QT), используемые для разделения узла на два, три или четыре дочерних узла, соответственно, различной формы в зависимости от используемых режимов разделения. Разделенный видеосигнал 201 направляется в компонент 211 общего управления кодером, компонент 213 преобразования с масштабированием и квантования, компонент 215 внутрикадровой оценки, компонент 227 анализа управления фильтром и компонент 221 оценки движения для сжатия.The divided video signal 201 is a captured video sequence that has been divided into blocks of pixels using a coding tree. The coding tree uses different partitioning modes to divide a block of pixels into smaller blocks of pixels. These blocks can then be divided into even smaller blocks. The blocks may be called nodes of the coding tree. Larger parent nodes are split into smaller child nodes. The number of times a node is subdivided is called the depth of the node/encoding tree. In some cases, the divided blocks may be included in coding units (CUs). For example, a CU may be part of a CTU that contains a luminance block, a red chrominance (Cr) block(s), and a blue chrominance (Cb) block(s), along with corresponding syntax instructions for the RK. Partitioning modes may include binary tree (BT), ternary tree (TT), and quadtree (QT), used to split a node into two, three, or four child nodes, respectively, of varying shapes depending on the partitioning modes used. The divided video signal 201 is sent to a general encoder control component 211, a scaling and quantization transform component 213, an intra-frame estimation component 215, a filter control analysis component 227, and a motion estimation component 221 for compression.

Компонент 211 общего управления кодером выполнен с возможностью принятия решений, ассоциированных с кодированием изображений видеопоследовательности в битовый поток в соответствии с ограничениями приложения. Например, компонент 211 общего управления кодером управляет оптимизацией размер битовой скорости/битового потока в зависимости от качества восстановления. Такие решения могут приниматься на основе наличия дискового пространства/пропускной способности и запросов разрешения изображения. Компонент 211 общего управления кодером также управляет использованием буфера в свете скорости передачи, чтобы смягчить проблемы очищения и переполнения буфера. Чтобы справиться с этими проблемами, компонент 211 общего управления кодером управляет разделением, предсказанием и фильтрацией с помощью других компонентов. Например, компонент 211 общего управления кодером может динамически увеличивать сложность сжатия для увеличения разрешения и увеличения использования полосы пропускания или уменьшать сложность сжатия для уменьшения разрешения и использования полосы пропускания. Следовательно, компонент 211 общего управления кодером управляет другими компонентами системы 200 кодирования/декодирования, чтобы сбалансировать качество восстановления видеосигнала с проблемами скорости передачи битов. Компонент 211 общего управления кодером создает управляющие данные, которые управляют работой других компонентов. Управляющие данные также направляются в компонент 231 форматирования заголовка и CABAC для кодирования в битовый поток для сигнализации параметров для декодирования в декодере.The general encoder control component 211 is configured to make decisions associated with encoding images of a video sequence into a bitstream in accordance with application constraints. For example, the general encoder control component 211 controls the optimization of the bit rate/bit stream size depending on the reconstruction quality. Such decisions can be made based on disk space/bandwidth availability and image resolution requests. The general encoder control component 211 also controls buffer usage in light of the bit rate to mitigate buffer flushing and overflow problems. To cope with these problems, the general encoder control component 211 controls the division, prediction, and filtering with the help of other components. For example, the general encoder control component 211 may dynamically increase compression complexity to increase resolution and increase bandwidth utilization, or decrease compression complexity to decrease resolution and bandwidth utilization. Therefore, the general encoder control component 211 controls the other components of the encoding/decoding system 200 to balance the quality of the video signal reconstruction with bit rate issues. The encoder general control component 211 creates control data that controls the operation of other components. The control data is also sent to header and CABAC formatting component 231 for encoding into a bitstream to signal parameters for decoding at the decoder.

Разделенный видеосигнал 201 также отправляется в компонент 221 оценки движения и компонент 219 компенсации движения для межкадрового предсказания. Кадр или часть разделенного видеосигнала 201 может быть разделена на множество видеоблоков. Компонент 221 оценки движения и компонент 219 компенсации движения выполняют межкадровое кодирование с предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадрах для обеспечения временного предсказания. Система 200 кодирования/декодирования может выполнять несколько проходов кодирования, например, для выбора соответствующего режима кодирования для каждого блока видеоданных.The divided video signal 201 is also sent to the motion estimation component 221 and the motion compensation component 219 for inter-frame prediction. A frame or portion of the divided video signal 201 may be divided into multiple video blocks. The motion estimation component 221 and the motion compensation component 219 perform interframe predictive coding of a received video block with respect to one or more blocks in one or more reference frames to provide temporal prediction. The encoding/decoding system 200 may perform multiple encoding passes, for example, to select an appropriate encoding mode for each block of video data.

Компонент 221 оценки движения и компонент 219 компенсации движения могут быть в высокой степени интегрированы, но проиллюстрированы отдельно для концептуальных целей. Оценка движения, выполняемая компонентом 221 оценки движения, представляет собой процесс выработки векторов движения, в котором оценивается движение для видеоблоков. Например, вектор движения может указывать смещение кодированного объекта относительно блока предсказания. Блок предсказания - это блок, который точно соответствует кодируемому блоку с точки зрения разности пикселей. Блок предсказания также может упоминаться как опорный блок. Такая разность пикселей может быть определена с помощью суммы абсолютной разности (SAD), суммы квадратов разностей (SSD) или другими показателями разности. HEVC использует несколько кодированных объектов, включая CTU, блоки дерева кодирования (CTB) и CU. Например, CTU можно разделить на CTB, которые затем можно разделить на CB для включения в CU. CU может быть закодирована как единица предсказания (PU), содержащая данные предсказания, и/или единицу преобразования (TU), содержащую преобразованные остаточные данные для CU. Компонент 221 оценки движения вырабатывает векторы движения, PU и TU, используя анализ характеристики «скорость-искажение» как часть процесса оптимизации характеристики «скорость-искажение». Например, компонент 221 оценки движения может определить несколько опорных блоков, множество векторов движения и т.д. для текущего блока/кадра и может выбирать опорные блоки, векторы движения и т.д., имеющие наилучшие характеристики «скорость-искажение». Наилучшие характеристики «скорость-искажение» уравновешивают качество восстановления видео (например, объем потерь данных при сжатии) с эффективностью кодирования (например, размер окончательного кодирования).The motion estimation component 221 and the motion compensation component 219 may be highly integrated, but are illustrated separately for conceptual purposes. The motion estimation performed by the motion estimation component 221 is a motion vector generation process in which motion is estimated for video blocks. For example, the motion vector may indicate the offset of the encoded object relative to the prediction block. A prediction block is a block that exactly matches the block being coded in terms of pixel difference. The prediction block may also be referred to as a reference block. Such pixel difference may be determined by sum of absolute difference (SAD), sum of squared differences (SSD), or other difference measures. HEVC uses several coded entities, including CTUs, coding tree blocks (CTBs), and CUs. For example, CTUs can be divided into CTBs, which can then be divided into CBs to be included in a CU. The CU may be encoded as a prediction unit (PU) containing prediction data and/or a transformation unit (TU) containing the transformed residual data for the CU. Motion estimation component 221 generates motion vectors, PUs and TUs, using velocity-distortion analysis as part of the velocity-distortion optimization process. For example, motion estimation component 221 may determine multiple reference blocks, multiple motion vectors, etc. for the current block/frame and can select reference blocks, motion vectors, etc. that have the best speed-distortion characteristics. The best rate-distortion performance balances video restoration quality (eg, amount of data lost during compression) with encoding efficiency (eg, final encoding size).

В некоторых примерах система 200 кодирования/декодирования может вычислять значения для позиций субцелых пикселей опорных изображений, сохраненных в компоненте 223 буфера декодированных изображений. Например, система 200 кодирования/декодирования видео может интерполировать значения позиций четверти пикселей, позиции одной восьмой пикселей или другие позиции дробных пикселей опорного изображения. Таким образом, компонент 221 оценки движения может выполнять поиск движения относительно позиций целых пикселей и позиций дробных пикселей и выводить вектор движения с точностью до дробных пикселей. Компонент 221 оценки движения вычисляет вектор движения для PU видеоблока в межкадровом кодированном срезе путем сравнения позиции PU с позицией блока предсказания опорного изображения. Компонент 221 оценки движения выводит вычисленный вектор движения в виде данных движения для форматирования заголовка, и компонент 231 CABAC для кодирования и движения к компоненту 219 компенсации движения.In some examples, encoding/decoding system 200 may calculate values for sub-integer pixel positions of reference images stored in decoded image buffer component 223. For example, video encoding/decoding system 200 may interpolate quarter pixel position values, eighth pixel positions, or other fractional pixel positions of a reference image. Thus, the motion estimation component 221 can search for motion with respect to whole pixel positions and fractional pixel positions and output a motion vector with fractional pixel precision. Motion estimation component 221 calculates a motion vector for a video block PU in an inter-frame coded slice by comparing the position of the PU with the position of a reference picture prediction block. The motion estimation component 221 outputs the calculated motion vector as motion data for header formatting, and the CABAC component 231 for encoding and motion to the motion compensation component 219.

Компенсация движения, выполняемая компонентом 219 компенсации движения, может включать выборку или выработку блока предсказания на основе вектора движения, определенного компонентом 221 оценки движения. Опять же, в некоторых примерах компонент 221 оценки движения и компонент 219 компенсации движения могут быть функционально интегрированы. После приема вектора движения для PU текущего видеоблока компонент 219 компенсации движения может определить местонахождение блока предсказания, на который указывает вектор движения. Затем формируется остаточный видеоблок путем вычитания значений пикселей блока предсказания из значений пикселей текущего кодируемого видеоблока, формируя значения разности пикселей. В общем, компонент 221 оценки движения выполняет оценку движения относительно компонентов яркости, и компонент 219 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости как для компонентов цветности, так и для компонентов яркости. Блок предсказания и остаточный блок направляются в компонент 213 преобразования с масштабированием и квантования.The motion compensation performed by the motion compensation component 219 may include sampling or generating a prediction block based on the motion vector determined by the motion estimation component 221 . Again, in some examples, motion estimation component 221 and motion compensation component 219 may be functionally integrated. After receiving the motion vector for the PU of the current video block, motion compensation component 219 can locate the prediction block pointed to by the motion vector. A residual video block is then generated by subtracting the pixel values of the prediction block from the pixel values of the current video block being encoded, generating pixel difference values. In general, motion estimation component 221 performs motion estimation with respect to luminance components, and motion compensation component 219 uses motion vectors calculated based on luminance components for both chrominance and luminance components. The prediction block and the residual block are sent to the scaling and quantization transform component 213.

Разделенный видеосигнал 201 также отправляется в компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания. Как и в случае компонента 221 оценки движения и компонента 219 компенсации движения, компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания могут быть сильно интегрированы, но они проиллюстрированы по отдельности для концептуальных целей. Компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания внутрикадрово предсказывают текущий блок относительно блоков в текущем кадре в качестве альтернативы межкадровому предсказанию, выполняемому компонентом 221 оценки движения и компонентом 219 компенсации движения между кадрами, как описано выше. В частности, компонент 215 внутрикадровой оценки определяет режим внутрикадрового предсказания, который используется для кодирования текущего блока. В некоторых примерах компонент 215 внутрикадровой оценки выбирает соответствующий режим внутрикадрового предсказания для кодирования текущего блока из нескольких протестированных режимов внутрикадрового предсказания. Выбранные режимы внутрикадрового предсказания затем направляются в компонент форматирования заголовка и CABAC 231 для кодирования.The divided video signal 201 is also sent to the intra-frame estimation component 215 and the intra-frame prediction component 217. As with motion estimation component 221 and motion compensation component 219, intra-frame estimation component 215 and intra-frame prediction component 217 may be highly integrated, but they are illustrated separately for conceptual purposes. The intra-frame estimation component 215 and the intra-frame prediction component 217 intra-frame predict the current block relative to blocks in the current frame as an alternative to the inter-frame prediction performed by the motion estimation component 221 and the inter-frame motion compensation component 219 as described above. In particular, intra-frame estimation component 215 determines the intra-frame prediction mode that is used to encode the current block. In some examples, intra-frame estimation component 215 selects an appropriate intra-prediction mode for encoding the current block from several tested intra-prediction modes. The selected intra-prediction modes are then sent to the header formatting component and CABAC 231 for encoding.

Например, компонент 215 внутрикадровой оценки вычисляет значения скорости-искажения, используя анализ характеристики «скорость-искажение» для различных протестированных режимов внутрикадрового предсказания и выбирает режим внутрикадрового предсказания, имеющий наилучшие характеристики скорости-искажения среди протестированных режимов. Как правило, анализ характеристики «скорость-искажение» определяет степень искажения (или ошибки) между кодированным блоком и исходным некодированным блоком, который был закодирован для получения кодированного блока, а также битовой скорости (например, количества битов), используемой для получения кодированного блока. Компонент 215 внутрикадровой оценки вычисляет соотношения из искажений и скоростей для различных кодированных блоков, чтобы определить, какой режим внутрикадрового предсказания демонстрирует наилучшее значение скорости-искажения для блока. В дополнение к этому, компонент 215 внутрикадровой оценки может быть выполнен с возможностью кодирования блоков глубины карты глубины с использованием режима моделирования глубины (DMM) на основе оптимизации характеристики «скорость-искажение» (RDO).For example, intra-frame estimation component 215 calculates rate-distortion values using rate-distortion analysis for various tested intra-prediction modes and selects the intra-prediction mode having the best rate-distortion characteristics among the tested modes. Typically, rate-distortion analysis determines the degree of distortion (or error) between a coded block and the original uncoded block that was coded to produce the coded block, as well as the bit rate (eg, number of bits) used to produce the coded block. Intra-frame estimation component 215 calculates distortion-rate ratios for various coded blocks to determine which intra-prediction mode exhibits the best rate-distortion value for the block. In addition, the intra-frame estimation component 215 may be configured to encode the depth blocks of the depth map using a depth modeling mode (DMM) based on rate-distortion optimization (RDO).

Компонент 217 внутрикадрового предсказания может вырабатывать остаточный блок из блока предсказания на основе выбранных режимов внутрикадрового предсказания, определенных компонентом 215 внутрикадровой оценки, когда он реализован в кодере, или считывать остаточный блок из битового потока в случае реализации в декодере. Остаточный блок включает в себя разность значений между блоком предсказания и исходным блоком, представленным в виде матрицы. Затем остаточный блок направляется компоненту 213 преобразования с масштабированием и квантования. Компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания могут работать как с компонентами яркости, так и с компонентами цветности.The intra-frame prediction component 217 may produce a residual block from the prediction block based on selected intra-prediction modes determined by the intra-frame estimation component 215 when implemented in an encoder, or read the residual block from a bitstream when implemented in a decoder. The residual block includes the difference in values between the prediction block and the original block, represented as a matrix. The residual block is then sent to the scaling and quantization component 213 . The intra-frame estimation component 215 and the intra-frame prediction component 217 may operate on both luma and chrominance components.

Компонент 213 преобразования с масштабированием и квантования выполнен с возможностью дополнительного сжатия остаточного блока. Компонент 213 преобразования с масштабированием и квантования применяет преобразование, такое как дискретное косинусное преобразование (DCT), дискретное синусоидальное преобразование (DST) или концептуально аналогичное преобразование, к остаточному блоку, создавая видеоблок, содержащий остаточные значения коэффициентов преобразования. Кроме того, можно также использовать вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. Преобразование позволяет преобразовать информацию остатка из области пиксельных значений в область преобразования, такую как частотная область. Компонент 213 преобразования с масштабированием и квантования также выполнен с возможностью масштабирования преобразованной остаточной информации, например, на основе частоты. Такое масштабирование включает применение коэффициента масштабирования к остаточной информации таким образом, чтобы информация о разных частотах квантовалась с разной степенью детализации, что может повлиять на конечное визуальное качество восстановленного видео. Компонент 213 преобразования с масштабированием и квантования также выполнен с возможностью квантования коэффициентов преобразования для дальнейшего снижения скорости передачи битов. Процесс квантования позволяет уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена посредством регулировки параметра квантования. В некоторых примерах компонент 213 преобразования с масштабированием и квантования может затем выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Квантованные коэффициенты преобразования направляются в компонент форматирования заголовка и CABAC 231 для кодирования в битовый поток.The scaling and quantization component 213 is configured to further compress the residual block. The scaling and quantization transform component 213 applies a transform, such as a discrete cosine transform (DCT), a discrete sine transform (DST), or a conceptually similar transform, to the residual block, creating a video block containing the residual values of the transform coefficients. In addition, wavelet transforms, integer transforms, subband transforms, or other types of transforms can also be used. The transform allows the residual information to be converted from the pixel value domain to a transform domain such as the frequency domain. The scaling and quantization component 213 is also configured to scale the transformed residual information, for example, based on frequency. Such scaling involves applying a scaling factor to the residual information such that information at different frequencies is quantized to different degrees of detail, which can affect the final visual quality of the reconstructed video. The scaling and quantization component 213 is also configured to quantize the transform coefficients to further reduce the bit rate. The quantization process allows the bit depth associated with some or all of the coefficients to be reduced. The degree of quantization can be changed by adjusting the quantization parameter. In some examples, the scaling and quantization component 213 may then scan a matrix including the quantized transform coefficients. The quantized transform coefficients are sent to the header formatting component and CABAC 231 for encoding into a bitstream.

Компонент 229 масштабирования и обратного преобразования применяет обратную операцию компонента 213 преобразования с масштабированием и квантования для поддержки оценки движения. Компонент 229 масштабирования и обратного преобразования применяет обратное масштабирование, преобразование и/или квантование для восстановления остаточного блока в пиксельной области, например, для последующего использования в качестве опорного блока, который может стать блоком предсказания для другого текущего блока. Компонент 221 оценки движения и/или компонент 219 компенсации движения могут вычислять опорный блок путем добавления остаточного блока обратно к соответствующему блоку предсказания для использования при оценке движения более позднего блока/кадра. К восстановленным опорным блокам применяются фильтры для устранения артефактов, возникающих во время масштабирования, квантования и преобразования. В противном случае такие артефакты могут вызвать неточное предсказание (и создать дополнительные артефакты) при предсказании последующих блоков.The scaling and inverse transform component 229 applies the inverse operation of the scaling and quantizing transform component 213 to support motion estimation. The scaling and detransforming component 229 applies descaling, transforming, and/or quantization to reconstruct a residual block in the pixel domain, for example, for later use as a reference block that can become a prediction block for another current block. Motion estimation component 221 and/or motion compensation component 219 may calculate a reference block by adding a residual block back to the corresponding prediction block for use in motion estimation of a later block/frame. Filters are applied to the reconstructed reference blocks to remove artifacts that occur during scaling, quantization, and transformation. Otherwise, such artifacts may cause inaccurate prediction (and create additional artifacts) when predicting subsequent blocks.

Компонент 227 анализа управления фильтром и компонент 225 внутриконтурных фильтров применяют фильтры к остаточным блокам и/или к восстановленным блокам изображения. Например, преобразованный остаточный блок из компонента 229 масштабирования и обратного преобразования может быть объединен с соответствующим блоком предсказания из компонента 217 внутрикадрового предсказания и/или компонента 219 компенсации движения для восстановления исходного блока изображения. Затем фильтры могут быть применены к восстановленному блоку изображения. В некоторых примерах вместо этого фильтры могут применяться к остаточным блокам. Как и в случае с другими компонентами, показанными на фиг. 2, компонент 227 анализа управления фильтром и компонент 225 внутриконтурных фильтров в высокой степени интегрированы и могут быть реализованы вместе, но изображены отдельно для концептуальных целей. Фильтры, применяемые к восстановленным опорным блокам, применяются к конкретным областям пространства и включают в себя несколько параметров для регулировки применения таких фильтров. Компонент 227 анализа управления фильтром анализирует восстановленные опорные блоки, чтобы определить то, где такие фильтры должны применяться, и устанавливает соответствующие параметры. Такие данные направляются в компонент 231 форматирования заголовка и CABAC в качестве данных управления фильтром для кодирования. Компонент 225 внутриконтурных фильтров применяет такие фильтры на основе данных управления фильтром. Фильтры могут включать в себя фильтр устранения блочности, фильтр подавления шума, фильтр SAO и адаптивный контурной фильтр. В зависимости от примера такие фильтры могут применяться в пространственной/пиксельной области (например, к восстановленному блоку пикселей) или в частотной области.Filter control analysis component 227 and in-loop filter component 225 apply filters to residual blocks and/or reconstructed image blocks. For example, the transformed residual block from the upscaling and demapping component 229 may be combined with the corresponding prediction block from the intra-frame prediction component 217 and/or the motion compensation component 219 to restore the original image block. Filters can then be applied to the reconstructed image block. In some examples, filters may be applied to residual blocks instead. As with the other components shown in FIGS. 2, the filter control analysis component 227 and the in-loop filter component 225 are highly integrated and may be implemented together, but are depicted separately for conceptual purposes. Filters applied to reconstructed reference blocks apply to specific areas of space and include several parameters to control how those filters are applied. The filter control analysis component 227 analyzes the reconstructed reference blocks to determine where such filters should be applied and sets the appropriate parameters. Such data is sent to header formatting component 231 and CABAC as filter control data for encoding. The in-loop filter component 225 applies such filters based on filter control data. The filters may include a deblocking filter, a noise reduction filter, a SAO filter, and an adaptive loop filter. Depending on the example, such filters may be applied in the spatial/pixel domain (eg, to a reconstructed block of pixels) or in the frequency domain.

При работе в качестве кодера отфильтрованный восстановленный блок изображения, остаточный блок и/или блок предсказания сохраняются в компоненте 223 буфера декодированных изображений для последующего использования при оценке движения, как обсуждалось выше. При работе в качестве декодера компонент 223 буфера декодированных изображений сохраняет и пересылает восстановленные и отфильтрованные блоки в дисплей как часть выходного видеосигнала. Компонент 223 буфера декодированных изображений может быть любым запоминающим устройством, способным хранить блоки предсказания, остаточные блоки и/или блоки восстановленного изображения.When operating as an encoder, the filtered reconstructed image block, residual block, and/or prediction block are stored in decoded image buffer component 223 for later use in motion estimation, as discussed above. When operating as a decoder, the decoded image buffer component 223 stores and forwards the reconstructed and filtered blocks to the display as part of the output video signal. The decoded image buffer component 223 may be any memory device capable of storing prediction blocks, residual blocks, and/or reconstructed image blocks.

Компонент 231 форматирования заголовка и CABAC принимает данные из различных компонентов системы 200кодирования/декодирования и кодирует такие данные в кодированный битовый поток для передачи в декодер. В частности, компонент 231 форматирования заголовка и CABAC вырабатывает различные заголовки для кодирования данных управления, таких как общие данные управления и данные управления фильтром. Кроме того, данные предсказания, включая данные внутрикадрового предсказания и движения, а также остаточные данные в виде данных квантованных коэффициентов преобразования, кодируются полностью в битовый поток. Окончательный битовый поток включает в себя всю информацию, необходимую декодеру для восстановления исходного разделенного видеосигнала 201. Такая информация может также включать в себя таблицы индексов внутрикадрового режима предсказания (также называемые таблицами сопоставления кодовых слов), определения контекстов кодирования для различных блоков, указания наиболее вероятных режимов внутрикадрового предсказания, указание информации раздела и т.д. Такие данные могут быть закодированы с применением энтропийного кодирования. Например, информация может быть закодирована с использованием контекстно-адаптивного кодирования переменной длины (CAVLC), CABAC, основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), вероятностного межкадрового энтропийного кодирования (PIPE) или другого способа энтропийного кодирования. После энтропийного кодирования кодированный битовый поток может быть передан в другое устройство (например, видеодекодер) или заархивирован для последующей передачи или извлечения.The header formatting and CABAC component 231 receives data from various components of the encoding/decoding system 200 and encodes such data into a coded bitstream for transmission to the decoder. In particular, the header and CABAC formatting component 231 produces various headers for encoding control data such as general control data and filter control data. In addition, prediction data, including intra-frame prediction and motion data, as well as residual data in the form of quantized transform coefficient data, are encoded entirely into a bitstream. The final bitstream includes all information necessary for the decoder to reconstruct the original split video signal 201. Such information may also include intra-frame prediction mode index tables (also called codeword mapping tables), definitions of encoding contexts for various blocks, indications of the most likely modes intra-frame prediction, indication of partition information, etc. Such data can be encoded using entropy coding. For example, the information may be encoded using context adaptive variable length coding (CAVLC), CABAC based on context adaptive binary arithmetic coding (SBAC) syntax, probabilistic interframe entropy encoding (PIPE), or other entropy encoding technique. After entropy encoding, the encoded bitstream can be transferred to another device (such as a video decoder) or archived for later transmission or retrieval.

На фиг. 3 показана блок-схема, иллюстрирующая примерный видеокодер 300. Видеокодер 300 может использоваться для реализации функций кодирования системы 200 кодирования/декодирования и/или реализации этапов 101, 103, 105, 107 и/или 109 способа 100 функционирования. Кодер 300 разделяет входной видеосигнал, в результате чего получается разделенный видеосигнал 301, который по существу аналогичен разделенному видеосигналу 201. Затем разделенный видеосигнал 301 сжимается и кодируется в битовый поток компонентами кодера 300.In fig. 3 is a block diagram illustrating an exemplary video encoder 300. The video encoder 300 may be used to implement encoding functions of the encoding/decoding system 200 and/or implement steps 101, 103, 105, 107 and/or 109 of the method 100 of operation. Encoder 300 splits the input video signal, resulting in split video 301, which is substantially the same as split video 201. The split video 301 is then compressed and encoded into a bitstream by components of encoder 300.

В частности, разделенный видеосигнал 301 направляется в компонент 317 внутрикадрового предсказания для внутрикадрового предсказания. Компонент 317 внутрикадрового предсказания может быть по существу аналогичен компоненту 215 внутрикадровой оценки и компоненту 217 внутрикадрового предсказания. Разделенный видеосигнал 301 также направляется в компонент 321 компенсации движения для межкадрового предсказания на основе опорных блоков в компоненте 323 буфера декодированных изображений. Компонент 321 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и компоненту 219 компенсации движения. Блоки предсказания и остаточные блоки из компонента 317 внутрикадрового предсказания и компонента 321 компенсации движения направляются в компонент 313 преобразования и квантования для преобразования и квантования остаточных блоков. Компонент 313 преобразования и квантования может быть по существу аналогичен компоненту 213 преобразования с масштабированием и квантования. Преобразованные и квантованные остаточные блоки и соответствующие блоки предсказания (вместе с соответствующими управляющими данными) направляются в компонент 331 энтропийного кодирования для кодирования в битовый поток. Компонент 331 энтропийного кодирования может быть по существу аналогичен компоненту 231 форматирования заголовка и CABAC. Specifically, the divided video signal 301 is sent to the intra prediction component 317 for intra prediction. The intra-frame prediction component 317 may be substantially similar to the intra-frame estimation component 215 and the intra-frame prediction component 217 . The divided video signal 301 is also sent to motion compensation component 321 for inter-frame prediction based on reference blocks in decoded image buffer component 323. The motion compensation component 321 may be substantially similar to the motion estimation component 221 and the motion compensation component 219 . The prediction blocks and residual blocks from the intra-frame prediction component 317 and the motion compensation component 321 are sent to the transform and quantize component 313 to transform and quantize the residual blocks. The transform and quantization component 313 may be substantially similar to the scaling and quantization component 213 . The transformed and quantized residual blocks and corresponding prediction blocks (along with corresponding control data) are sent to entropy encoding component 331 for encoding into a bitstream. The entropy encoding component 331 may be substantially similar to the header formatting component 231 and CABAC.

Преобразованные и квантованные остаточные блоки и/или соответствующие блоки предсказания также направляются из компонента 313 преобразования и квантования в компонент 329 обратного преобразования и квантования для восстановления в опорные блоки для использования компонентом 321 компенсации движения. Компонент 329 обратного преобразования и квантования может быть по существу аналогичен компоненту 229 масштабирования и обратного преобразования. Внутриконтурные фильтры в компоненте 325 внутриконтурных фильтров также применяются к остаточным блокам и/или восстановленным опорным блокам, в зависимости от примера. Компонент 325 внутриконтурных фильтров может быть по существу аналогичен компоненту 227 анализа управления фильтром и компоненту 225 внутриконтурных фильтров. Компонент 325 внутриконтурных фильтров может включать в себя множество фильтров, как описано в отношении компонента 225 внутриконтурных фильтров. Отфильтрованные блоки затем сохраняются в компоненте 323 буфера декодированных изображений для использования в качестве опорных блоков компонентом 321 компенсации движения. Компонент 323 буфера декодированных изображений может быть по существу аналогичен компоненту 223 буфера декодированных изображений.The transformed and quantized residual blocks and/or corresponding prediction blocks are also sent from the transform and quantization component 313 to the inverse transform and quantization component 329 for reconstruction into reference blocks for use by the motion compensation component 321 . The demapping and quantization component 329 may be substantially similar to the scaling and demapping component 229 . The in-loop filters in the in-loop filter component 325 are also applied to the residual blocks and/or recovered reference blocks, depending on the example. The in-loop filter component 325 may be substantially similar to the filter control analysis component 227 and the in-loop filter component 225 . The in-loop filter component 325 may include a plurality of filters, as described with respect to the in-loop filter component 225. The filtered blocks are then stored in the decoded image buffer component 323 for use as reference blocks by the motion compensation component 321 . The decoded image buffer component 323 may be substantially similar to the decoded image buffer component 223.

На фиг. 4 показана блок-схема, иллюстрирующая примерный видеодекодер 400. Видеодекодер 400 может использоваться для реализации функций декодирования системы 200 кодирования/декодирования и/или реализации этапов 111, 113, 115 и/или 117 способа 100 функционирования. Декодер 400 принимает битовый поток, например, из кодера 300, и вырабатывает восстановленный выходной видеосигнал на основе битового потока для отображения конечному пользователю.In fig. 4 is a block diagram illustrating an exemplary video decoder 400. The video decoder 400 may be used to implement decoding functions of the encoding/decoding system 200 and/or implement steps 111, 113, 115 and/or 117 of the method 100 of operation. Decoder 400 receives a bit stream, for example, from encoder 300, and produces a reconstructed video output based on the bit stream for display to an end user.

Битовый поток принимается компонентом 433 энтропийного декодирования. Компонент 433 энтропийного декодирования выполнен с возможностью реализации схемы энтропийного декодирования, такой как кодирование CAVLC, CABAC, SBAC, PIPE или другие технологии энтропийного кодирования. Например, компонент 433 энтропийного декодирования может использовать информацию заголовка для предоставления контекста для интерпретации дополнительных данных, кодированных как кодовые слова в битовый поток. Декодированная информация включает в себя любую требуемую информацию для декодирования видеосигнала, такую как общие данные управления, данные управления фильтром, информацию разделения, данные движения, данные предсказания и квантованные коэффициенты преобразования из остаточных блоков. Квантованные коэффициенты преобразования направляются в компонент 429 обратного преобразования и квантования для восстановления в остаточные блоки. Компонент 429 обратного преобразования и квантования может быть аналогичен компоненту 329 обратного преобразования и квантования.The bitstream is received by entropy decoding component 433. The entropy decoding component 433 is configured to implement an entropy decoding scheme such as CAVLC, CABAC, SBAC, PIPE, or other entropy encoding technologies. For example, entropy decoding component 433 may use header information to provide context for interpreting additional data encoded as codewords into the bitstream. The decoded information includes any required information for decoding a video signal, such as general control data, filter control data, division information, motion data, prediction data, and quantized transform coefficients from residual blocks. The quantized transform coefficients are sent to the inverse transform and quantization component 429 for reconstruction into residual blocks. The inverse transform and quantization component 429 may be similar to the inverse transform and quantization component 329 .

Восстановленные остаточные блоки и/или блоки предсказания направляются в компонент 417 внутрикадрового предсказания для восстановления в блоки изображений на основе операций внутрикадрового предсказания. Компонент 417 внутрикадрового предсказания может быть аналогичен компоненту 215 внутрикадровой оценки и компоненту 217 внутрикадрового предсказания. В частности, компонент 417 внутрикадрового предсказания использует режимы предсказания для обнаружения опорного блока в кадре и применяет остаточный блок к результату для восстановления внутрикадрово предсказанных блоков изображения. Восстановленные внутрикадрово предсказанные блоки изображения, и/или остаточные блоки и соответствующие данные межкадрового предсказания направляются в компонент 423 буфера декодированных изображений через компонент 425 внутриконтурных фильтров, который может быть по существу аналогичен компоненту 223 буфера декодированных изображений и в компонент 225 внутриконтурных фильтров, соответственно. Компонент 425 внутриконтурных фильтров фильтрует восстановленные блоки изображений, остаточные блоки и/или блоки предсказания, и такая информация сохраняется в компоненте 423 буфера декодированных изображений. Восстановленные блоки изображений из компонента 423 буфера декодированных изображений направляются в компонент 421 компенсации движения для межкадрового предсказания. Компонент 421 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и/или компоненту 219 компенсации движения. В частности, компонент 421 компенсации движения использует векторы движения из опорного блока для формирования блока предсказания и применяет остаточный блок к результату для восстановления блока изображения. Результирующие восстановленные блоки также могут быть перенаправлены через компонент 425 внутриконтурных фильтров в компонент 423 буфера декодированных изображений. Компонент 423 буфера декодированных изображений продолжает хранить дополнительные восстановленные блоки изображений, которые могут быть восстановлены в кадры с использованием информации разделения. Такие кадры также могут быть помещены в последовательность. Последовательность выводится на дисплей в виде восстановленного выходного видеосигнала.The reconstructed residual blocks and/or prediction blocks are sent to intra-prediction component 417 for restoration into image blocks based on intra-prediction operations. The intra-prediction component 417 may be similar to the intra-frame estimation component 215 and the intra-prediction component 217 . Specifically, intra-prediction component 417 uses prediction modes to detect a reference block in a frame and applies a residual block to the result to reconstruct intra-predicted image blocks. The reconstructed intra-frame predicted image blocks and/or residual blocks and corresponding inter-prediction data are sent to the decoded image buffer component 423 through the in-loop filter component 425, which may be substantially similar to the decoded image buffer component 223 and to the in-loop filter component 225, respectively. The in-loop filter component 425 filters the reconstructed image blocks, residual blocks, and/or prediction blocks, and such information is stored in the decoded image buffer component 423. The reconstructed image blocks from the decoded image buffer component 423 are sent to the motion compensation component 421 for inter-frame prediction. Motion compensation component 421 may be substantially similar to motion estimation component 221 and/or motion compensation component 219 . Specifically, motion compensation component 421 uses motion vectors from the reference block to form a prediction block and applies the residual block to the result to reconstruct the image block. The resulting reconstructed blocks may also be forwarded through the in-loop filter component 425 to the decoded image buffer component 423. The decoded image buffer component 423 continues to store additional reconstructed image blocks that can be reconstructed into frames using the division information. Such frames can also be placed in a sequence. The sequence is displayed as a reconstructed video output.

Принимая во внимание вышеизложенное, технологии сжатия видео выполняют пространственное (внутрикадровое) предсказание и/или временное (межкадровое) предсказание для уменьшения или устранения избыточности, присущей видеопоследовательностям. Для кодирования видео на блочной основе видеосрез (то есть видеоизображение или часть видеоизображения) может быть разделен на видеоблоки, которые также могут называться древовидными блоками, блоками дерева кодирования (CTB), единицами дерева кодирования (CTU), единицами кодирования (CU) и/или узлами кодирования. Видеоблоки во внутрикадрово кодированном (I) срезе изображения кодируются с использованием пространственного предсказания по отношению к опорным выборкам в соседних блоках одного и того же изображения. Видеоблоки во межкадрово кодированном (P или B) срезе изображения могут использовать пространственное предсказание по отношению к опорным выборкам в соседних блоках в одном и том же изображении или временное предсказание по отношению к опорным выборкам в других опорных изображениях. Изображения могут упоминаться как кадры, и опорные изображения могут упоминаться как опорные кадры. POC представляет собой переменную, ассоциированную с каждым изображением, которая однозначно идентифицирует ассоциированное изображение среди всех изображений в видеопоследовательности кодированного слоя (CLVS), указывает то, когда соответствующее изображение должно быть выведено из DPB, и указывает позицию ассоциированного изображения в порядке вывода относительно позиций очередности вывода других изображений в одной и той же CLVS, которые должны выводиться из DPB. Флаг представляет собой переменную или однобитовый синтаксический элемент, который может принимать одно из двух возможных значений: 0 и 1.Considering the above, video compression technologies perform spatial (intra-frame) prediction and/or temporal (inter-frame) prediction to reduce or eliminate the redundancy inherent in video sequences. For block-based video encoding, a video slice (i.e., a video image or part of a video image) can be divided into video blocks, which may also be called tree blocks, coding tree blocks (CTB), coding tree units (CTU), coding units (CU), and/or coding nodes. Video blocks in an intra-frame (I) coded image slice are encoded using spatial prediction with respect to reference samples in adjacent blocks of the same image. Video blocks in an interframe (P or B) coded slice of an image may use spatial prediction with respect to reference samples in adjacent blocks in the same picture, or temporal prediction with respect to reference samples in other reference pictures. The pictures may be referred to as frames, and the reference pictures may be referred to as reference frames. POC is a variable associated with each picture that uniquely identifies the associated picture among all pictures in the coded layer video sequence (CLVS), indicates when the corresponding picture should be output from the DPB, and indicates the position of the associated picture in the output order relative to the output order positions other images in the same CLVS that should be output from the DPB. A flag is a variable or one-bit syntax element that can take one of two possible values: 0 and 1.

Пространственное или временное предсказание приводит к блоку предсказания для блока, подлежащего кодированию. Остаточные данные представляют собой разность в пикселях между исходным кодируемым блоком и предсказываемым блоком. Межкадрово предсказанный блок кодируется в соответствии с вектором движения, который указывает на блок опорных выборок, образующих блок предсказания, и остаточными данными, указывающими разность между кодированным блоком и предсказываемым блоком. Внутрикадрово предсказанный блок кодируется в соответствии с режимом внутрикадрового предсказания и остаточными данными. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, в результате чего получаются остаточные коэффициенты преобразования, которые затем можно квантовать. Квантованные коэффициенты преобразования, первоначально размещенные в двумерном массиве, могут быть просканированы для того, чтобы получить одномерный вектор коэффициентов преобразования, и для достижения еще большего сжатия можно применять энтропийное кодирование.Spatial or temporal prediction results in a block prediction for the block to be encoded. The residual data is the difference in pixels between the original encoded block and the predicted block. The inter-frame predicted block is encoded in accordance with a motion vector that indicates a block of reference samples forming a prediction block, and residual data indicating the difference between the coded block and the predicted block. The intra-predicted block is encoded in accordance with the intra-prediction mode and the residual data. For further compression, the residual data can be converted from a pixel domain to a transform domain, resulting in residual transform coefficients that can then be quantized. The quantized transform coefficients, initially placed in a two-dimensional array, can be scanned to obtain a one-dimensional vector of transform coefficients, and entropy coding can be applied to achieve even greater compression.

Сжатие изображений и видео развивалось быстрыми темпами, что привело к появлению различных стандартов кодирования. Такие стандарты кодирования видео включают в себя ITU-T H.261, группу экспертов по движущимся изображениям (MPEG)-1 международной организации по стандартизации/международной электротехнической комиссии (ISO/IEC) часть 2, ITU-T H.262 или ISO/IEC MPEG-2 часть 2, ITU-T H.263, ISO/IEC MPEG-4 часть 2, усовершенствованное кодирование видео (AVC), также известное как ITU-T H.264 или ISO/IEC MPEG-4 часть 10, и высокоэффективное кодирование видео (HEVC), также известное как ITU-T H.265 или MPEG-H часть 2. AVC включает в себя такие расширения, как масштабируемое кодирование видео (SVC), кодирование многоракурсного видео (MVC) и кодирование многоракурсного видео плюс глубины (MVC+D), и трехмерное (3D) AVC (3D-AVC). HEVC включает в себя такие расширения, как масштабируемое HEVC (SHVC), многоракурсное HEVC (MV-HEVC) и 3D HEVC (3D-HEVC).Image and video compression has evolved at a rapid pace, leading to the emergence of various encoding standards. Such video coding standards include ITU-T H.261, International Organization for Standardization/International Electrotechnical Commission (ISO/IEC) Moving Picture Experts Group (MPEG)-1 Part 2, ITU-T H.262, or ISO/IEC MPEG-2 Part 2, ITU-T H.263, ISO/IEC MPEG-4 Part 2, Advanced Video Coding (AVC), also known as ITU-T H.264 or ISO/IEC MPEG-4 Part 10, and High Efficiency video coding (HEVC), also known as ITU-T H.265 or MPEG-H part 2. AVC includes extensions such as scalable video coding (SVC), multi-view video coding (MVC), and multi-view plus depth video coding ( MVC+D), and three-dimensional (3D) AVC (3D-AVC). HEVC includes extensions such as scalable HEVC (SHVC), multi-view HEVC (MV-HEVC), and 3D HEVC (3D-HEVC).

Существует также новый стандарт кодирования видео, называемый универсальным кодированием видео (VVC), который разрабатывается объединенной группой экспертов по видео (JVET) ITU-T и ISO/IEC. Хотя стандарт VVC имеет несколько рабочих проектов, в частности, в данном документе упоминается один рабочий проект (WD) VVC, а именно B. Bross, J. Chen, and S. Liu, “Versatile Video Coding (Draft 5),” JVET-N1001-v3, 13th JVET Meeting, March 27, 2019 (VVC Draft 5).There is also a new video coding standard called Versatile Video Coding (VVC), which is being developed by the Joint Video Experts Team (JVET) of ITU-T and ISO/IEC. Although the VVC standard has several working drafts, one VVC working draft (WD) in particular is mentioned in this document, namely B. Bross, J. Chen, and S. Liu, “Versatile Video Coding (Draft 5),” JVET- N1001-v3, 13th JVET Meeting, March 27, 2019 (VVC Draft 5).

Масштабируемость при кодировании видео обычно поддерживается за счет использования технологий многослойного кодирования. Многослойный битовый поток содержит базовый слой (BL) и один или более слоев расширения (EL). Примеры масштабируемости включают в себя пространственную масштабируемость, масштабируемость качества/отношения сигнал-шум (SNR), многоракурсную масштабируемость и т.д. Когда используется технология многослойного кодирования, изображение или его часть могут быть закодированы (1) без использование опорного изображения, то есть с использованием внутрикадрового предсказания; (2) путем обращения к опорным изображениям, которые находятся в том же самом слое, то есть с использованием межкадрового предсказания; или (3) путем обращения к опорным изображениям, которые находятся в другом(их) слое(ях), то есть с использованием межслойного предсказания. Опорное изображение, используемое для межслойного предсказания текущего изображения, называется межслойным опорным изображением (ILRP).Scalability in video encoding is usually supported by the use of multi-layer encoding technologies. The multilayer bitstream contains a base layer (BL) and one or more enhancement layers (EL). Examples of scalability include spatial scalability, quality/signal-to-noise ratio (SNR) scalability, multi-view scalability, etc. When multi-layer encoding technology is used, an image or part thereof can be encoded (1) without using a reference image, that is, using intra-frame prediction; (2) by referring to reference images that are in the same layer, that is, using inter-frame prediction; or (3) by accessing reference images that are in other layer(s), that is, using inter-layer prediction. The reference image used for inter-layer prediction of the current image is called inter-layer reference picture (ILRP).

На фиг. 5 показано схематичное представление, иллюстрирующее пример предсказания 500 на основе слоя, например, как это выполняется для определения векторов движения (MV) на этапе 105 сжатия блока, этапе 113 декодирования блока, компоненте 221 оценки движения, компоненте 219 компенсации движения, компоненте 321 компенсации движения и/или компоненте 421 компенсации движения. Предсказание 500 на основе слоя совместимо с однонаправленным межкадровым предсказанием и/или двунаправленным межкадровым предсказанием, но также выполняется между изображениями в разных слоях.In fig. 5 is a schematic diagram illustrating an example of layer-based prediction 500, such as how it is performed to determine motion vectors (MVs) in block compression step 105, block decoding step 113, motion estimation component 221, motion compensation component 219, motion compensation component 321 and/or motion compensation component 421. Layer-based prediction 500 is compatible with unidirectional inter-prediction and/or bi-directional inter-prediction, but is also performed between images in different layers.

Предсказание 500 на основе слоев применяется между изображениями 511, 512, 513 и 514 и изображениями 515, 516, 517 и 518 в разных слоях. В показанном примере изображения 511, 512, 513 и 514 являются частью слоя N+1 532, и изображения 515, 516, 517 и 518 являются частью слоя N 531. Слой, такой как слой N 531 и/или слой N+1 532, представляет собой группу изображений, ассоциированных с аналогичным значением характеристики, такой как аналогичный размер, качество, разрешение, отношение сигнал/шум, возможности и т.д. В показанном примере слой N+1 532 ассоциируется с размером изображения, большим чем у слоя N 531. Соответственно, в этом примере изображения 511, 512, 513 и 514 в слое N+1 532 имеют больший размер изображения (например, большую высоту и ширину и, следовательно, больше выборок), чем у изображений 515, 516, 517 и 518 в слое N 531. Однако такие изображения могут быть разделены между слоем N+1 532 и слоем N 531 по другим характеристикам. Хотя показаны только два слоя, слой N+1 532 и слой N 531, набор изображений может быть разделен на любое количество слоев на основе ассоциированных характеристик. Слой N+1 532 и слой N 531 также могут обозначаться ID слоя. ID слоя - это элемент данных, который ассоциируется с изображением и указывает то, что изображение является частью указанного слоя. Соответственно, каждое изображение 511-518 может ассоциироваться с соответствующим ID слоя, чтобы указать то, какой слой N+1 532 или слой N 531 включает в себя соответствующее изображение.Layer-based prediction 500 is applied between images 511, 512, 513 and 514 and images 515, 516, 517 and 518 in different layers. In the example shown, images 511, 512, 513 and 514 are part of layer N+1 532, and images 515, 516, 517 and 518 are part of layer N 531. A layer such as layer N 531 and/or layer N+1 532, is a group of images associated with a similar characteristic value, such as similar size, quality, resolution, signal-to-noise ratio, capabilities, etc. In the example shown, layer N+1,532 is associated with an image size larger than layer N 531. Accordingly, in this example, images 511, 512, 513, and 514 in layer N+1,532 have a larger image size (e.g., greater height and width and therefore more samples) than images 515, 516, 517 and 518 in layer N 531. However, such images may be separated between layer N+1 532 and layer N 531 based on other characteristics. Although only two layers are shown, layer N+1 532 and layer N 531, the set of images can be divided into any number of layers based on associated characteristics. Layer N+1 532 and layer N 531 may also be designated by layer ID. A layer ID is a data element that is associated with an image and indicates that the image is part of the specified layer. Accordingly, each image 511-518 may be associated with a corresponding layer ID to indicate which layer N+1 532 or layer N 531 includes the corresponding image.

Изображения 511-518 в разных слоях 531-532 выполнены с возможностью отображения в альтернативном варианте. Таким образом, изображения 511-518 в разных слоях 531-532 могут совместно использовать один и тот же временной идентификатор (ID) и могут быть включены в одну и ту же AU. Используемый в данном документе термин AU представляет собой набор из одного или более кодированных изображений, ассоциированных с одним и тем же временем отображения для вывода из DPB. Например, декодер может декодировать и отображать изображение 515 в текущий момент времени отображения, если требуется изображение меньшего размера, или декодер может декодировать и отображать изображение 511 в текущий момент времени отображения, если требуется изображение большего размера. Таким образом, изображения 511-514 в верхнем слое N+1 532 содержат по существу те же данные изображения, что и соответствующие изображения 515-518 в нижнем слое N 531 (несмотря на разницу в размере изображения). В частности, изображение 511 содержит по существу те же данные изображения, что и изображение 515, изображение 512 содержит по существу те же данные изображения, что и изображение 516 и т.д.Images 511-518 in different layers 531-532 are configured to be displayed in an alternative embodiment. Thus, images 511-518 in different layers 531-532 can share the same temporary identifier (ID) and can be included in the same AU. As used herein, the term AU is a set of one or more encoded pictures associated with the same display time for output from the DPB. For example, the decoder may decode and display image 515 at the current display time if a smaller image size is required, or the decoder may decode and display image 511 at the current display time if a larger image size is required. Thus, images 511-514 in the top layer N+1 532 contain substantially the same image data as the corresponding images 515-518 in the bottom layer N 531 (despite the difference in image size). Specifically, image 511 contains substantially the same image data as image 515, image 512 contains substantially the same image data as image 516, and so on.

Изображения 511-518 могут быть закодированы путем ссылки на другие изображения 511-518 в одном и том же слое N 531 или N+1 532. Кодирование изображения со ссылкой на другое изображение в одном и том же слое приводит к межкадровому предсказанию 523, которое совместим с однонаправленным межкадровым предсказанием и/или двунаправленным межкадровым предсказанием. Межкадровое предсказание 523 показано сплошными стрелками. Например, изображение 513 может быть закодировано с использованием межкадрового предсказания 523 с использованием одного или двух изображений 511, 512 и/или 514 в слое N+1 532 в качестве ссылки, где одно изображение используется в качестве ссылки для однонаправленного межкадрового предсказания, и/или два изображения используются в качестве ссылки для двунаправленного межкадрового предсказания. Кроме того, изображение 517 может быть закодировано с применением межкадрового предсказания 523 с использованием одного или двух изображений 515, 516 и/или 518 в слое N 531 в качестве ссылки, где одно изображение используется в качестве ссылки для однонаправленного межкадрового предсказания, и/или два изображения используются в качестве ссылки для двунаправленного межкадрового предсказания. Когда при выполнении межкадрового предсказания 523 изображение используется в качестве опорного изображения для другого изображения в одном и том же слое, это изображение может упоминаться как опорное изображение. Например, изображение 512 может быть опорным изображением, используемым для кодирования изображения 513 в соответствии с межкадровым предсказанием 523. Межкадровое предсказание 523 также может упоминаться как внутрислойное предсказание в многослойном контексте. Таким образом, межкадровое предсказание 523 представляет собой механизм кодирования выборок текущего изображения путем ссылки на указанные выборки в опорном изображении, которое отличается от текущего изображения, где опорное изображение и текущее изображение находятся в одном слое.Images 511-518 may be encoded by reference to other images 511-518 in the same N 531 or N+1 layer 532. Encoding an image by reference to another image in the same layer results in inter-frame prediction 523 that is compatible with unidirectional interframe prediction and/or bidirectional interframe prediction. Inter-frame prediction 523 is shown by solid arrows. For example, picture 513 may be encoded using inter-picture prediction 523 using one or two pictures 511, 512 and/or 514 in the N+1 layer 532 as a reference, where one picture is used as a reference for unidirectional inter-picture prediction, and/or the two images are used as a reference for bidirectional inter-frame prediction. In addition, picture 517 may be encoded using inter-picture prediction 523 using one or two pictures 515, 516 and/or 518 in layer N 531 as a reference, where one picture is used as a reference for unidirectional inter-picture prediction, and/or two the images are used as a reference for bidirectional inter-frame prediction. When performing inter-picture prediction 523, an image is used as a reference image for another image in the same layer, that image may be referred to as a reference image. For example, picture 512 may be a reference picture used to encode picture 513 in accordance with inter-picture prediction 523. Inter-picture prediction 523 may also be referred to as intra-layer prediction in a multi-layer context. Thus, inter-picture prediction 523 is a mechanism for encoding samples of a current picture by referring to said samples in a reference picture that is different from the current picture, where the reference picture and the current picture are in the same layer.

Изображения 511-518 можно также закодировать путем ссылки на другие изображения 511-518 в других слоях. Этот процесс известен как межслойное предсказание 521 и показан пунктирными стрелками. Межслойное предсказание 521 представляет собой механизм кодирования выборок текущего изображения путем ссылки на указанные выборки в опорном изображении, где текущее изображение и опорное изображение находятся в разных слоях и, следовательно, имеют разные ID слоя. Например, изображение в нижнем слое N 531 может использоваться в качестве опорного изображения для кодирования соответствующего изображения в верхнем слое N+1 532. В качестве конкретного примера изображение 511 может быть закодировано путем ссылки на изображение 515 в соответствии с межслойным предсказанием 521. В таком случае изображение 515 используется как межслойное опорное изображение. Межслойное опорное изображение является опорным изображением, используемым для межслойного предсказания 521. В большинстве случаев межслойное предсказание 521 ограничено таким образом, чтобы текущее изображение, такое как изображение 511, могло использовать только межслойные опорные изображения, которые включены в одну и ту же AU и находятся в нижнем слое, таком как изображение 515. Когда доступно несколько слоев (например, более двух), межслойное предсказание 521 может кодировать/декодировать текущее изображение на основе нескольких межслойных опорных изображениях на более низких слоях, чем текущее изображение.Images 511-518 can also be encoded by referencing other images 511-518 in other layers. This process is known as interlayer prediction 521 and is shown by dotted arrows. Inter-layer prediction 521 is a mechanism for encoding samples of a current image by reference to said samples in a reference image, where the current image and the reference image are in different layers and therefore have different layer IDs. For example, an image in the lower layer N+1 531 may be used as a reference image to encode a corresponding image in the upper layer N+1 532. As a specific example, the image 511 may be encoded by reference to the image 515 in accordance with the inter-layer prediction 521. In such a case, image 515 is used as an interlayer reference image. An inter-layer reference picture is a reference picture used for inter-layer prediction 521. In most cases, inter-layer prediction 521 is limited such that the current picture, such as picture 511, can only use inter-layer reference pictures that are included in the same AU and are in a lower layer, such as image 515. When multiple layers are available (eg, more than two), inter-layer prediction 521 may encode/decode the current image based on multiple inter-layer reference images on layers lower than the current image.

Видеокодер может использовать многослойную видеопоследовательность 500 для кодирования изображений 511-518 с помощью множества различных комбинаций и/или перестановок межкадрового предсказания 523 и межслойного предсказания 521. Например, изображение 515 может быть закодировано в соответствии с межкадровым предсказанием. Затем изображения 516-518 могут быть закодированы в соответствии с межкадровым предсказанием 523 с использованием изображения 515 в качестве опорного изображения. Кроме того, изображение 511 может быть закодировано в соответствии с межслойным предсказанием 521 с использованием изображения 515 в качестве межслойного опорного изображения. Затем изображения 512-514 могут быть закодированы в соответствии с межкадровым предсказанием 523 с использованием изображения 511 в качестве опорного изображения. Таким образом, опорное изображение может служить как однослойным опорным изображением, так и межслойным опорным изображением для различных механизмов кодирования. Кодируя N+1 532 изображений верхнего слоя на основе N 531 изображений нижнего слоя, верхний слой N+1 532 может избежать использования внутрикадрового предсказания, которое имеет гораздо более низкую эффективность кодирования, чем межкадровое предсказание 523 и межслойное предсказание 521. Таким образом, низкая эффективность кодирования внутрикадрового предсказания может быть ограничена изображениями наименьшего/самого низкого качества и, следовательно, ограничена кодированием наименьшего количества видеоданных. Изображения, используемые в качестве опорных изображений и/или межслойных опорных изображений, могут быть указаны в записях списка(ов) опорных изображений, содержащегося(ихся) в структуре списка опорных изображений.A video encoder may use multi-layer video sequence 500 to encode images 511-518 with a variety of different combinations and/or permutations of inter-picture prediction 523 and inter-layer prediction 521. For example, image 515 may be encoded in accordance with inter-picture prediction. Images 516-518 may then be encoded according to inter-frame prediction 523 using image 515 as a reference image. In addition, image 511 may be encoded in accordance with inter-layer prediction 521 using image 515 as an inter-layer reference image. The pictures 512-514 may then be encoded according to inter-frame prediction 523 using the picture 511 as a reference picture. Thus, the reference image can serve as either a single-layer reference image or an inter-layer reference image for various encoding mechanisms. By encoding N+1532 top layer images based on N531 bottom layer images, the N+1532 top layer can avoid using intra-frame prediction, which has much lower coding efficiency than inter-frame prediction 523 and inter-layer prediction 521. Thus, low efficiency Intra prediction coding may be limited to the smallest/lowest quality images and therefore limited to encoding the least amount of video data. Pictures used as reference pictures and/or inter-layer reference pictures may be specified in reference picture list(s) entries contained in the reference picture list structure.

Каждая AU 506, показанная на фиг. 5, может содержать несколько изображений. Например, одна AU 506 может содержать изображения 511 и 515. Другая AU 506 может содержать изображения 512 и 516. Фактически каждая AU 506 представляет собой набор из одного или более кодированных изображений, ассоциированных с одним и тем же временем отображения (например, с одним и тем же временным ID) для вывода из буфера декодированных изображений (DPB) (например, для отображения пользователю). Каждая AUD 508 является индикатором или структурой данных, используемой для указания начала AU (например, AU 508) или границы между AU.Each AU 506 shown in FIG. 5 may contain multiple images. For example, one AU 506 may contain images 511 and 515. Another AU 506 may contain images 512 and 516. In fact, each AU 506 is a set of one or more encoded images associated with the same display time (e.g., one and same temporary ID) for output from the decoded picture buffer (DPB) (for example, for display to the user). Each AUD 508 is an indicator or data structure used to indicate the start of an AU (eg, AU 508) or the boundary between AUs.

Предыдущие семейства кодирования видео H.26x обеспечивали поддержку масштабируемости в отдельном(ых) профиле(ях) из профиля(ей) для однослойного кодирования. Масштабируемое кодирование видео (SVC) - это масштабируемое расширение AVC/H.264, которое обеспечивает поддержку для пространственно-временной масштабируемости и масштабируемости качества. Для SVC в каждом макроблоке (MB) в изображениях EL сигнализируется флаг для указания того, предсказывается ли MB EL с использованием совмещенного блока из нижнего слоя. Предсказание из совмещенного блока может включать в себя текстуру, векторы движения и/или режимы кодирования. Реализации SVC не могут напрямую повторно использовать немодифицированные реализации AVC в своей конструкции. Синтаксис макроблока EL SVC и процесс декодирования отличаются от синтаксиса H.264/AVC и процесса декодирования.Previous H.26x video encoding families provided scalability support in a separate profile(s) from the profile(s) for single-layer encoding. Scalable Video Coding (SVC) is a scalable extension to AVC/H.264 that provides support for spatio-temporal scalability and quality scalability. For SVC, a flag is signaled in each macroblock (MB) in the EL pictures to indicate whether the EL MB is predicted using a co-located block from the lower layer. The prediction from the combined block may include texture, motion vectors, and/or encoding modes. SVC implementations cannot directly reuse unmodified AVC implementations in their design. The EL SVC macroblock syntax and decoding process are different from the H.264/AVC syntax and decoding process.

Масштабируемый HEVC (SHVC) является расширением стандарта HEVC/H.265, которое обеспечивает поддержку пространственной масштабируемости и масштабируемости качества, многоракурсный HEVC (MV-HEVC) является расширением HEVC/H.265, которое обеспечивает поддержку нескольких многоракурсной масштабируемости, и 3D HEVC (3D-HEVC) является расширением HEVC/H.264, которое обеспечивает поддержку кодирования трехмерного (3D) видео, которое является более совершенным и эффективным, чем MV-HEVC. Следует отметить, что временная масштабируемость включена как неотъемлемая часть однослойного кодека HEVC. В проекте многослойного расширения HEVC используется идея, согласно которой декодированные изображения, используемые для межслойного предсказания, поступают только из одной и той же единицы доступа (AU) и обрабатываются как долгосрочные опорные изображения (LTRP), и им назначаются опорные индексы в списке(ах) опорных изображений наряду с другими временными опорными изображениями в текущем слое. Межслойное предсказание (ILP) достигается на уровне единицы предсказания (PU) путем установки значения опорного индекса для ссылки на межслойное опорное изображение (изображения) в списке(ах) опорных изображений.Scalable HEVC (SHVC) is an extension of the HEVC/H.265 standard that provides support for spatial and quality scalability, multi-view HEVC (MV-HEVC) is an extension of HEVC/H.265 that provides support for multi-view scalability, and 3D HEVC (3D -HEVC) is an extension to HEVC/H.264 that provides support for three-dimensional (3D) video encoding that is more advanced and efficient than MV-HEVC. It should be noted that temporal scalability is included as an integral part of the single-layer HEVC codec. The HEVC multi-layer extension design uses the idea that decoded pictures used for inter-layer prediction come only from the same access unit (AU) and are treated as long-term reference pictures (LTRP) and are assigned reference indices in the list(s) reference images along with other temporary reference images in the current layer. Inter-layer prediction (ILP) is achieved at the prediction unit (PU) level by setting a reference index value to reference the inter-layer reference picture(s) in the reference picture list(s).

Примечательно, что функции передискретизации опорного изображения и пространственного масштабирования требуют повторной выборки опорного изображения или его части. Передискретизация опорного изображения (RPR) может быть реализована либо на уровне изображения, либо на уровне блока кодирования. Однако, когда RPR упоминается как функция кодирования, она представляет собой функции однослойного кодирования. Даже в этом случае возможно или даже предпочтительно с точки зрения разработки кодека использовать один и тот же фильтр передискретизации как для функции RPR однослойного кодирования, так и для функции пространственной масштабируемости для многослойного кодирования.Notably, the reference image resampling and spatial scaling functions require resampling the reference image or part of it. Reference picture resampling (RPR) can be implemented either at the picture level or at the coding block level. However, when RPR is referred to as a coding function, it represents single-layer coding functions. Even so, it is possible or even preferable from a codec design point of view to use the same oversampling filter for both the single-layer encoding RPR function and the multi-layer encoding spatial scalability function.

На фиг. 6 показан пример предсказания 600 на основе слоев с использованием наборов слоев вывода (OLS), например, как это выполняется для определения MV на этапе 105 сжатия блока, этапа 113 декодирования блока, компонента 221 оценки движения, компонента 219 компенсации движения, компонента 321 компенсации движения и/или компонента 421 компенсации движения. Предсказание 600 на основе слоев совместимо с однонаправленным межкадровым предсказанием и/или двунаправленным межкадровым предсказанием, но также выполняется между изображениями в разных слоях. Предсказание на основе слоев, показанных на фиг. 6, аналогично показанному на фиг. 5. Поэтому для краткости полное описание предсказания на основе слоев не повторяется.In fig. 6 shows an example of layer-based prediction 600 using output layer sets (OLS), for example, as performed to determine the MV at block compression step 105, block decoding step 113, motion estimation component 221, motion compensation component 219, motion compensation component 321 and/or motion compensation component 421. Layer-based prediction 600 is compatible with unidirectional inter-frame prediction and/or bi-directional inter-frame prediction, but is also performed between images in different layers. Prediction based on the layers shown in FIG. 6, similar to that shown in FIG. 5. Therefore, for the sake of brevity, the full description of layer-based prediction is not repeated.

Некоторые из слоев в кодированной видеопоследовательности (CVS) 690, показанной на фиг. 6, включены в OLS. OLS - это набор слоев, для которых один или более слоев указаны в качестве слоев вывода. Слой вывода представляет собой слой вывода OLS. На фиг. 6 показаны три различных OLS, а именно OLS 1, OLS 2 и OLS 3. Как показано, OLS 1 включает в себя слой N 631 и слой N+1 632. OLS 2 включает в себя слой N 631, слой N+1 632, слой N+2. 633 и слой N+3 634. OLS 3 включает в себя слой N 631. То есть OLS 3 включает в себя один единственный слой. В практических приложениях другие OLS также могут содержать один единственный слой. Несмотря на то, что показаны три OLS, в практических приложениях может использоваться разное количество OLS. Другие слои, такие как слой N+4 635, не включены в проиллюстрированные OLS (например, OLS 1, 2 и 3), но доступны для включения в другие OLS.Some of the layers in the coded video sequence (CVS) 690 shown in FIG. 6 are included in OLS. An OLS is a set of layers for which one or more layers are specified as output layers. The output layer is an OLS output layer. In fig. 6 shows three different OLSs, namely OLS 1, OLS 2 and OLS 3. As shown, OLS 1 includes layer N 631 and layer N+1 632. OLS 2 includes layer N 631, layer N+1 632, layer N+2. 633 and layer N+3 634. OLS 3 includes layer N 631. That is, OLS 3 includes one single layer. In practical applications, other OLS may also contain a single layer. Although three OLS are shown, different numbers of OLS may be used in practical applications. Other layers, such as the N+4 635 layer, are not included in the OLSs illustrated (e.g., OLS 1, 2, and 3) but are available for inclusion in other OLSs.

Каждый из различных OLS может содержать любое количество слоев. Различные OLS вырабатываются с целью согласования возможностей кодирования различных устройств, имеющих различные возможности кодирования. Например, OLS 3, который содержит один единственный слой, может быть создан для работы с мобильным телефоном с относительно ограниченными возможностями кодирования. С другой стороны, OLS 2, который содержит четыре слоя, может быть создан для работы с телевизором с большим экраном, который способен декодировать более высокие слои, чем мобильный телефон. OLS 1, который содержит два слоя, может быть создан для работы с персональным компьютером, портативным компьютером или планшетным компьютером, которые могут декодировать более высокие слои, чем мобильный телефон, но не могут декодировать самые высокие слои, такие как телевизор с большим экраном.Each of the different OLSs can contain any number of layers. Different OLSs are developed to accommodate the encoding capabilities of different devices having different encoding capabilities. For example, OLS 3, which contains one single layer, could be designed to work with a mobile phone with relatively limited encoding capabilities. On the other hand, OLS 2, which contains four layers, can be designed to work with a large screen TV that is capable of decoding higher layers than a mobile phone. OLS 1, which contains two layers, can be designed to work with a personal computer, laptop or tablet computer that can decode higher layers than a mobile phone, but cannot decode the highest layers such as a large screen TV.

Все слои, показанные на фиг. 6, могут быть независимыми друг от друга. То есть каждый слой может быть закодирован без использования межслойного предсказания (ILP). В этом случае слои называются слоями одновременной передачи. Один или более слоев, показанных на фиг. 6, также могут быть закодированы с использованием ILP. О том, являются ли слои слоями одновременной передачи, или закодированы ли некоторые из слоев с использованием ILP, сигнализирует флаг в наборе параметров видео (VPS), который будет более подробно обсуждаться ниже. Когда некоторые слои используют ILP, отношения зависимости слоев между слоями также сигнализируются в VPS.All layers shown in Fig. 6, can be independent of each other. That is, each layer can be encoded without using inter-layer prediction (ILP). In this case, the layers are called simulcast layers. One or more layers shown in FIG. 6 may also be encoded using ILP. Whether the layers are simulcast layers, or whether some of the layers are encoded using ILP, is signaled by a flag in the Video Parameter Set (VPS), which will be discussed in more detail below. When some layers use ILP, layer dependency relationships between layers are also signaled to the VPS.

В варианте осуществления, когда слои являются слоями одновременной передачи, для декодирования и вывода выбирается один единственный слой. В варианте осуществления, когда некоторые слои используют ILP, все слои (например, весь битовый поток) задаются для декодирования, и определенные слои среди слоев задаются как слои вывода. Слой или слои вывода могут быть, например, 1) только самым высоким слоем, 2) всеми слоями или 3) самым высоким слоем плюс набор указанных нижних слоев. Например, когда самый высокий слой плюс набор указанных нижних слоев назначаются для вывода флагом в VPS, выводятся слой N+3 634 (который является самым высоким слоем) и слои N 631 и N+1 632 (которые ниже слои) из OLS 2.In the embodiment, when the layers are simulcast layers, one single layer is selected for decoding and output. In an embodiment, when some layers use ILP, all layers (eg, the entire bitstream) are set for decoding, and certain layers among the layers are set as output layers. The output layer or layers may be, for example, 1) only the highest layer, 2) all layers, or 3) the highest layer plus a set of specified lower layers. For example, when the highest layer plus a set of specified lower layers are designated for output by flag in the VPS, layer N+3634 (which is the highest layer) and layers N631 and N+1632 (which are lower layers) from OLS 2 are output.

Как показано на фиг. 6, каждый слой состоит из любого количества изображений. Например, слой N 631 включает в себя изображения 615-618, слой N+1 632 включает в себя изображения 611-614, слой N+2 633 включает в себя изображения 641-644, слой N+3 634 включает в себя изображения 651-654, и слой N+4 635 включает в себя изображения 661-664.As shown in FIG. 6, each layer consists of any number of images. For example, layer N 631 includes images 615-618, layer N+1 632 includes images 611-614, layer N+2 633 includes images 641-644, layer N+3 634 includes images 651- 654, and layer N+4 635 includes images 661-664.

Стандарты кодирования видео, такие как HEVC, SHVC, MV-HEVC и VVC, определяют и сигнализируют профиль, ранг и уровень. Профили, ранги и уровни определяют ограничения на битовые потоки и, следовательно, ограничивают возможности, необходимые для декодирования битовых потоков. Профили, ранги и уровни также могут использоваться для указания точек функциональной совместимости между отдельными реализациями декодера. Профиль - это определенный набор инструментов кодирования, используемых для создания совместимого или соответствующего битового потока. Каждый профиль определяет подмножество алгоритмических функций и ограничений, которые должны поддерживаться всеми декодерами, соответствующими этому профилю.Video coding standards such as HEVC, SHVC, MV-HEVC and VVC define and signal profile, rank and level. Profiles, ranks, and levels define restrictions on bitstreams and therefore limit the capabilities required to decode the bitstreams. Profiles, ranks, and levels can also be used to specify points of interoperability between individual decoder implementations. A profile is a specific set of encoding tools used to create a compatible or conforming bitstream. Each profile defines a subset of algorithmic features and constraints that must be supported by all decoders conforming to that profile.

Уровень представляет собой набор ограничений для битового потока (например, максимальную частоту дискретизации яркости, максимальную скорость передачи битов для разрешения и т.д.). То есть уровень представляет собой набор ограничений, указывающих требуемую производительность декодера для воспроизведения битового потока заданного профиля.A level is a set of constraints on a bit stream (eg maximum luminance sampling rate, maximum bit rate for resolution, etc.). That is, a level is a set of constraints indicating the required decoder performance to reproduce a bit stream of a given profile.

Уровни разделены на два ранга: основной и высокий. Основной ранг является более низким рангом, чем высокий ранг. Ранги были созданы для работы с приложениями, которые различаются максимальной скоростью передачи данных. Основной ранг был разработан для большинства приложений, в то время как высокий ранг был разработан для очень требовательных приложений. Набор ограничений и/или рангов, соответствующих уровням, может упоминаться здесь как информация уровня.The levels are divided into two ranks: basic and high. Major Rank is a lower rank than High Rank. Ranks were created to work with applications that differ in their maximum data transfer rates. Basic rank was designed for most applications, while high rank was designed for very demanding applications. A set of restrictions and/or ranks corresponding to levels may be referred to herein as level information.

Каждый уровень ранга определяет набор ограничений на значения, которые могут принимать синтаксические элементы конкретного стандарта (например, HEVC, VVC). Один и тот же набор определений ранга и уровня используется со всеми профилями, но отдельные реализации могут поддерживать другой ранг, и внутри ранга другой уровень для каждого поддерживаемого профиля. Для любого заданного профиля уровень ранга обычно соответствует конкретной вычислительной нагрузке декодера и возможностям памяти.Each rank level defines a set of restrictions on the values that syntactic elements of a particular standard (e.g., HEVC, VVC) can take. The same set of rank and level definitions is used with all profiles, but individual implementations may support a different rank, and within a rank, a different level for each supported profile. For any given profile, the rank level typically corresponds to the specific decoder computational load and memory capabilities.

При использовании стандарта HEVC показательный пример уровней и рангов для различных профилей представлен в ниже таблице 1.When using the HEVC standard, an illustrative example of levels and ranks for various profiles is presented in Table 1 below.

Таблица 1Table 1

УровеньLevel Максимальная битовая скорость для основного профиля 12 4:4:4
(1000 бит/сек)
Maximum bit rate for main profile 12 4:4:4
(1000 bps)
Максимальная скорость передачи данных для высокой пропускной способности
4:4:4 16 Внутренний профиль
(1000 бит/сек)
Maximum data transfer rate for high throughput
4:4:4 16 Internal profile
(1000 bps)
Пример разрешения изображения при максимальной частоте кадров
(MaxDPBsize)
Example of image resolution at maximum frame rate
(MaxDPBsize)
Основной рангMain rank Высокий рангHigh rank Основной рангMain rank Высокий рангHigh rank 5.25.2 180000180000 720000720000 57600005760000 2304000023040000 4096×2160 при120 Гц4096×2160 at 120 Hz 66 180000180000 720000720000 57600005760000 2304000023040000 8192×4320 при 30 Гц8192x4320 at 30 Hz 6.16.1 180000180000 720000720000 1152000011520000 4608000046080000 8192×4320 при 60 Гц8192x4320 at 60 Hz 6.26.2 720000720000 24000002400000 2304000023040000 7680000076800000 8192×4320 при 120 Гц8192x4320 at 120 Hz

Параметры профиля, ранга и уровня (PTL) представляют собой синтаксическую структуру (например, i-ю синтаксическую структуру profile_tier_level()), которая обеспечивает профиль, ранг и/или уровень, как указано в таблице выше. Параметры буфера декодированных изображений (DPB) представляют собой синтаксическую структуру (например, i-ю синтаксическую структуру dpb_parameters()), которая обеспечивает размер DPB, в качестве варианта максимальное количество переупорядочений изображений и информацию о максимальной задержке. Максимальное количество переупорядочений изображений и информация о максимальной задержке могут совместно обозначаться аббревиатурой MRML. Параметры HRD представляют собой синтаксическую структуру (например, i-ую синтаксическую структуру ols_timing_hrd_parameters()), которая инициализирует и/или определяет рабочие условия HRD. Дополнительные подробности и особенности, касающиеся одного или более параметров PTL, параметров DPB и параметров HRD, представлены ниже.The profile, rank, and level (PTL) parameters are a syntactic structure (e.g., the i-th syntax structure profile_tier_level()) that provides a profile, rank, and/or level, as specified in the table above. The decoded picture buffer (DPB) parameters are a syntax structure (eg, the i-th syntax structure dpb_parameters()) that provides the size of the DPB, optionally the maximum number of picture reorders, and maximum delay information. The maximum number of image reorders and maximum delay information may be collectively abbreviated MRML. HRD parameters are a syntactic structure (eg, the i-th syntax structure ols_timing_hrd_parameters()) that initializes and/or defines the operating conditions of the HRD. Additional details and specifics regarding one or more of the PTL parameters, DPB parameters and HRD parameters are presented below.

В варианте осуществления максимальное количество переупорядочений изображений обозначается как dpb_max_num_reorder_pics[ i ], который указывает максимально допустимое количество изображений OLS, которые могут предшествовать любому изображению в OLS в порядке декодирования и следовать за этим изображением в порядке вывода, когда значение Htid равно i. Значение dpb_max_num_reorder_pics[ i ] должно находиться в диапазоне от 0 до dpb_max_dec_pic_buffering_minus1[ i ] включительно. Когда i больше 0, dpb_max_num_reorder_pics[ i ] должно быть больше или равно dpb_max_num_reorder_pics[i - 1]. Когда dpb_max_num_reorder_pics[ i ] отсутствует для i в диапазоне от 0 до MaxSubLayersMinus1 - 1 включительно, из-за того, что флаг subLayerInfoFlag равен 0, предполагается, что он равен dpb_max_num_reorder_pics[ MaxSubLayersMinus1 ]. Htid - это переменная, которая идентифицирует самый высокий временной подслой, подлежащий декодированию.In an embodiment, the maximum number of picture reorders is denoted by dpb_max_num_reorder_pics[ i ], which specifies the maximum allowed number of OLS pictures that can precede any picture in the OLS in decoding order and follow that picture in output order when the Htid value is i. The value of dpb_max_num_reorder_pics[ i ] must be in the range from 0 to dpb_max_dec_pic_buffering_minus1[ i ], inclusive. When i is greater than 0, dpb_max_num_reorder_pics[ i ] must be greater than or equal to dpb_max_num_reorder_pics[i - 1]. When dpb_max_num_reorder_pics[ i ] is missing for i in the range 0 to MaxSubLayersMinus1 - 1 inclusive, because the subLayerInfoFlag is 0, it is assumed to be equal to dpb_max_num_reorder_pics[ MaxSubLayersMinus1 ]. Htid is a variable that identifies the highest temporal sublayer to be decoded.

dpb_max_dec_pic_buffering_minus1[ i ] плюс 1 указывает максимальный требуемый размер DPB в единицах буферов хранения изображений, когда значение Htid равно i. Значение dpb_max_dec_pic_buffering_minus1[ i ] должно находиться в диапазоне от 0 до MaxDpbSize - 1 включительно, где MaxDpbSize соответствует подпункту A.4.2 стандарта VVC. Когда i больше 0, dpb_max_dec_pic_buffering_minus1[ i ] должно быть больше или равно dpb_max_dec_pic_buffering_minus1[i - 1]. Когда dpb_max_dec_pic_buffering_minus1[ i ] отсутствует для i в диапазоне от 0 до MaxSubLayersMinus1 - 1 включительно, из-за того, что флаг subLayerInfoFlag равен 0, предполагается, что он равен dpb_max_dec_pic_buffering_minus1[ MaxSubLayersMinus1 ].dpb_max_dec_pic_buffering_minus1[ i ] plus 1 specifies the maximum required DPB size in units of image storage buffers when Htid is equal to i. The value of dpb_max_dec_pic_buffering_minus1[ i ] shall be in the range from 0 to MaxDpbSize - 1 inclusive, where MaxDpbSize corresponds to subclause A.4.2 of the VVC standard. When i is greater than 0, dpb_max_dec_pic_buffering_minus1[ i ] must be greater than or equal to dpb_max_dec_pic_buffering_minus1[i - 1]. When dpb_max_dec_pic_buffering_minus1[ i ] is missing for i in the range 0 to MaxSubLayersMinus1 - 1 inclusive, because the subLayerInfoFlag is 0, it is assumed to be equal to dpb_max_dec_pic_buffering_minus1[ MaxSubLayersMinus1 ].

В варианте осуществления информация максимальная задержка обозначается как dpb_max_latency_increase_plus1[ i ]. Параметр dpb_max_latency_increase_plus1[ i ], не равный 0, используется для вычисления значения MaxLatencyPictures[ i ], которое указывает максимальное количество изображений в OLS, которые могут предшествовать любому изображению в OLS в порядке вывода и следовать за этим изображением в порядке декодирования, когда значение Htid равно i.In an embodiment, the maximum latency information is denoted as dpb_max_latency_increase_plus1[ i ]. The parameter dpb_max_latency_increase_plus1[ i ], not equal to 0, is used to calculate the MaxLatencyPictures[ i ] value, which specifies the maximum number of pictures in OLS that can precede any picture in OLS in output order and follow that picture in decoding order when the Htid value is i.

MaxLatencyPictures[ i ] = dpb_max_num_reorder_pics[ i ] + dpb_max_latency_increase_plus1[ i ] - 1.MaxLatencyPictures[ i ] = dpb_max_num_reorder_pics[ i ] + dpb_max_latency_increase_plus1[ i ] - 1.

Синтаксические структуры DPB (также известные как параметры DPB) для описанных выше OLS включаются в VPS битового потока. К сожалению, сигнализация всех этих синтаксических структур DPB в VPS неэффективна, когда OLS содержит один единственный слой (например, OLS 3, показанный на фиг. 6).The DPB syntax structures (also known as DPB parameters) for the OLS described above are included in the bitstream VPS. Unfortunately, signaling all of these DPB syntactic structures in the VPS is ineffective when the OLS contains one single layer (eg, OLS 3 shown in Fig. 6).

В данном документе раскрыты технологии, которые обеспечивают включение параметров буфера декодированных изображений (DPB) в набор параметров последовательности (SPS) тогда, когда набор слоев вывода (OLS) содержит один единственный слой. Так как SPS включает в себя параметры DPB для OLS с одним слоем, набор параметров видео (VPS) может быть удален из битового потока, что уменьшает избыточность и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») при кодировании видео улучшен по сравнению с современными кодеками. С практической точки зрения улучшенный процесс кодирования видео обеспечивает пользователю лучшее пользовательское восприятие при отправке, приеме и/или просмотре видео.Disclosed herein are technologies that enable decoded picture buffer (DPB) parameters to be included in a sequence parameter set (SPS) when the output layer set (OLS) contains a single layer. Since SPS includes DPB parameters for single-layer OLS, the video parameter set (VPS) can be removed from the bitstream, reducing redundancy and improving coding efficiency. Thus, the encoder/decoder (aka "codec") for video encoding is improved compared to modern codecs. From a practical standpoint, the improved video encoding process provides the user with a better user experience when sending, receiving and/or viewing video.

На фиг. 7 показан вариант осуществления битового видеопотока 700. Используемый в данном документе битовый видеопоток 700 может также называться кодированным битовым видеопотоком, битовым потоком или их вариантами. Как показано на фиг. 7, битовый поток 700 включает в себя набор 704 параметров видео (VPS), набор 706 параметров последовательности (SPS), набор 708 параметров изображения (PPS), заголовок 712 среза и данные 720 изображения. Каждый из VPS 704, SPS 706 и PPS 708 может обобщенно называться набором параметров. В варианте осуществления другие наборы параметров и/или заголовки, не показанные на фиг. 7, также могут быть включены в битовый поток 700.In fig. 7 shows an embodiment of a video bitstream 700. As used herein, the video bitstream 700 may also be referred to as a coded video bitstream, a bitstream, or variants thereof. As shown in FIG. 7, bitstream 700 includes a video parameter set (VPS) 704, a sequence parameter set (SPS) 706, a picture parameter set (PPS) 708, a slice header 712, and image data 720. Each of the VPS 704, SPS 706 and PPS 708 may be collectively referred to as a parameter set. In an embodiment, other parameter sets and/or headers not shown in FIG. 7 may also be included in the bit stream 700.

VPS 704 включает в себя зависимость декодирования или информацию для построения набора опорных изображений улучшающих слоев. VPS 704 обеспечивает общую перспективу или вид масштабируемой последовательности, включая типы предоставляемых рабочих точек, профиль, ранг и уровень рабочих точек, и некоторые другие высокоуровневые свойства битового потока 700, которые можно использовать в качестве основы для согласования сеанса и выбора содержания и т.д.VPS 704 includes decoding dependency or information for constructing a set of enhancement layer reference images. VPS 704 provides an overall perspective or view of the scalable sequence, including the types of operating points provided, the profile, rank and level of operating points, and certain other high-level properties of the bitstream 700 that can be used as the basis for session negotiation and content selection, etc.

В варианте осуществления VPS 704 включает в себя список синтаксических структур 780 DPB для всех OLS. В варианте осуществления каждая из синтаксических структур DPB в списке синтаксических структур 780 DPB обозначается как dpb_parameters(). VPS 704 также включает в себя синтаксическую структуру vps_ols_dpb_params_idx[ i ] 782. Синтаксическая структура vps_ols_dpb_params_idx[ i ] 782 указывает индекс синтаксической структуры DPB, который применяется к i-му OLS. То есть каждое значение индекса соответствует одной из синтаксических структур DPB в списке. Например, значение индекса 1 в списке соответствует dpb_parameters () для OLS 1, значение индекса 2 соответствует dpb_parameters() для OLS 2, и значение индекса 3 соответствует dpb_parameters() для OLS 3.In an embodiment, the VPS 704 includes a list of DPB syntax structures 780 for all OLSs. In an embodiment, each of the DPB syntax structures in the list of DPB syntax structures 780 is designated dpb_parameters(). The VPS 704 also includes a vps_ols_dpb_params_idx[ i ] syntax structure 782. The vps_ols_dpb_params_idx[ i ] syntax structure 782 specifies the DPB syntax structure index that applies to the i-th OLS. That is, each index value corresponds to one of the DPB syntax structures in the list. For example, index value 1 in the list corresponds to dpb_parameters() for OLS 1, index value 2 corresponds to dpb_parameters() for OLS 2, and index value 3 corresponds to dpb_parameters() for OLS 3.

Значение vps_ols_dpb_params_idx[ i ], при его наличии, находится в диапазоне от 0 до VpsNumDpbParams - 1 включительно.The value of vps_ols_dpb_params_idx[ i ], if present, is in the range from 0 to VpsNumDpbParams - 1 inclusive.

Синтаксический элемент vps_num_dpb_params_minus1 781 указывает количество синтаксических структур dpb_parameters() в VPS 704. Значение vps_num_dpb_params_minus1 781 находится в диапазоне от нуля до менее чем общего количества многослойных OLS, которое может быть обозначено как NumMultiLayerOlss.The syntax element vps_num_dpb_params_minus1 781 specifies the number of dpb_parameters() syntax structures in the VPS 704. The value of vps_num_dpb_params_minus1 781 ranges from zero to less than the total number of multilayer OLSs, which can be denoted as NumMultiLayerOlss.

Переменная VpsNumDpbParams - 1 получается видеодекодером (то есть переменная не сигнализируется в битовом потоке) на основе синтаксического элемента vps_num_dpb_params_minus1 781, который сигнализируется в битовом потоке.The variable VpsNumDpbParams - 1 is obtained by the video decoder (that is, the variable is not signaled in the bitstream) based on the syntax element vps_num_dpb_params_minus1 781, which is signaled in the bitstream.

В варианте осуществления переменная VpsNumDpbParams - 1 получается следующим образом.In an embodiment, the variable VpsNumDpbParams - 1 is obtained as follows.

if( vps_each_layer_is_an_ols_flag )if( vps_each_layer_is_an_ols_flag )

VpsNumDpbParams = 0 … (34)VpsNumDpbParams = 0 … (34)

elseelse

VpsNumDpbParams = vps_num_dpb_params_minus1 + 1VpsNumDpbParams = vps_num_dpb_params_minus1 + 1

Переменная VpsNumDpbParams - 1 плюс 1 указывает количество синтаксических структур DPB в VPS 704. Например, когда значение VpsNumDpbParams - 1 равно двум, количество синтаксических структур DPB в VPS 704 равно трем (2+1=3).The variable VpsNumDpbParams - 1 plus 1 indicates the number of DPB syntax structures in the VPS 704. For example, when the value of VpsNumDpbParams - 1 is two, the number of DPB syntax structures in the VPS 704 is three (2+1=3).

В варианте осуществления VPS 704 включает в себя флаг 783 наличия DPB, который может быть обозначен как vps_sublayer_dpb_params_present_flag, используемый для управления наличием синтаксических элементов dpb_max_dec_pic_buffering_minus1[ j ], dpb_max_num_reorder_pics[ j ] и dpb_max_latency_increase_plus1[ j ] в синтаксических структурах dpb_parameters() в VPS для j в диапазоне от 0 до vps_dpb_max_tid[ i ] - 1 включительно, когда vps_dpb_max_tid[ i ] больше 0. Если значение vps_sub_dpb_params_info_present_flag отсутствует, предполагается, что оно равно 0.In an embodiment, the VPS 704 includes a DPB presence flag 783, which may be designated vps_sublayer_dpb_params_present_flag, used to control the presence of dpb_max_dec_pic_buffering_minus1[ j ], dpb_max_num_reorder_pics[ j ] and dpb_max_latency_increase_plus1[ j ] syntax elements in dpb syntax structures _parameters() in VPS for j in the range from 0 to vps_dpb_max_tid[ i ] - 1 inclusive, when vps_dpb_max_tid[ i ] is greater than 0. If the value of vps_sub_dpb_params_info_present_flag is missing, it is assumed to be 0.

SPS 706 содержит данные, которые являются общими для всех изображений в последовательности изображений (SOP). SPS 706 представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются к нулевой или более полной CLVS, что определяется содержанием синтаксического элемента, обнаруженного в PPS, на который ссылается синтаксический элемент, обнаруженный в заголовке каждого изображения.SPS 706 contains data that is common to all images in a Sequence of Pictures (SOP). SPS 706 is a syntax structure containing syntax elements that apply to zero or more complete CLVS, as determined by the content of the syntax element found in the PPS referenced by the syntax element found in the header of each image.

В варианте осуществления параметры dpb_parameters(), которые применяются к i-ому OLS 784, присутствуют в SPS 706, на который ссылается слой в i-ом OLS, когда i-ый OLS является однослойным OLS. То есть для однослойной OLS (например, для OLS 2, показанного на фиг. 6) применяемая синтаксическая структура dpb_parameters() присутствует в SPS, на которую ссылается слой в OLS.In an embodiment, the dpb_parameters() parameters that apply to the i-th OLS 784 are present in the SPS 706 referenced by the layer in the i-th OLS when the i-th OLS is a single-layer OLS. That is, for a single-layer OLS (eg, OLS 2 shown in FIG. 6), the applicable dpb_parameters() syntax structure is present in the SPS referenced by the layer in the OLS.

На основании вышеизложенного следует понимать, что когда OLS является однослойным OLS (например, OLS содержит один единственный слой), dpb_parameters(), которые применяются к i-ому OLS 784, присутствуют как в SPS 706, так и в VPS 704 (то есть синтаксическая структура DPB, которая применяется к i-му OLS, является одной из синтаксических структур DPB, включенных в структуры 780 DPB). Более того, параметры dpb_parameters(), которые применяются к i-му OLS 784 в SPS 706, идентичны параметрам dpb_parameters(), которые применяются к i-му OLS 784 в VPS 704.Based on the above, it should be understood that when the OLS is a single-layer OLS (for example, the OLS contains one single layer), the dpb_parameters() that apply to the i-th OLS 784 are present in both the SPS 706 and the VPS 704 (i.e., syntactic The DPB structure that applies to the i-th OLS is one of the DPB syntactic structures included in the DPB structures 780). Moreover, the dpb_parameters() parameters that apply to the i-th OLS 784 in the SPS 706 are identical to the dpb_parameters() parameters that apply to the i-th OLS 784 in the VPS 704.

В отличие от SPS 706, PPS 708 содержит данные, которые являются общими для всего изображения. PPS 708 представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются к нулевым или более полным кодированным изображениям. Заголовок 712 среза является частью кодированного среза, содержащего элементы данных, относящиеся ко всем видеоданным в тайле, представленном в срезе. Заголовок 712 среза содержит параметры, которые специфичны для каждого среза в изображении. Таким образом, может быть один заголовок 712 среза на срез в видеопоследовательности. Заголовок 712 среза может содержать информацию о типе среза, счетчики очередности изображений (POC), списки опорных изображений (RPL), весовые коэффициенты предсказания, точки ввода тайлов или параметры деблокирования. Заголовок 712 среза также может называться заголовком группы тайлов и/или заголовком изображения (PH).Unlike SPS 706, PPS 708 contains data that is common to the entire image. PPS 708 is a syntax structure containing syntax elements that apply to zero or more complete encoded pictures. The slice header 712 is part of an encoded slice containing data elements related to all video data in the tile represented in the slice. The slice header 712 contains parameters that are specific to each slice in the image. Thus, there may be one slice header 712 per slice in a video sequence. The slice header 712 may contain slice type information, picture order counters (POCs), reference picture lists (RPLs), prediction weights, tile insertion points, or deblocking parameters. The slice header 712 may also be referred to as a tile group header and/or a picture header (PH).

В варианте осуществления VPS 704 и/или SPS 706 содержат следующий синтаксис и семантику SPS для реализации одного или более вариантов осуществления, раскрытых в данном документе.In an embodiment, VPS 704 and/or SPS 706 comprise the following SPS syntax and semantics for implementing one or more embodiments disclosed herein.

Синтаксис VPS включает в себя следующее.VPS syntax includes the following.

video_parameter_set_rbsp() {video_parameter_set_rbsp() { ДескрипторDescriptor vps_video_parameter_set_idvps_video_parameter_set_id u(4)u(4) vps_max_layers_minus1vps_max_layers_minus1 u(6)u(6) vps_max_sub_layers_minus1vps_max_sub_layers_minus1 u(3)u(3) if( vps_max_layers_minus1 > 0 && vps_max_sub_layers_minus1 > 0 )if( vps_max_layers_minus1 > 0 && vps_max_sub_layers_minus1 > 0 ) vps_all_layers_same_num_sub_layers_flagvps_all_layers_same_num_sub_layers_flag u(1)u(1) if( vps_max_layers_minus1 > 0 )if( vps_max_layers_minus1 > 0 ) vps_all_independent_layers_flagvps_all_independent_layers_flag u(1)u(1) ...... vps_num_ptlsvps_num_ptls u(8)u(8) for( i = 0; i < vps_num_ptls; i++ ) {for( i = 0; i < vps_num_ptls; i++ ) { if( i > 0 )if( i > 0 ) pt_present_flag[i]pt_present_flag[i] u(1)u(1) if( vps_max_sub_layers_minus1 > 0 && !vps_all_layers_same_num_sub_layers_flag )if( vps_max_sub_layers_minus1 > 0 && !vps_all_layers_same_num_sub_layers_flag ) ptl_max_temporal_id[ i ]ptl_max_temporal_id[ i ] u(3)u(3) }} while( !byte_aligned( ) )while( !byte_aligned() ) vps_ptl_byte_alignment_zero_bit /* equal to 0 */vps_ptl_byte_alignment_zero_bit /* equal to 0 */ u(1)u(1) for( i = 0; i < vps_num_ptls; i++ )for( i = 0; i < vps_num_ptls; i++ ) profile_tier_level( pt_present_flag[ i ], ptl_max_temporal_id[ i ] )profile_tier_level( pt_present_flag[ i ], ptl_max_temporal_id[ i ] ) for( i = 0; i < TotalNumOlss; i++ )for( i = 0; i < TotalNumOlss; i++ ) if( NumLayersInOls[ i ] > 1 && vps_num_ptls > 1 )if( NumLayersInOls[ i ] > 1 && vps_num_ptls > 1 ) ols_ptl_idx[ i ]ols_ptl_idx[ i ] u(8)u(8) if( !vps_all_independent_layers_flag )if( !vps_all_independent_layers_flag ) vps_num_dpb_paramsvps_num_dpb_params ue(v)ue(v) if( vps_num_dpb_params > 0 ) {if( vps_num_dpb_params > 0 ) { same_dpb_size_output_or_nonoutput_flagsame_dpb_size_output_or_nonoutput_flag u(1)u(1) if( vps_max_sub_layers_minus1 > 0 )if( vps_max_sub_layers_minus1 > 0 ) vps_sub_layer_dpb_params_present_flagvps_sub_layer_dpb_params_present_flag u(1)u(1) }} for( i = 0; i < vps_num_dpb_params; i++ ) {for( i = 0; i < vps_num_dpb_params; i++ ) { dpb_size_only_flag[ i ]dpb_size_only_flag[ i ] u(1)u(1) if( vps_max_sub_layers_minus1 > 0 && !vps_all_layers_same_num_sub_layers_flag )if( vps_max_sub_layers_minus1 > 0 && !vps_all_layers_same_num_sub_layers_flag ) dpb_max_temporal_id[ i ]dpb_max_temporal_id[ i ] u(3)u(3) dpb_parameters( dpb_size_only_flag[ i ], dpb_max_temporal_id[ i ],
vps_sub_layer_dpb_params_present_flag )
dpb_parameters( dpb_size_only_flag[ i ], dpb_max_temporal_id[ i ],
vps_sub_layer_dpb_params_present_flag )
}} for( i = 0; i < vps_max_layers_minus1 && vps_num_dpb_params > 1; i++ ) {for( i = 0; i < vps_max_layers_minus1 && vps_num_dpb_params > 1; i++ ) { if( !vps_independent_layer_flag[ i ] )if( !vps_independent_layer_flag[ i ] ) layer_output_dpb_params_idx[ i ]layer_output_dpb_params_idx[ i ] ue(v)ue(v) if( LayerUsedAsRefLayerFlag[ i ] && !same_dpb_size_output_or_nonoutput_flag )if( LayerUsedAsRefLayerFlag[ i ] && !same_dpb_size_output_or_nonoutput_flag ) layer_nonoutput_dpb_params_idx[ i ]layer_nonoutput_dpb_params_idx[ i ] ue(v)ue(v) }} general_hrd_params_present_flaggeneral_hrd_params_present_flag u(1)u(1) if( general_hrd_params_present_flag ) {if( general_hrd_params_present_flag ) { num_units_in_ticknum_units_in_tick u(32)u(32) time_scaletime_scale u(32)u(32) general_hrd_parameters( )general_hrd_parameters( ) }} vps_extension_flagvps_extension_flag u(1)u(1) if( vps_extension_flag )if( vps_extension_flag ) while( more_rbsp_data( ) )while( more_rbsp_data() ) vps_extension_data_flagvps_extension_data_flag u(1)u(1) rbsp_trailing_bits( )rbsp_trailing_bits( ) }}

Синтаксис необработанных полезных данных последовательности байтов (RBSP) SPS включает в себя следующее.The SPS raw byte sequence payload (RBSP) syntax includes the following.

seq_parameter_set_rbsp( ) {seq_parameter_set_rbsp( ) { ДескрипторDescriptor sps_decoding_parameter_set_idsps_decoding_parameter_set_id u(4)u(4) sps_video_parameter_set_idsps_video_parameter_set_id u(4)u(4) sps_max_sub_layers_minus1sps_max_sub_layers_minus1 u(3)u(3) sps_reserved_zero_4bitssps_reserved_zero_4bits u(4)u(4) sps_ptl_dpb_present_flagsps_ptl_dpb_present_flag u(1)u(1) if( sps_ptl_dpb_present_flag )if( sps_ptl_dpb_present_flag ) profile_tier_level( 1, sps_max_sub_layers_minus1 )profile_tier_level( 1, sps_max_sub_layers_minus1 ) gdr_enabled_flaggdr_enabled_flag u(1)u(1) sps_seq_parameter_set_idsps_seq_parameter_set_id ue(v)ue(v) chroma_format_idcchroma_format_idc ue(v)ue(v) ...... log2_max_pic_order_cnt_lsb_minus4log2_max_pic_order_cnt_lsb_minus4 ue(v)ue(v) poc_msb_in_rap_pics_flagpoc_msb_in_rap_pics_flag u(1)u(1) if( poc_msb_in_rap_pics_flag > 0 )if( poc_msb_in_rap_pics_flag > 0 ) poc_msb_len_minus1poc_msb_len_minus1 ue(v)ue(v) if( sps_max_sub_layers_minus1 > 0 )if( sps_max_sub_layers_minus1 > 0 ) sps_sub_layer_dpb_params_flagsps_sub_layer_dpb_params_flag u(1)u(1) if( sps_ptl_dpb_present_flag )if( sps_ptl_dpb_present_flag ) dpb_parameters( 0, sps_max_sub_layers_minus1, sps_sub_layer_dpb_params_flag )dpb_parameters( 0, sps_max_sub_layers_minus1, sps_sub_layer_dpb_params_flag ) long_term_ref_pics_flaglong_term_ref_pics_flag u(1)u(1) ...... sps_scaling_list_enabled_flagsps_scaling_list_enabled_flag u(1)u(1) vui_parameters_present_flagvui_parameters_present_flag u(1)u(1) if( vui_parameters_present_flag )if( vui_parameters_present_flag ) vui_parameters( )vui_parameters( ) sps_extension_flagsps_extension_flag u(1)u(1) if( sps_extension_flag )if( sps_extension_flag ) while( more_rbsp_data( ) )while( more_rbsp_data() ) sps_extension_data_flagsps_extension_data_flag u(1)u(1) rbsp_trailing_bits( )rbsp_trailing_bits( ) }}

Синтаксис DPB включает в себя следующее.DPB syntax includes the following.

dpb_parameters( dpbSizeOnlyFlag, maxSubLayersMinus1, subLayerInfoFlag ) {dpb_parameters( dpbSizeOnlyFlag, maxSubLayersMinus1, subLayerInfoFlag ) { ДескрипторDescriptor for( i = ( subLayerInfoFlag ? 0 : maxSubLayersMinus1 );
i <= maxSubLayersMinus1; i++ ) {
for( i = ( subLayerInfoFlag ? 0 : maxSubLayersMinus1 );
i <= maxSubLayersMinus1; i++ ) {
max_dec_pic_buffering_minus1[ i ]max_dec_pic_buffering_minus1[ i ] ue(v)ue(v) if( !dpbSizeOnlyFlag ) {if( !dpbSizeOnlyFlag ) { max_num_reorder_pics[ i ]max_num_reorder_pics[ i ] ue(v)ue(v) max_latency_increase_plus1[ i ]max_latency_increase_plus1[ i ] ue(v)ue(v) }} }} }}

Синтаксис параметров HRD включает в себя синтаксис общих параметров HRD, синтаксис параметров HRD OLS и синтаксис параметров HRD подслоя.HRD parameter syntax includes general HRD parameter syntax, OLS HRD parameter syntax, and sublayer HRD parameter syntax.

Синтаксис общих параметров HRD включает в себя следующее.The syntax for common HRD options includes the following.

general_hrd_parameters( ) {general_hrd_parameters() { ДескрипторDescriptor general_nal_hrd_params_present_flaggeneral_nal_hrd_params_present_flag u(1)u(1) general_vcl_hrd_params_present_flaggeneral_vcl_hrd_params_present_flag u(1)u(1) if( general_nal_hrd_params_present_flag | | general_vcl_hrd_params_present_flag ) {if( general_nal_hrd_params_present_flag | | general_vcl_hrd_params_present_flag ) { decoding_unit_hrd_params_present_flagdecoding_unit_hrd_params_present_flag u(1)u(1) if( decoding_unit_hrd_params_present_flag ) {if( decoding_unit_hrd_params_present_flag ) { tick_divisor_minus2tick_divisor_minus2 u(8)u(8) decoding_unit_cpb_params_in_pic_timing_sei_flagdecoding_unit_cpb_params_in_pic_timing_sei_flag u(1)u(1) }} bit_rate_scalebit_rate_scale u(4)u(4) cpb_size_scalecpb_size_scale u(4)u(4) if( decoding_unit_hrd_params_present_flag )if(decoding_unit_hrd_params_present_flag) cpb_size_du_scalecpb_size_du_scale u(4)u(4) }} if( vps_max_sub_layers_minus1 > 0 )if( vps_max_sub_layers_minus1 > 0 ) sub_layer_cpb_params_present_flagsub_layer_cpb_params_present_flag u(1)u(1) if( TotalNumOlss > 1 )if( TotalNumOlss > 1 ) num_ols_hrd_params_minus1num_ols_hrd_params_minus1 ue(v)ue(v) hrd_cpb_cnt_minus1hrd_cpb_cnt_minus1 ue(v)ue(v) for( i = 0; i <= num_ols_hrd_params_minus1; i++ ) {for( i = 0; i <= num_ols_hrd_params_minus1; i++ ) { if( vps_max_sub_layers_minus1 > 0 && !vps_all_layers_same_num_sub_layers_flag )if( vps_max_sub_layers_minus1 > 0 && !vps_all_layers_same_num_sub_layers_flag ) hrd_max_temporal_id[ i ]hrd_max_temporal_id[ i ] u(3)u(3) ols_hrd_parameters( hrd_max_temporal_id[ i ] )ols_hrd_parameters( hrd_max_temporal_id[ i ]) }} if( num_ols_hrd_params_minus1 > 0 )if( num_ols_hrd_params_minus1 > 0 ) for( i = 1; i < TotalNumOlss; i++ )for( i = 1; i < TotalNumOlss; i++ ) ols_hrd_idx[ i ]ols_hrd_idx[ i ] ue(v)ue(v) }}

Синтаксис параметров HRD OLS включает в себя следующее.HRD OLS parameter syntax includes the following.

ols_hrd_parameters( hrdMaxTid ) {ols_hrd_parameters(hrdMaxTid) { ДескрипторDescriptor firstSubLayer = sub_layer_cpb_params_present_flag ? 0: hrdMaxTidfirstSubLayer = sub_layer_cpb_params_present_flag ? 0:hrdMaxTid for( i = firstSubLayer; i <= hrdMaxTid; i++ ) {for( i = firstSubLayer; i <= hrdMaxTid; i++ ) { fixed_pic_rate_general_flag[ i ]fixed_pic_rate_general_flag[ i ] u(1)u(1) if( !fixed_pic_rate_general_flag[ i ] )if( !fixed_pic_rate_general_flag[ i ] ) fixed_pic_rate_within_cvs_flag[ i ]fixed_pic_rate_within_cvs_flag[ i ] u(1)u(1) if( fixed_pic_rate_within_cvs_flag[ i ] )if( fixed_pic_rate_within_cvs_flag[ i ] ) elemental_duration_in_tc_minus1[ i ]elemental_duration_in_tc_minus1[ i ] ue(v)ue(v) else if( hrd_cpb_cnt_minus1 = = 0 )else if( hrd_cpb_cnt_minus1 = = 0 ) low_delay_hrd_flag[ i ]low_delay_hrd_flag[ i ] u(1)u(1) if( general_nal_hrd_params_present_flag )if( general_nal_hrd_params_present_flag ) sub_layer_hrd_parameters( i )sub_layer_hrd_parameters( i ) if( general_vcl_hrd_params_present_flag )if( general_vcl_hrd_params_present_flag ) sub_layer_hrd_parameters( i )sub_layer_hrd_parameters( i ) }} }}

Синтаксис параметров HRD подслоя включает в себя следующее.The HRD sublayer parameter syntax includes the following.

sub_layer_hrd_parameters( subLayerId ) {sub_layer_hrd_parameters( subLayerId ) { ДескрипторDescriptor for( j = 0; j <= hrd_cpb_cnt_minus1; j++ ) {for( j = 0; j <= hrd_cpb_cnt_minus1; j++ ) { bit_rate_value_minus1[ subLayerId ][ j ]bit_rate_value_minus1[ subLayerId ][ j ] ue(v)ue(v) cpb_size_value_minus1[ subLayerId ][ j ]cpb_size_value_minus1[ subLayerId ][ j ] ue(v)ue(v) if( decoding_unit_hrd_params_present_flag ) {if( decoding_unit_hrd_params_present_flag ) { cpb_size_du_value_minus1[ subLayerId ][ j ]cpb_size_du_value_minus1[ subLayerId ][ j ] ue(v)ue(v) bit_rate_du_value_minus1[ subLayerId ][ j ]bit_rate_du_value_minus1[ subLayerId ][ j ] ue(v)ue(v) }} cbr_flag[ subLayerId ][ j ]cbr_flag[ subLayerId ][ j ] u(1)u(1) }} }}

Семантика VPS представлена следующим образом.The semantics of VPS are presented as follows.

vps_max_layers_minus1 плюс 1 указывает максимально допустимое количество слоев в каждой CVS, ссылающейся на VPS.vps_max_layers_minus1 plus 1 specifies the maximum number of layers allowed in each CVS referencing the VPS.

vps_max_sub_layers_minus1 плюс 1 указывает максимальное количество временных подслоев, которые могут присутствовать в каждой CVS, ссылающейся на VPS. Значение vps_max_sub_layers_minus1 должно находиться в диапазоне от 0 до 7 включительно.vps_max_sub_layers_minus1 plus 1 specifies the maximum number of temporary sublayers that can be present in each CVS referencing the VPS. The value of vps_max_sub_layers_minus1 must be in the range from 0 to 7 inclusive.

Флаг vps_all_layers_same_num_sub_layers_flag, равный 1, указывает то, что количество временных подслоев является одинаковым для всех слоев в каждой CVS, ссылающейся на VPS. Флаг vps_all_layers_same_num_sub_layers_flag, равный 0, указывает то, что слои в каждой CVS, ссылающейся на VPS, могут иметь или не иметь одинаковое количество временных подслоев. Если он отсутствует, предполагается, что значение vps_all_layers_same_num_sub_layers_flag равно 1.The vps_all_layers_same_num_sub_layers_flag equal to 1 indicates that the number of temporary sublayers is the same for all layers in each CVS referencing the VPS. The vps_all_layers_same_num_sub_layers_flag equal to 0 indicates that the layers in each CVS referencing the VPS may or may not have the same number of temporary sublayers. If it is missing, vps_all_layers_same_num_sub_layers_flag is assumed to be 1.

Флаг vps_all_independent_layers_flag, равный 1, указывает то, что все слои в CVS кодируются независимым образом без использования межслойного предсказания. Флаг vps_all_independent_layers_flag, равный 0, указывает то, что один или более слоев в CVS могут использовать межслойное предсказание. Если он отсутствует, значение vps_all_independent_layers_flag считается равным 1. Когда значение vps_all_independent_layers_flag равно 1, значение vps_independent_layer_flag[ i ] предполагается равным 1. Когда значение vps_all_independent_layers_flag равно 0, значение vps_independent_layer_flag[ 0 ] считается равным 1.The vps_all_independent_layers_flag equal to 1 indicates that all layers in CVS are encoded independently without using inter-layer prediction. A vps_all_independent_layers_flag of 0 indicates that one or more layers in CVS can use inter-layer prediction. If it is missing, the value of vps_all_independent_layers_flag is assumed to be 1. When the value of vps_all_independent_layers_flag is 1, the value of vps_independent_layer_flag[ i ] is assumed to be 1. When the value of vps_all_independent_layers_flag is 0, the value of vps_independent_layer_flag[ 0 ] is assumed to be 1.

Флаг vps_direct_dependency_flag[ i ][ j ], равный 0, указывает то, что слой с индексом j не является слоем прямой ссылки для слоя с индексом i. Флаг vps_direct_dependency_flag [ i ][ j ], равный 1, указывает то, что слой с индексом j является слоем прямой ссылки для слоя с индексом i. Когда vps_direct_dependency_flag[ i ][ j ] отсутствует для i и j в диапазоне от 0 до vps_max_layers_minus1 включительно, предполагается, что он равен 0.The vps_direct_dependency_flag[ i ][ j ] flag equal to 0 indicates that the layer with index j is not a direct link layer for the layer with index i. The vps_direct_dependency_flag [ i ][ j ] flag equal to 1 indicates that layer index j is the direct link layer for layer index i. When vps_direct_dependency_flag[ i ][ j ] is missing for i and j in the range 0 to vps_max_layers_minus1 inclusive, it is assumed to be 0.

Переменная DirectDependentLayerIdx[ i ][ j ], указывающая j-й непосредственно зависимый слой от i-го слоя, и переменная LayerUsedAsRefLayerFlag[ j ], указывающая то, используется ли слой с индексом j слоя в качестве флага ссылочного слоя любым другим слоем, получаются следующим образом:The DirectDependentLayerIdx[ i ][ j ] variable indicating the jth directly dependent layer of the i th layer, and the LayerUsedAsRefLayerFlag[ j ] variable indicating whether the layer at layer index j is used as a reference layer flag by any other layer is obtained as follows way:

for( i = 0; i <= vps_max_layers_minus1; i++ )for( i = 0; i <= vps_max_layers_minus1; i++ )

LayerUsedAsRefLayerFlag[ j ] = 0LayerUsedAsRefLayerFlag[ j ] = 0

for( i = 1; i < vps_max_layers_minus1; i++ )for( i = 1; i < vps_max_layers_minus1; i++ )

if( !vps_independent_layer_flag[ i ] )if( !vps_independent_layer_flag[ i ] )

for( j = i - 1, k = 0; j >= 0; j- - )for( j = i - 1, k = 0; j >= 0; j- - )

if( vps_direct_dependency_flag[ i ][ j ] ) {if( vps_direct_dependency_flag[ i ][ j ] ) {

DirectDependentLayerIdx[ i ][ k++ ] = jDirectDependentLayerIdx[ i ][ k++ ] = j

LayerUsedAsRefLayerFlag[ j ] = 1LayerUsedAsRefLayerFlag[ j ] = 1

}}

Переменная GeneralLayerIdx[ i ], указывающая индекс слоя с nuh_layer_id, равным vps_layer_id[ i ], получается следующим образом:The variable GeneralLayerIdx[ i ], indicating the index of the layer with nuh_layer_id equal to vps_layer_id[ i ], is obtained as follows:

for( i = 0; i <= vps_max_layers_minus1; i++ )for( i = 0; i <= vps_max_layers_minus1; i++ )

GeneralLayerIdx[ vps_layer_id[ i ] ] = iGeneralLayerIdx[ vps_layer_id[ i ] ] = i

Флаг each_layer_is_an_ols_flag, равный 1, указывает то, что каждый набор слоев вывода содержит только один слой, и каждый слой в битовом потоке непосредственно является набором слоев вывода, причем единственный включенный слой является единственным слоем вывода. Флаг each_layer_is_an_ols_flag, равный 0, указывает то, что набор слоев вывода может содержать более одного слоя. Если значение vps_max_layers_minus1 равно 0, предполагается, что значение each_layer_is_an_ols_flag равно 1. В противном случае, когда значение vps_all_independent_layers_flag равно 0, предполагается, что значение each_layer_is_an_ols_flag предполагается равно 0.Each_layer_is_an_ols_flag equal to 1 indicates that each set of output layers contains only one layer, and each layer in the bitstream is itself a set of output layers, with the only layer included being the only output layer. Each_layer_is_an_ols_flag equal to 0 indicates that an output layer set can contain more than one layer. If the value of vps_max_layers_minus1 is 0, the value of each_layer_is_an_ols_flag is assumed to be 1. Otherwise, when the value of vps_all_independent_layers_flag is 0, the value of each_layer_is_an_ols_flag is assumed to be 0.

ols_mode_idc, равный 0, указывает то, что общее количество OLS, заданных VPS, равно vps_max_layers_minus1 + 1, i-й OLS включает в себя слои с индексами слоев от 0 до i включительно, и для каждого OLS выводится только верхний слой в OLS. ols_mode_idc, равный 1, указывает то, что общее количество OLS, заданных VPS, равно vps_max_layers_minus1 + 1, i-й OLS включает в себя слои с индексами слоев от 0 до i включительно, и для каждого OLS выводятся все слои в OLS. ols_mode_idc, равный 2, указывает то, что общее количество OLS, заданное VPS, сигнализируется в явном виде, и для каждого OLS выводятся верхний слой и просигнализированный в явном виде набор нижних слоев в OLS. Значение ols_mode_idc должно находиться в диапазоне от 0 до 2 включительно. Значение 3 ols_mode_idc зарезервировано для будущего использования ITU-T | ISO/IEC. Когда vps_all_independent_layers_flag равно 1, и each_layer_is_an_ols_flag равно 0, предполагается, что значение ols_mode_idc равно 2.An ols_mode_idc equal to 0 indicates that the total number of OLSs specified by the VPS is vps_max_layers_minus1 + 1, the i-th OLS includes layers with layer indices from 0 to i inclusive, and for each OLS only the top layer in the OLS is output. An ols_mode_idc equal to 1 indicates that the total number of OLSs specified by the VPS is vps_max_layers_minus1 + 1, the i-th OLS includes layers with layer indices from 0 to i inclusive, and for each OLS all layers in the OLS are output. An ols_mode_idc equal to 2 indicates that the total number of OLS specified by the VPS is explicitly signaled, and for each OLS the top layer and the explicitly signaled set of bottom layers in the OLS are output. The ols_mode_idc value must be between 0 and 2, inclusive. Value 3 ols_mode_idc reserved for future use by ITU-T | ISO/IEC. When vps_all_independent_layers_flag is 1 and each_layer_is_an_ols_flag is 0, the value of ols_mode_idc is assumed to be 2.

num_output_layer_sets_minus1 плюс 1 указывает общее количество OLS, заданное VPS, когда ols_mode_idc равно двум.num_output_layer_sets_minus1 plus 1 indicates the total number of OLS set by the VPS when ols_mode_idc is two.

Переменная TotalNumOlss, указывающая общее количество OLS, заданных VPS, получается следующим образом.The TotalNumOlss variable indicating the total number of OLSs specified by the VPS is obtained as follows.

if( vps_max_layers_minus1 = = 0 )if( vps_max_layers_minus1 = = 0 )

TotalNumOlss = 1TotalNumOlss = 1

else if( each_layer_is_an_ols_flag | | ols_mode_idc = = 0 | | ols_mode_idc = = 1 )else if( each_layer_is_an_ols_flag | | ols_mode_idc = = 0 | | ols_mode_idc = = 1 )

TotalNumOlss = vps_max_layers_minus1 + 1TotalNumOlss = vps_max_layers_minus1 + 1

else if( ols_mode_idc = = 2 )else if( ols_mode_idc == 2 )

TotalNumOlss = num_output_layer_sets_minus1 + 1TotalNumOlss = num_output_layer_sets_minus1 + 1

layer_included_flag[ i ]][ j ] указывает то, включен ли j-й слой (то есть слой с nuh_layer_id, равным vps_layer_id[ j ]) в i-й OLS, когда ols_mode_idc равен 2. layer_included_flag[ i ][ j ], равный 1, указывает то, что j-й слой включен в i-й OLS. layer_included_flag[ i ][ j ], равный 0, указывает то, что j-й слой не включен в i-й OLS.layer_included_flag[ i ]][ j ] indicates whether the j-th layer (that is, the layer with nuh_layer_id equal to vps_layer_id[ j ]) is included in the i-th OLS when ols_mode_idc is equal to 2. layer_included_flag[ i ][ j ] equal 1 indicates that the j-th layer is included in the i-th OLS. layer_included_flag[ i ][ j ] equal to 0 indicates that the j-th layer is not included in the i-th OLS.

] Переменная NumLayersInOls[ i ], задающая количество слоев в i-ом OLS, и переменная LayerIdInOls[ i ][ j ], задающая значение nuh_layer_id j-го слоя в i-ом OLS, получаются следующим образом.] The NumLayersInOls[ i ] variable, which specifies the number of layers in the i-th OLS, and the LayerIdInOls[ i ][ j ] variable, which specifies the nuh_layer_id value of the j-th layer in the i-th OLS, are obtained as follows.

NumLayersInOls[ 0 ] = 1NumLayersInOls[ 0 ] = 1

LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]

for( i = 1, i < TotalNumOlss; i++ ) {for( i = 1, i < TotalNumOlss; i++ ) {

if( each_layer_is_an_ols_flag ) {if( each_layer_is_an_ols_flag ) {

NumLayersInOls[ i ] = 1NumLayersInOls[ i ] = 1

LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]

} else if( ols_mode_idc = = 0 | | ols_mode_idc = = 1 ) {} else if( ols_mode_idc = = 0 | | ols_mode_idc = = 1 ) {

NumLayersInOls[ i ] = i + 1NumLayersInOls[ i ] = i + 1

for( j = 0; j < NumLayersInOls[ i ]; j++ )for( j = 0; j < NumLayersInOls[ i ]; j++ )

LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]

} else if( ols_mode_idc = = 2 ) {} else if( ols_mode_idc == 2 ) {

for( k = 0, j = 0; k <= vps_max_layers_minus1; k++ )for( k = 0, j = 0; k <= vps_max_layers_minus1; k++ )

if( layer_included_flag[ i ][ k ] )if( layer_included_flag[ i ][ k ] )

LayerIdInOls[ i ][ j++ ] = vps_layer_id[ k ]LayerIdInOls[ i ][ j++ ] = vps_layer_id[ k ]

NumLayersInOls[ i ] = jNumLayersInOls[ i ] = j

}}

}}

Переменная OlsLayeIdx[ i ][ j ], задающая индекс слоя OLS слоя с nuh_layer_id, равным LayerIdInOls[ i ][ j ], получается следующим образом.The OlsLayeIdx[ i ][ j ] variable, which specifies the OLS layer index of the layer with nuh_layer_id equal to LayerIdInOls[ i ][ j ], is obtained as follows.

for( i = 0, i < TotalNumOlss; i++ )for( i = 0, i < TotalNumOlss; i++ )

for j = 0; j < NumLayersInOls[ i ]; j++ )for j = 0; j < NumLayersInOls[ i ]; j++ )

OlsLayeIdx[ i ][ LayerIdInOls[ i ][ j ] ] = jOlsLayeIdx[ i ][ LayerIdInOls[ i ][ j ] ] = j

Нижний слой в каждом OLS должен быть независимым слоем. Другими словами, для каждого i в диапазоне от 0 до TotalNumOlss - 1 включительно значение vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[ i ][ 0 ]]] должно быть равно 1.The bottom layer in each OLS must be an independent layer. In other words, for every i in the range 0 to TotalNumOlss - 1 inclusive, the value of vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[ i ][ 0 ]]] must be equal to 1.

Каждый слой должен быть включен по меньшей мере в один OLS, заданный VPS. Другими словами, для каждого слоя с конкретным значением nuh_layer_id nuhLayerId, равным единице из vps_layer_id[ k ] для k в диапазоне от нуля до vps_max_layers_minus1 включительно, должна быть как минимум одна пара значений i и j, где i находится в диапазоне от нуля до TotalNumOlss - 1 включительно, и j находится в диапазоне NumLayersInOls[ i ] - 1 включительно, так что значение LayerIdInOls[ i ][ j ] равно nuhLayerId. Each layer must be included in at least one OLS defined by the VPS. In other words, for each layer with a particular value nuh_layer_id nuhLayerId equal to one from vps_layer_id[ k ] for k ranging from zero to vps_max_layers_minus1 inclusive, there must be at least one pair of values i and j, where i is in the range zero to TotalNumOlss - 1 inclusive, and j is in the range NumLayersInOls[ i ] - 1 inclusive, so the value of LayerIdInOls[ i ][ j ] is nuhLayerId.

Любой слой в OLS должен быть слоем вывода OLS или ссылочным слоем (прямым или косвенным) слоя вывода OLS.Any layer in OLS must be an OLS output layer or a reference layer (direct or indirect) to an OLS output layer.

vps_output_layer_flag[ i ][ j ] указывает то, выводится ли j-й слой в i-ом OLS, когда значение ols_mode_idc равно 2. vps_output_layer_flag[ i ], равный единице, указывает то, что выводится j-й слой в i-ом OLS. vps_output_layer_flag[ i ], равный 0, указывает то, что j-й слой в i-м OLS не выводится. Когда значение vps_all_independent_layers_flag равно 1, и ach_layer_is_an_ols_flag равно 0, предполагается, что значение vps_output_layer_flag[ i ] равно 1. vps_output_layer_flag[ i ][ j ] indicates whether the j-th layer is output in the i-th OLS when ols_mode_idc is equal to 2. vps_output_layer_flag[ i ] equal to one indicates that the j-th layer is output in the i-th OLS . vps_output_layer_flag[ i ] equal to 0 indicates that the j-th layer in the i-th OLS is not output. When vps_all_independent_layers_flag is 1 and ach_layer_is_an_ols_flag is 0, vps_output_layer_flag[ i ] is assumed to be 1.

Переменная OutputLayerFlag[ i ][ j ], для которой значение 1 указывает то, что выводится j-й слой в i-м OLS, и значение 0 указывает то, что j-й слой в i-м OLS не выводится, получается следующим образом:The OutputLayerFlag[ i ][ j ] variable, for which a value of 1 indicates that the j-th layer in the i-th OLS is output, and a value of 0 indicates that the j-th layer in the i-th OLS is not output, is obtained as follows :

for( i = 0, i < TotalNumOlss; i++ ) {for( i = 0, i < TotalNumOlss; i++ ) {

OutputLayerFlag[ i ][ NumLayersInOls[ i ] - 1 ] = 1OutputLayerFlag[ i ][ NumLayersInOls[ i ] - 1 ] = 1

for( j = 0; j < NumLayersInOls[ i ] - 1; j++ )for( j = 0; j < NumLayersInOls[ i ] - 1; j++ )

if( ols_mode_idc[ i ] = = 0 )if( ols_mode_idc[ i ] = = 0 )

OutputLayerFlag[ i ][ j ] = 0OutputLayerFlag[ i ][ j ] = 0

else if( ols_mode_idc[ i ] = = 1 )else if( ols_mode_idc[ i ] = = 1 )

OutputLayerFlag[ i ][ j ] = 1OutputLayerFlag[ i ][ j ] = 1

else if( ols_mode_idc[ i ] = = 2 )else if( ols_mode_idc[ i ] = = 2 )

OutputLayerFlag[ i ][ j ] = vps_output_layer_flag[ i ][ j ]OutputLayerFlag[ i ][ j ] = vps_output_layer_flag[ i ][ j ]

}}

Примечание. 0-ой OLS содержит только нижний слой (слой с nuh_layer_id, равным vps_layer_id[ 0 ]), и для 0-го OLS выводится только включенный слой.Note. The 0th OLS contains only the bottom layer (the layer with nuh_layer_id equal to vps_layer_id[ 0 ]), and for the 0th OLS only the included layer is output.

vps_num_ptls указывает количество синтаксических структур profile_tier_level() в VPS.vps_num_ptls indicates the number of profile_tier_level() syntax structures in the VPS.

Флаг pt_present_flag[ i ], равный 1, указывает то, что информация о профиле, уровне и общих ограничениях присутствует в i-й синтаксической структуре profile_tier_level() в VPS. Флаг pt_present_flag[ i ], равный 0, указывает то, что информация о профиле, ранге и общих ограничениях отсутствует в i-й синтаксической структуре profile_tier_level() в VPS. Предполагается, что значение pt_present_flag[ 0 ] равно 0. Когда флаг pt_present_flag[ i ] равен 0, предполагается, что информация о профиле, ранге и общих ограничениях для i-й синтаксической структуры profile_tier_level() в VPS будет такой же, как и для ( i - 1 )-й синтаксической структуры profile_tier_level() в VPS.The pt_present_flag[ i ] flag equal to 1 indicates that information about the profile, tier and general restrictions is present in the i-th profile_tier_level() syntactic structure in the VPS. The pt_present_flag[ i ] flag equal to 0 indicates that information about the profile, rank and general restrictions is not present in the i-th profile_tier_level() syntactic structure in the VPS. The value of pt_present_flag[ 0 ] is assumed to be 0. When the flag pt_present_flag[ i ] is 0, the profile, rank and general constraint information for the ith syntax structure profile_tier_level() in VPS is assumed to be the same as for ( i - 1 )-th syntactic structure profile_tier_level() in VPS.

ptl_max_temporal_id[ i ] указывает TemporalId представления самого высокого подслоя, для которого информация об уровне присутствует в i-й синтаксической структуре profile_tier_level() в VPS. Значение ptl_max_temporal_id[ i ] должно находиться в диапазоне от 0 до vps_max_sub_layers_minus1 включительно. Когда значение vps_max_sub_layers_minus1 равно 0, предполагается, что значение ptl_max_temporal_id[ i ] равно 0. Когда vps_max_sub_layers_minus1 больше 0, и vps_all_layers_same_num_sub_layers_flag равно 1, значение ptl_max_temporal_id[ i ] предполагается равным vps_max_ussublayers1_max_ussublayers1_min.ptl_max_temporal_id[ i ] specifies the TemporalId of the highest sublayer representation for which tier information is present in the i-th profile_tier_level() syntax structure in the VPS. The value of ptl_max_temporal_id[ i ] must be in the range from 0 to vps_max_sub_layers_minus1 inclusive. When VPS_Max_Sub_Layers_Minus1 is equal to 0, it is assumed that PTL_MAX_TEMPOral_id [i] is 0. When vPs_max_sub_layers_minus1 is more than 0, and vps_all_layers_sab_Layers_flag is 1 Temporal_id [i] is supposed to be equal to VPS_MAX_USSUBLAYERS1_MAX_USSUBLAYERS1_MIN.

Значение vps_ptl_byte_alignment_zero_bit должно быть равно 0.The value of vps_ptl_byte_alignment_zero_bit must be 0.

Индекс ols_ptl_idx[ i ] указывает индекс в списке синтаксических структур profile_tier_level() в VPS синтаксической структуры profile_tier_level(), которая применяется к i-му OLS. Когда он присутствует, значение ols_ptl_idx[ i ] должно находиться в диапазоне от 0 до vps_num_ptls - 1 включительно.The index ols_ptl_idx[ i ] specifies the index in the profile_tier_level() syntax structure list in the VPS of the profile_tier_level() syntax structure that applies to the i-th OLS. When present, the value of ols_ptl_idx[ i ] must be in the range 0 to vps_num_ptls - 1, inclusive.

Когда значение NumLayersInOls[ i ] равно 1, синтаксическая структура profile_tier_level(), которая применяется к i-му OLS, присутствует в SPS, на который ссылается слой в i-м OLS.When the value of NumLayersInOls[ i ] is 1, the profile_tier_level() syntax structure that applies to the i-th OLS is present in the SPS referenced by the layer in the i-th OLS.

vps_num_dpb_params указывает количество синтаксических структур dpb_parameters() в VPS. Значение vps_num_dpb_params должно находиться в диапазоне от 0 до 16 включительно. Если это значение отсутствует, предполагается, что значение vps_num_dpb_params равно 0.vps_num_dpb_params indicates the number of dpb_parameters() syntax structures in the VPS. The value of vps_num_dpb_params must be in the range from 0 to 16 inclusive. If this value is missing, vps_num_dpb_params is assumed to be 0.

Значение same_dpb_size_output_or_nonoutput_flag, равное 1, указывает то, что в VPS отсутствует синтаксический элемент layer_nonoutput_dpb_params_idx[ i ]. Значение same_dpb_size_output_or_nonoutput_flag, равное 0, указывает то, что в VPS могут присутствовать или отсутствовать синтаксические элементы layer_nonoutput_dpb_params_idx[ i ].A value of same_dpb_size_output_or_nonoutput_flag equal to 1 indicates that the VPS does not have the layer_nonoutput_dpb_params_idx[ i ] syntax element. A same_dpb_size_output_or_nonoutput_flag value of 0 indicates that the layer_nonoutput_dpb_params_idx[ i ] syntax elements may or may not be present in the VPS.

vps_sub_layer_dpb_params_present_flag используется для управления наличием синтаксических элементов max_dec_pic_buffering_minus1[ ], max_num_reorder_pics[ ] и max_latency_increase_plus1[ ] в синтаксических структурах dpb_parameters() в VPS. Если параметр vps_sub_dpb_params_info_present_flag отсутствует, предполагается, что он равен 0.vps_sub_layer_dpb_params_present_flag is used to control the presence of the max_dec_pic_buffering_minus1[ ], max_num_reorder_pics[ ] and max_latency_increase_plus1[ ] syntax elements in the dpb_parameters() syntax structures in the VPS. If vps_sub_dpb_params_info_present_flag is not present, it is assumed to be 0.

Значение dpb_size_only_flag[ i ], равное 1, указывает то, что синтаксические элементы max_num_reorder_pics[] и max_latency_increase_plus1[] отсутствуют в i-й синтаксической структуре dpb_parameters() в VPS. Значение dpb_size_only_flag[ i ], равное 1, указывает то, что синтаксические элементы max_num_reorder_pics[] и max_latency_increase_plus1[ ] могут присутствовать в i-й синтаксической структуре dpb_parameters() в VPS.A dpb_size_only_flag[ i ] value of 1 indicates that the syntax elements max_num_reorder_pics[] and max_latency_increase_plus1[] are not present in the i-th dpb_parameters() syntax structure in the VPS. A dpb_size_only_flag[ i ] value of 1 indicates that the max_num_reorder_pics[] and max_latency_increase_plus1[ ] syntax elements may be present in the i-th dpb_parameters() syntax structure in the VPS.

dpb_max_temporal_id[ i ] указывает TemporalId представления самого высокого подслоя, для которого параметры DPB могут присутствовать в i-й синтаксической структуре dpb_parameters() в VPS. Значение dpb_max_temporal_id[ i ] должно находиться в диапазоне от 0 до vps_max_sub_layers_minus1 включительно. Когда значение vps_max_sub_layers_minus1 равно 0, предполагается, что значение dpb_max_temporal_id[ i ] равно 0. Когда значение vps_max_sub_layers_minus1 больше 0, и значение vps_all_layers_same_num_sub_layers_flag равно 1, значение dpb_max_temporal_id[ i ] предполагается равным vpss_minus_sub.dpb_max_temporal_id[ i ] specifies the TemporalId of the highest sublayer representation for which DPB parameters can be present in the i-th dpb_parameters() syntax structure in the VPS. The value of dpb_max_temporal_id[ i ] must be in the range from 0 to vps_max_sub_layers_minus1 inclusive. When the value of vps_max_sub_layers_minus1 is 0, the value of dpb_max_temporal_id[ i ] is assumed to be 0. When the value of vps_max_sub_layers_minus1 is greater than 0, and the value of vps_all_layers_same_num_sub_layers_flag is 1, the value of dpb_max_temporal_id[ i ] is assumed to be vpss_minus_sub.

Индекс layer_output_dpb_params_idx[ i ] указывает индекс в списке синтаксических структур dpb_parameters() в VPS синтаксической структуры dpb_parameters(), которая применяется к i-му слою, когда он является слоем вывода в OLS. Когда он присутствует, значение layer_output_dpb_params_idx[ i ] должно находиться в диапазоне от 0 до vps_num_dpb_params - 1 включительно.The index layer_output_dpb_params_idx[ i ] specifies the index in the list of dpb_parameters() syntax structures in the VPS of the dpb_parameters() syntax structure that applies to the i-th layer when it is an output layer in OLS. When present, the value of layer_output_dpb_params_idx[ i ] must be in the range 0 to vps_num_dpb_params - 1, inclusive.

Если значение vps_independent_layer_flag[ i ] равно 1, синтаксическая структура dpb_parameters(), которая применяется к i-му слою, когда он является слоем вывода, представляет собой синтаксическую структуру dpb_parameters(), присутствующую в SPS, на которую ссылается слой.If the value of vps_independent_layer_flag[ i ] is 1, the dpb_parameters() syntax structure that applies to the ith layer when it is an output layer is the dpb_parameters() syntax structure present in the SPS referenced by the layer.

В противном случае (когда значение vps_independent_layer_flag[ i ] равно 0) применяется следующее:Otherwise (when vps_independent_layer_flag[ i ] is 0), the following applies:

Когда значение vps_num_dpb_params равно 1, предполагается, что значение layer_output_dpb_params_idx[ i ] равно 0.When vps_num_dpb_params is 1, layer_output_dpb_params_idx[ i ] is assumed to be 0.

Требованием соответствия битового потока является то, что значение layer_output_dpb_params_idx[ i ] должно быть таким, чтобы значение dpb_size_only_flag[layer_output_dpb_params_idx[ i ]] равнялось 0.A requirement for bitstream matching is that the value of layer_output_dpb_params_idx[ i ] must be such that the value of dpb_size_only_flag[layer_output_dpb_params_idx[ i ]] is 0.

Индекс layer_nonoutput_dpb_params_idx[ i ] указывает индекс в списке синтаксических структур dpb_parameters() в VPS синтаксической структуры dpb_parameters(), которая применяется к i-му слою, когда он не является слоем вывода в OLS. Когда он присутствует, значение layer_nonoutput_dpb_params_idx[ i ] должно находиться в диапазоне от 0 до vps_num_dpb_params - 1 включительно.The index layer_nonoutput_dpb_params_idx[ i ] specifies the index in the dpb_parameters() syntax structure list in the VPS of the dpb_parameters() syntax structure that applies to the i-th layer when it is not an output layer in OLS. When present, the value of layer_nonoutput_dpb_params_idx[ i ] must be in the range 0 to vps_num_dpb_params - 1, inclusive.

Если значение same_dpb_size_output_or_nonoutput_flag равно 1, применяется следующее:If same_dpb_size_output_or_nonoutput_flag is 1, the following applies:

Если значение vps_independent_layer_flag[ i ] равно 1, синтаксическая структура dpb_parameters(), которая применяется к i-му слою, когда он не является слоем вывода, представляет собой синтаксическую структуру dpb_parameters(), присутствующую в SPS, на которую ссылается слой.If the value of vps_independent_layer_flag[ i ] is 1, the dpb_parameters() syntax structure that applies to the ith layer when it is not an output layer is the dpb_parameters() syntax structure present in the SPS referenced by the layer.

В противном случае (когда значение vps_independent_layer_flag[ i ] равно 0) значение layer_nonoutput_dpb_params_idx[ i ] предполагается равным layer_output_dpb_params_idx[ i ].Otherwise (when vps_independent_layer_flag[ i ] is 0), layer_nonoutput_dpb_params_idx[ i ] is assumed to be layer_output_dpb_params_idx[ i ].

В противном случае (когда значение same_dpb_size_output_or_nonoutput_flag равен 0), когда значение vps_num_dpb_params равно 1, предполагается, что значение layer_output_dpb_params_idx[ i ] равно 0.Otherwise (when same_dpb_size_output_or_nonoutput_flag is 0), when vps_num_dpb_params is 1, layer_output_dpb_params_idx[ i ] is assumed to be 0.

Значение vps_extension_flag, равное 0, указывает то, что в синтаксической структуре RBSP VPS отсутствуют синтаксические элементы vps_extension_data_flag. Значение vps_extension_flag, равное 1, указывает то, что в синтаксической структуре RBSP VPS присутствуют синтаксические элементы vps_extension_data_flag.A vps_extension_flag value of 0 indicates that there are no vps_extension_data_flag syntax elements in the VPS RBSP syntax structure. A vps_extension_flag value of 1 indicates that vps_extension_data_flag syntax elements are present in the VPS RBSP syntax structure.

Флаг vps_extension_data_flag может иметь любое значение. Его наличие и значение не влияют на соответствие декодера профилям, указанным в этой версии данной спецификации. Декодеры, соответствующие этой версии данной спецификации, должны игнорировать все синтаксические элементы vps_extension_data_flag.The vps_extension_data_flag flag can have any value. Its presence and meaning do not affect the decoder's compliance with the profiles specified in this version of this specification. Decoders conforming to this version of this specification shall ignore all vps_extension_data_flag syntax elements.

Семантика RBSP SPS представлена следующим образом.The semantics of RBSP SPS is presented as follows.

RBSP SPS должна быть доступной для процесса декодирования перед ссылкой на нее, она должна быть включена по меньшей мере в одну единицу доступа с TemporalId, равным 0, или предоставлена через внешнее средство, и единица NAL SPS, содержащая RBSP SPS, должна иметь nuh_layer_id, равный наименьшему значению nuh_layer_id единиц NAL PPS, которые ссылаются на нее.The RBSP SPS must be available to the decoding process before being referenced, it must be included in at least one access unit with a TemporalId equal to 0 or provided through an external facility, and the NAL SPS unit containing the RBSP SPS must have a nuh_layer_id equal to the smallest nuh_layer_id value of the NAL PPS units that reference it.

Все единицы NAL SPS с конкретным значением sps_seq_parameter_set_id в CVS должны иметь одинаковое содержание.All SPS NAL units with a particular sps_seq_parameter_set_id value in CVS must have the same content.

ID sps_decoding_parameter_set_id, когда он больше 0, указывает значение dps_decoding_parameter_set_id для DPS, на который ссылается SPS. Когда ID sps_decoding_parameter_set_id равен 0, SPS не ссылается на DPS, и на DPS не ссылаются при декодировании каждой CLVS, ссылающейся на SPS. Значение sps_decoding_parameter_set_id должно быть одинаковым во всех SPS, на которые ссылаются кодированные изображения в битовом потоке.The ID sps_decoding_parameter_set_id, when greater than 0, specifies the dps_decoding_parameter_set_id value for the DPS referenced by the SPS. When the ID sps_decoding_parameter_set_id is 0, the SPS does not reference the DPS, and the DPS is not referenced when decoding each CLVS that references the SPS. The value of sps_decoding_parameter_set_id must be the same in all SPS referenced by encoded images in the bitstream.

ID sps_video_parameter_set_id, когда он больше 0, указывает значение vps_video_parameter_set_id для VPS, на которое ссылается SPS. Когда ID sps_video_parameter_set_id равен 0, SPS не ссылается на VPS, и на VPS не ссылаются при декодировании каждой CLVS, ссылающейся на SPS, и предполагается, что значение GeneralLayerIdx[nuh_layer_id] равно 0, и значение vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] равно 1.The ID sps_video_parameter_set_id, when greater than 0, specifies the vps_video_parameter_set_id value for the VPS referenced by the SPS. When the sps_video_parameter_set_id ID is 0, the SPS does not reference the VPS, and the VPS is not referenced when decoding each CLVS that references the SPS, and the value of GeneralLayerIdx[nuh_layer_id] is assumed to be 0, and the value of vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is assumed to be 1.

Когда значение vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] равно 1, SPS, на который ссылается CLVS с конкретным значением nuhLayerId nuh_layer_id, должен иметь nuh_layer_id, равный nuhLayerId.When vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, the SPS referenced by CLVS with a particular nuhLayerId value nuh_layer_id must have a nuh_layer_id equal to nuhLayerId.

sps_max_sub_layers_minus1 плюс 1 указывает максимальное количество временных подслоев, которые могут присутствовать в каждой CLVS, ссылающейся на SPS. Значение sps_max_sub_layers_minus1 должно находиться в диапазоне от 0 до vps_max_sub_layers_minus1 включительно.sps_max_sub_layers_minus1 plus 1 specifies the maximum number of temporary sublayers that can be present in each CLVS referencing the SPS. The value of sps_max_sub_layers_minus1 must be in the range from 0 to vps_max_sub_layers_minus1 inclusive.

Значение sps_reserved_zero_4bits должно быть равным 0 в битовых потоках, соответствующих этой версии данного описания. Другие значения для sps_reserved_zero_4bits зарезервированы для будущего использования ITU-T | ISO/IEC.The value of sps_reserved_zero_4bits shall be 0 in bitstreams conforming to this version of this specification. Other values for sps_reserved_zero_4bits are reserved for future use by ITU-T | ISO/IEC.

Флаг sps_ptl_dpb_present_flag, равный 1, указывает то, что в SPS присутствуют синтаксическая структура profile_tier_level() и синтаксическая структура dpb_parameters(). Флаг sps_ptl_dpb_present_flag, равный 0, указывает то, что в SPS отсутствует синтаксическая структура profile_tier_level() и синтаксическая структура dpb_parameters(). Значение sps_ptl_dpb_present_flag должно быть равно vps_independent_layer_flag[nuh_layer_id].The sps_ptl_dpb_present_flag flag equal to 1 indicates that the profile_tier_level() syntax structure and the dpb_parameters() syntax structure are present in SPS. The sps_ptl_dpb_present_flag flag equal to 0 indicates that SPS does not have the profile_tier_level() syntax structure and the dpb_parameters() syntax structure. The value of sps_ptl_dpb_present_flag should be equal to vps_independent_layer_flag[nuh_layer_id].

Если значение vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] равно 1, переменная MaxDecPicBuffMinus1 устанавливается равной max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1] в синтаксической структуре dpb_parameters( ) в SPS. В противном случае MaxDecPicBuffMinus1 устанавливается равным max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1] в синтаксической структуре layer_nonoutput_dpb_params_idx[GeneralLayerIdx[nuh_layer_id]]-th dpb_parameters() в VPS.If the value of vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is 1, the MaxDecPicBuffMinus1 variable is set to max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1] in the dpb_parameters( ) syntax structure in SPS. Otherwise, MaxDecPicBuffMinus1 is set equal to max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1] in the layer_nonoutput_dpb_params_idx[GeneralLayerIdx[nuh_layer_id]]-th dpb_parameters() syntax structure in the VPS.

Флаг gdr_enabled_flag, равный 1, указывает то, что могут присутствовать изображения постепенного обновления при декодировании (GDR) в CLVS, ссылающейся на SPS. Флаг gdr_enabled_flag, равный 0, указывает то, что изображения GDR отсутствуют в CLVS, ссылающейся на SPS.A gdr_enabled_flag equal to 1 indicates that progressive decoding update (GDR) pictures may be present in the CLVS referencing the SPS. A gdr_enabled_flag of 0 indicates that GDR images are not present in the CLVS referencing the SPS.

Флаг sps_sub_layer_dpb_params_flag используется для управления наличием синтаксических элементов max_dec_pic_buffering_minus1[ i ], max_num_reorder_pics[ i ] и max_latency_increase_plus1[ i ] в синтаксической структуре dpb_parameters() в SPS. Если он отсутствует, предполагается, что значение sps_sub_dpb_params_info_present_flag равно 0.The sps_sub_layer_dpb_params_flag is used to control the presence of the max_dec_pic_buffering_minus1[ i ], max_num_reorder_pics[ i ] and max_latency_increase_plus1[ i ] syntax elements in the dpb_parameters() syntax structure in SPS. If it is missing, sps_sub_dpb_params_info_present_flag is assumed to be 0.

Флаг long_term_ref_pics_flag, равный 0, указывает то, что LTRP не используется для межкадрового предсказания любого кодированного изображения в CLVS. Флаг long_term_ref_pics_flag, равный 1, указывает то, что LTRP могут использоваться для межкадрового предсказания одного или более кодированных изображений в CLVS.A long_term_ref_pics_flag of 0 indicates that LTRP is not used for inter-picture prediction of any coded picture in CLVS. A long_term_ref_pics_flag equal to 1 indicates that LTRPs can be used for inter-picture prediction of one or more coded pictures in CLVS.

Общий профиль, ранг и семантика слоя представляют собой следующее.The overall profile, rank and semantics of the layer are as follows.

Синтаксическая структура profile_tier_level() предоставляет информацию об уровне и, в качестве варианта информацию о профиле, ранге, подпрофиле и общих ограничениях (обозначенную как PT-информация).The profile_tier_level() syntactic structure provides tier information and, optionally, profile, rank, subprofile, and general constraint information (denoted PT information).

Когда синтаксическая структура profile_tier_level() включена в DPS, OlsInScope представляет собой OLS, который включает в себя все слои во всем битовом потоке, который ссылается на DPS. Когда синтаксическая структура profile_tier_level() включена в VPS, OlsInScope является одной или несколькими OLS, заданными VPS. Когда синтаксическая структура profile_tier_level() включена в SPS, OlsInScope представляет собой OLS, который включает в себя только нижний слой среди слоев, которые ссылаются на SPS, который должен быть независимым слоем.When the profile_tier_level() syntax structure is included in the DPS, OlsInScope is an OLS that includes all layers in the entire bitstream that references the DPS. When the profile_tier_level() syntax structure is enabled in a VPS, OlsInScope is one or more OLSs specified by the VPS. When the profile_tier_level() syntax structure is included in the SPS, OlsInScope is an OLS that includes only the bottom layer among the layers that reference the SPS, which must be an independent layer.

general_profile_idc указывает профиль, которому соответствует OlsInScope, как указано в приложении A стандарта VVC. Битовые потоки не должны содержать значений general_profile_idc, отличных от указанных в приложении A. Другие значения general_profile_idc зарезервированы для будущего использования ITU-T | ISO/IEC.general_profile_idc indicates the profile to which OlsInScope corresponds, as specified in Annex A of the VVC standard. Bitstreams shall not contain general_profile_idc values other than those specified in Annex A. Other general_profile_idc values are reserved for future use by ITU-T | ISO/IEC.

general_tier_flag указывает контекст ранга для интерпретации general_level_idc, как указано в приложении A.general_tier_flag specifies the rank context for interpreting the general_level_idc, as specified in Appendix A.

num_sub_profiles указывает количество синтаксических элементов general_sub_profile_idc[ i ].num_sub_profiles specifies the number of general_sub_profile_idc[ i ] syntax elements.

general_sub_profile_idc[ i ] указывает i-е метаданные с взаимной совместимостью, зарегистрированные в соответствии с рекомендацией ITU-T T.35, содержание которой не указано в стандарте VVC.general_sub_profile_idc[ i ] indicates the i-th cross-compatible metadata registered according to ITU-T Recommendation T.35, the contents of which are not specified in the VVC standard.

general_level_idc указывает уровень, которому соответствует OlsInScope, как указано в приложении A. Битовые потоки не должны содержать значений general_level_idc, отличных от указанных в приложении A. Другие значения general_level_idc зарезервированы для будущего использования ITU-T | ISO/IEC.general_level_idc indicates the level to which OlsInScope corresponds, as specified in Annex A. Bitstreams shall not contain general_level_idc values other than those specified in Annex A. Other general_level_idc values are reserved for future use by ITU-T | ISO/IEC.

Примечание 1. Большее значение general_level_idc указывает на более высокий уровень. Максимальный уровень, просигнализированный в DPS для OlsInScope, может быть выше, чем уровень, просигнализированный в SPS для CVS, содержащейся в OlsInScope.Note 1: A larger general_level_idc value indicates a higher level. The maximum level signaled in the DPS for the OlsInScope may be higher than the level signaled in the SPS for the CVS contained in the OlsInScope.

Примечание 2. Когда OlsInScope соответствует нескольким профилям, general_profile_idc должен указывать профиль, который обеспечивает предпочтительный результат декодирования или предпочтительную идентификацию битового потока, как определено кодером (способом, не указанным в данном описании).Note 2: When OlsInScope matches multiple profiles, the general_profile_idc shall indicate the profile that provides the preferred decoding result or preferred bitstream identification as determined by the encoder (in a manner not specified herein).

Примечание 3. Когда синтаксическая структура profile_tier_level(), включенная в DPS и CVS OlsInScope, соответствует разным профилям, general_profile_idc и level_idc должны указывать профиль и уровень для декодера, способного декодировать OlsInScope.Note 3: When the syntax structure profile_tier_level() included in DPS and CVS OlsInScope corresponds to different profiles, general_profile_idc and level_idc must indicate the profile and level for a decoder capable of decoding OlsInScope.

sub_layer_level_present_flag[ i ], равный 1, указывает то, что информация об уровне присутствует в синтаксической структуре profile_tier_level() для представления подслоя с TemporalId, равным i. sub_layer_level_present_flag[ i ], равный 0, указывает то, что информация об уровне отсутствует в синтаксической структуре profile_tier_level() для представления подслоя с TemporalId, равным i.sub_layer_level_present_flag[ i ] equal to 1 indicates that layer information is present in the syntactic structure of profile_tier_level() to represent the sublayer with TemporalId equal to i. sub_layer_level_present_flag[ i ] equal to 0 indicates that there is no level information in the syntactic structure of profile_tier_level() to represent the sublayer with TemporalId equal to i.

Значение ptl_alignment_zero_bits должен быть равно 0.The value of ptl_alignment_zero_bits must be 0.

Семантика синтаксического элемента sub_layer_level_idc[ i ] является, за исключением описания вывода отсутствующих значений, такой же, как синтаксический элемент general_level_idc, но применяется к представлению подслоя с TemporalId, равным i.The semantics of the sub_layer_level_idc[ i ] syntax element are, except for the description of the output of missing values, the same as the general_level_idc syntax element, but apply to the representation of a sublayer with a TemporalId equal to i.

Семантика DPB представлена следующим образом.The semantics of DPB is presented as follows.

Синтаксическая структура dpb_parameters(maxSubLayersMinus1, subLayerInfoFlag) предоставляет информацию о размере DPB, максимальном количестве переупорядочений изображений и максимальной задержке для каждой CLVS CVS.The dpb_parameters(maxSubLayersMinus1, subLayerInfoFlag) syntax structure provides information about the DPB size, the maximum number of image reorders, and the maximum latency for each CVS CLVS.

Когда синтаксическая структура dpb_parameters() включена в VPS, OLS, к которым применяется синтаксическая структура dpb_parameters(), задаются VPS. Когда синтаксическая структура dpb_parameters() включена в SPS, она применяется к OLS, который включает в себя только нижний слой среди слоев, ссылающихся на SPS, который должен быть независимым слоем.When the dpb_parameters() syntax structure is included in a VPS, the OLSs to which the dpb_parameters() syntax structure applies are specified by the VPS. When the dpb_parameters() syntax structure is included in the SPS, it applies to the OLS, which includes only the bottom layer among the layers referencing the SPS, which must be an independent layer.

max_dec_pic_buffering_minus1[ i ] плюс 1 указывает, для каждой CLVS CVS, максимальный требуемый размер буфера декодированных изображений в единицах буферов хранения изображений, когда значение Htid равно i. Значение max_dec_pic_buffering_minus1[ i ] должно находиться в диапазоне от 0 до MaxDpbSize - 1 включительно, где MaxDpbSize указано где-то в другом месте. Когда i больше 0, max_dec_pic_buffering_minus1[ i ] должно быть больше или равно max_dec_pic_buffering_minus1[i - 1]. Когда max_dec_pic_buffering_minus1[ i ] отсутствует для i в диапазоне от 0 до maxSubLayersMinus1 - 1 включительно, из-за того, что флаг subLayerInfoFlag равен 0, предполагается, что его значение равно max_dec_pic_buffering_minus1[ maxSubLayersMinus1 ].max_dec_pic_buffering_minus1[ i ] plus 1 specifies, for each CVS CLVS, the maximum required decoded picture buffer size in units of picture storage buffers when the value of Htid is i. The value of max_dec_pic_buffering_minus1[ i ] must be in the range 0 to MaxDpbSize - 1, inclusive, where MaxDpbSize is specified elsewhere. When i is greater than 0, max_dec_pic_buffering_minus1[ i ] must be greater than or equal to max_dec_pic_buffering_minus1[i - 1]. When max_dec_pic_buffering_minus1[ i ] is missing for i in the range 0 to maxSubLayersMinus1 - 1 inclusive, because subLayerInfoFlag is 0, its value is assumed to be max_dec_pic_buffering_minus1[ maxSubLayersMinus1 ].

max_num_reorder_pics[ i ] указывает, для каждой CLVS CVS, максимально допустимое количество изображений CLVS, которые могут предшествовать любому изображению в CLVS в порядке декодирования и следовать за этим изображением в порядке вывода, когда значение Htid равно i. Значение max_num_reorder_pics[ i ] должно находиться в диапазоне от 0 до max_dec_pic_buffering_minus1[ i ] включительно. Когда i больше 0, max_num_reorder_pics[ i ] должно быть больше или равно max_num_reorder_pics[i - 1]. Когда max_num_reorder_pics[ i ] отсутствует для i в диапазоне от 0 до maxSubLayersMinus1 - 1 включительно, из-за того, что флаг subLayerInfoFlag равен 0, предполагается, что он равен max_num_reorder_pics[ maxSubLayersMinus1 ].max_num_reorder_pics[ i ] specifies, for each CLVS CVS, the maximum allowed number of CLVS pictures that can precede any picture in the CLVS in decoding order and follow that picture in output order when the value of Htid is i. The max_num_reorder_pics[ i ] value must be between 0 and max_dec_pic_buffering_minus1[ i ], inclusive. When i is greater than 0, max_num_reorder_pics[ i ] must be greater than or equal to max_num_reorder_pics[i - 1]. When max_num_reorder_pics[ i ] is missing for i in the range 0 to maxSubLayersMinus1 - 1 inclusive, because the subLayerInfoFlag is 0, it is assumed to be equal to max_num_reorder_pics[ maxSubLayersMinus1 ].

max_latency_increase_plus1[ i ], не равное 0, используется для вычисления значения MaxLatencyPictures[ i ], которое указывает, для каждой CLVS в CVS, максимальное количество изображений в CLVS, которые могут предшествовать любому изображению в CLVS в порядке вывода и следовать за этим изображением в порядке декодирования, когда значение Htid равно i.max_latency_increase_plus1[ i ], not equal to 0, is used to calculate the value MaxLatencyPictures[ i ], which specifies, for each CLVS in CVS, the maximum number of images in the CLVS that can precede any image in the CLVS in output order and follow that image in output order decoding when Htid is equal to i.

Когда max_latency_increase_plus1[ i ] не равно 0, значение MaxLatencyPictures[ i ] указывается следующим образом:When max_latency_increase_plus1[ i ] is not equal to 0, the value of MaxLatencyPictures[ i ] is specified as follows:

MaxLatencyPictures[ i ] = MaxLatencyPictures[ i ] =

max_num_reorder_pics[ i ] + max_latency_increase_ plus1[ i ] - 1max_num_reorder_pics[ i ] + max_latency_increase_ plus1[ i ] - 1

Когда значение max_latency_increase_plus1[ i ] равно 0, соответствующий предел не выражается.When max_latency_increase_plus1[ i ] is 0, the corresponding limit is not expressed.

Значение max_latency_increase_plus1[ i ] должно находиться в диапазоне от 0 до 232 - 2 включительно. Когда max_latency_increase_plus1[ i ] отсутствует для i в диапазоне от 0 до maxSubLayersMinus1 - 1 включительно, из-за того, что флаг subLayerInfoFlag равен 0, предполагается, что он равен max_latency_increase_plus1[ maxSubLayersMinus1 ].The value of max_latency_increase_plus1[ i ] must be in the range 0 to 232 - 2 inclusive. When max_latency_increase_plus1[ i ] is missing for i in the range 0 to maxSubLayersMinus1 - 1 inclusive, because the subLayerInfoFlag is 0, it is assumed to be equal to max_latency_increase_plus1[ maxSubLayersMinus1 ].

Семантика параметров HRD включает в себя семантику общих параметров HRD.The semantics of HRD parameters includes the semantics of general HRD parameters.

Семантика общих параметров HRD представлена следующим образом.The semantics of the general HRD parameters is presented as follows.

Синтаксическая структура general_hrd_parameters() предоставляет параметры HRD, используемые в операциях HRD.The general_hrd_parameters() syntax structure provides the HRD parameters used in HRD operations.

num_ols_hrd_params_minus1 плюс 1 указывает количество синтаксических структур ols_hrd_parameters(), присутствующих в синтаксической структуре general_hrd_parameters(). Значение num_ols_hrd_params_minus1 должно находиться в диапазоне от 0 до 73 включительно. Когда TotalNumOlss больше 1, предполагается, что значение num_ols_hrd_params_minus1 равно 0.num_ols_hrd_params_minus1 plus 1 indicates the number of ols_hrd_parameters() syntax structures present in the general_hrd_parameters() syntax structure. The value of num_ols_hrd_params_minus1 must be in the range from 0 to 73 inclusive. When TotalNumOlss is greater than 1, the value of num_ols_hrd_params_minus1 is assumed to be 0.

Параметр hrd_cpb_cnt_minus1 плюс один указывает количество альтернативных спецификаций CPB в битовом потоке CVS. Значение hrd_cpb_cnt_minus1 должно находиться в диапазоне от 0 до 31 включительно. The parameter hrd_cpb_cnt_minus1 plus one specifies the number of alternative CPB specifications in the CVS bitstream. The value of hrd_cpb_cnt_minus1 must be in the range from 0 to 31 inclusive.

hrd_max_temporal_id[ i ] указывает TemporalId представления верхнего слоя, для которого параметры HRD содержатся в i-ой синтаксической структуре layer_level_hrd_parameters( ). Значение hrd_max_temporal_id[ i ] должно находиться в диапазоне от 0 до vps_max_sub_layers_minus1 включительно. Когда vps_max_sub_layers_minus1 равно нулю, предполагается, что значение hrd_max_temporal_id[ i ] равно 0. hrd_max_temporal_id[ i ] specifies the TemporalId of the top layer view for which the HRD parameters are contained in the i-th syntactic structure layer_level_hrd_parameters( ). The value of hrd_max_temporal_id[ i ] must be in the range from 0 to vps_max_sub_layers_minus1 inclusive. When vps_max_sub_layers_minus1 is zero, the value of hrd_max_temporal_id[ i ] is assumed to be 0.

ols_hrd_idx[ i ] указывает индекс синтаксической структуры ols_hrd_parameters(), который применяется к i-му OLS. Значение ols_hrd_idx[[ i ] должно находиться в диапазоне от 0 до num_ols_hrd_params_minus1 включительно. Если это значение отсутствует, предполагается, что значение ols_hrd_idx[[ i ] равно 0.ols_hrd_idx[ i ] specifies the index of the ols_hrd_parameters() syntax structure that applies to the i-th OLS. The value of ols_hrd_idx[[ i ] must be in the range from 0 to num_ols_hrd_params_minus1 inclusive. If this value is missing, the value of ols_hrd_idx[[ i ] is assumed to be 0.

Семантика структуры списка опорных изображений представлена следующим образом.The semantics of the reference image list structure is presented as follows.

Синтаксическая структура ref_pic_list_struct(listIdx, rplsIdx) может присутствовать в SPS или в заголовке среза. В зависимости от того, включена ли синтаксическая структура в заголовок среза или в SPS, применяется следующее:The syntax structure ref_pic_list_struct(listIdx, rplsIdx) can be present in the SPS or in the slice header. Depending on whether the syntax structure is included in the slice header or in the SPS, the following applies:

- Синтаксическая структура ref_pic_list_struct(listIdx, rplsIdx), если она присутствует в заголовке среза, указывает список опорных изображений listIdx текущего изображения (изображения, содержащего срез).- The syntactic structure ref_pic_list_struct(listIdx, rplsIdx), if present in the slice header, specifies the reference image list listIdx of the current image (the image containing the slice).

- В противном случае синтаксическая структура ref_pic_list_struct( listIdx, rplsIdx ) (присутствующая в SPS) указывает кандидата для списка listIdx опорных изображений, и термин «текущее изображение» в семантике, указанной в оставшейся части этого пункта, относится к каждому изображению, которое 1) имеет один или более срезов, содержащих ref_pic_list_idx[ listIdx ], равный индексу в списке синтаксических структур ref_pic_list_struct( listIdx, rplsIdx ), включенных в SPS, и 2) находится в CVS, ссылающейся на SPS.- Otherwise, the syntactic structure ref_pic_list_struct( listIdx, rplsIdx ) (present in SPS) specifies a candidate for the listIdx of reference pictures, and the term "current picture" in the semantics specified in the remainder of this clause refers to each picture that 1) has one or more slices containing ref_pic_list_idx[ listIdx ] equal to the index in the list of syntax structures ref_pic_list_struct( listIdx, rplsIdx ) included in the SPS, and 2) located in the CVS referencing the SPS.

num_ref_entries[ listIdx ][ rplsIdx ] указывает количество записей в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ). Значение num_ref_entries[listIdx][rplsIdx] должно находиться в диапазоне от 0 до MaxDecPicBuffMinus1 + 14 включительно.num_ref_entries[ listIdx ][ rplsIdx ] specifies the number of entries in the syntax structure ref_pic_list_struct( listIdx, rplsIdx ). The value of num_ref_entries[listIdx][rplsIdx] must be in the range 0 to MaxDecPicBuffMinus1 + 14, inclusive.

VPS 704, SPS 706 и PPS 708 содержатся в различных типах единиц слоя сетевой абстракции (NAL). Единица NAL представляет собой синтаксическую структуру, содержащую указатель типа данных, которому следует следовать (например, кодированные видеоданные). Единицы NAL подразделяются на блоки слоя кодирования видео (VCL) и единицы NAL без VCL. Единицы NAL VCL содержат данные, которые представляют значения выборок в видеоизображениях, и единицы NAL без VCL содержат любую ассоциированную дополнительную информацию, такую как наборы параметров (важные данные, которые могут применяться к ряду единиц NAL VCL) и дополнительная информация расширения (информация о времени и другие дополнительные данные, которые могут повысить удобство использования декодированного видеосигнала, но не являются необходимыми для декодирования значений выборок в видеоизображениях).VPS 704, SPS 706 and PPS 708 are contained in different types of Network Abstraction Layer (NAL) units. A NAL unit is a syntactic structure containing an indication of the data type to be followed (eg, encoded video data). NAL units are divided into video coding layer (VCL) units and non-VCL NAL units. VCL NAL units contain data that represents sample values in video images, and non-VCL NAL units contain any associated additional information, such as parameter sets (important data that can be applied to a number of VCL NAL units) and additional extension information (time and other additional data that may enhance the usability of the decoded video signal, but is not necessary for decoding sample values in video images).

В варианте осуществления VPS 704 содержится в единице NAL без VCL, обозначенной как единица NAL VPS. Таким образом, единица NAL VPS имеет NUT VPS. В варианте осуществления SPS 706 представляет собой единицу NAL без VCL, обозначенную как единица NAL SPS. Таким образом, блок SPS NAL имеет NUT SPS. В варианте осуществления PPS 708 содержится в единице NAL без VCL, обозначенной как единица NAL PPS. Таким образом, единица NAL PPS имеет NUT PPS.In an embodiment, the VPS 704 is contained in a non-VCL NAL unit, designated a VPS NAL unit. Thus, a NAL VPS unit has a NUT VPS. In an embodiment, SPS 706 is a non-VCL NAL unit, designated an SPS NAL unit. Thus, the SPS NAL block has an SPS NUT. In an embodiment, PPS 708 is contained in a non-VCL NAL unit, designated a PPS NAL unit. Thus, a unit of NAL PPS has a NUT PPS.

Заголовок 712 среза представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются ко всем срезам кодированного изображения (например, изображения 725). В варианте осуществления заголовок 712 среза находится в NAL VCL.Slice header 712 is a syntax structure containing syntax elements that apply to all slices of an encoded image (eg, image 725). In an embodiment, the slice header 712 is in the NAL VCL.

Данные 720 изображения содержат видеоданные, кодированные согласно межслойному предсказанию, внутрикадровому предсказанию или межслойному предсказанию, а также соответствующие преобразованные и квантованные остаточные данные. Как показано на фиг. 7, данные 720 изображения включают в себя один или более OLS 721. Один или более OLS 721 аналогичны OLS 1, OLS 2 и OLS 3, показанным на фиг. 6. Каждый OLS 721 включает в себя один или более слоев 723. Слои 723 аналогичны слоям 531-532, показанным на фиг. 5. Каждый из слоев 723 включает в себя одно или более изображений 725. Изображения 725 аналогичны изображениям 615-618, 611-614, 641-644, 651-654 и 661-664, показанным на фиг. 6.The image data 720 includes video data encoded according to inter-layer prediction, intra-frame prediction, or inter-layer prediction, as well as corresponding transformed and quantized residual data. As shown in FIG. 7, image data 720 includes one or more OLS 721. The one or more OLS 721 are similar to OLS 1, OLS 2 and OLS 3 shown in FIG. 6. Each OLS 721 includes one or more layers 723. Layers 723 are similar to layers 531-532 shown in FIG. 5. Each of the layers 723 includes one or more images 725. The images 725 are similar to the images 615-618, 611-614, 641-644, 651-654 and 661-664 shown in FIG. 6.

Каждое изображение 725 представляет собой массив выборок яркости в монохромном формате или массив выборок яркости и два соответствующих массива выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4. Изображения 725 могут быть либо кадром, либо полем. Однако в одном CVS (например, CVS 790) либо все изображения 725 являются кадрами, либо все изображения 725 являются полями. CVS 790 представляет собой кодированную видеопоследовательность для каждой видеопоследовательности кодированного слоя (CLVS) в битовом видеопотоке 700. Примечательно, что CVS 790 и CLVS являются одинаковыми тогда, когда битовый видеопоток 700 включает в себя один слой. CVS 790 и CLVS являются разными только тогда, когда битовый видеопоток 700 включает в себя множество слоев (например, как показано на фиг. 5 и 6).Each image 725 is an array of luminance samples in monochrome format or an array of luminance samples and two corresponding arrays of chroma samples in 4:2:0, 4:2:2 and 4:4:4 color formats. Images 725 can be either a frame or a field. However, in one CVS (eg, CVS 790), either all images 725 are frames or all images 725 are fields. CVS 790 is a coded video sequence for each coded layer video sequence (CLVS) in video bitstream 700. Notably, CVS 790 and CLVS are the same when video bitstream 700 includes a single layer. CVS 790 and CLVS are different only when the video bitstream 700 includes multiple layers (eg, as shown in FIGS. 5 and 6).

Каждое изображение 725 содержит один или более срезов 727. Срез 727 представляет собой целое число полных тайлов или целое число последовательных полных строк CTU в тайле изображения (например, изображения 725). Каждый срез 727 содержится исключительно в одной единице NAL (например, единице NAL VCL). Тайл (не показан) представляет собой прямоугольную область CTU в конкретном столбце тайлов и конкретной строке тайлов в изображении (например, изображении 725). CTU (не показана) представляет собой CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое закодировано с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. CTB (не показан) представляет собой блок N×N выборок для некоторого значения N, так что разделение компонента на CTB представляет собой разбиение на разделы. Блок (не показан) представляет собой массив MxN (M столбцов на N строк) выборок (например, пикселей) или массив MxN коэффициентов преобразования.Each image 725 contains one or more slices 727. A slice 727 represents an integer number of full tiles or an integer number of consecutive full CTU lines in an image tile (eg, image 725). Each slice 727 is contained exclusively in one NAL unit (eg, a VCL NAL unit). A tile (not shown) is a rectangular CTU area in a particular column of tiles and a particular row of tiles in an image (eg, image 725). A CTU (not shown) represents a CTB of luma samples, two corresponding CTBs of chroma samples of an image that has three arrays of samples, or a CTB of samples of a monochrome image or an image that is encoded using three separate color planes and the syntax structures used to encode the samples. A CTB (not shown) is a block of N×N samples for some value of N, so that dividing a component into a CTB is a partition. A block (not shown) is an MxN array (M columns by N rows) of samples (eg, pixels) or an MxN array of transform coefficients.

Изображения 725 и их срезы 727 содержат данные, ассоциированные с изображениями или видео, подлежащими кодированию или декодированию. Таким образом, изображения 725 и их срезы 727 могут просто называться полезной нагрузкой или данными, переносимыми в битовом потоке 700.The images 725 and their slices 727 contain data associated with the images or videos to be encoded or decoded. Thus, the images 725 and their slices 727 may simply be referred to as the payload or data carried in the bitstream 700.

Специалистам в данной области техники будет понятно, что при практическом применении битовый поток 700 может содержать другие параметры и информацию.Those skilled in the art will appreciate that in practical use, bit stream 700 may contain other parameters and information.

Битовый подпоток 701 может быть извлечен из битового потока 700 в соответствии с процессом 703 извлечения битового подпотока. Процесс 703 извлечения битового подпотока представляет собой заданный механизм, который удаляет единицы NAL из битового потока 700, которые не являются частью целевого набора, приводящего к выходному подбитовому потоку 701, который включает в себя единицы NAL, которые включены в целевой набор. Процесс 703 извлечения битового подпотока может выполняться кодером или ассоциированным срезом, выполненным с возможностью динамического изменения битового потока 700 на основе поведения/запросов пользователя.The subbitstream 701 may be extracted from the bitstream 700 in accordance with the subbitstream extraction process 703. The subbitstream extraction process 703 is a predetermined mechanism that removes NAL units from the bitstream 700 that are not part of the target set, resulting in an output subbitstream 701 that includes NAL units that are included in the target set. The sub-bitstream extraction process 703 may be performed by an encoder or associated slicer configured to dynamically change the bitstream 700 based on user behavior/requests.

Так как SPS 706 содержит dpb_parameters() для i-го OLS 784, когда i-й OLS содержит один единственный слой (например, OLS 3 на фиг. 6), VPS 704 может быть удален во время процесса 703 извлечения. То есть битовый подпоток 701 не должен быть включен VPS 704 в битовый подпоток 701, так как идентичные dpb_parameters() для i-го OLS 784 также присутствуют в SPS 706. Таким образом, декодер может получить dpb_parameters() для i-го OLS 784 из SPS 706, когда i-й OLS содержит один единственный слой.Since SPS 706 contains dpb_parameters() for the i-th OLS 784, when the i-th OLS contains one single layer (eg, OLS 3 in FIG. 6), the VPS 704 can be removed during the extraction process 703. That is, the bit substream 701 does not need to be included by the VPS 704 in the bit substream 701 since identical dpb_parameters() for the i-th OLS 784 are also present in the SPS 706. Thus, the decoder can obtain the dpb_parameters() for the i-th OLS 784 from SPS 706 when the i-th OLS contains one single layer.

На фиг. 8 показан вариант осуществления способа 800 декодирования, реализуемого видеодекодером (например, видеодекодером 400). Способ 800 может выполняться после того, как битовый поток был прямо или косвенно принят из видеокодера (например, видеокодера 300). Способ 800 улучшает процесс декодирования за счет включения параметров буфера декодированных изображений (DPB) в набор параметров последовательности (SPS) тогда, когда набор слоев вывода (OLS) содержит один единственный слой. Так как SPS включает в себя параметры DPB для OLS с одним слоем, набор параметров видео (VPS) может быть удален из битового потока, что уменьшает избыточность и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») при кодировании видео улучшен по сравнению с современными кодеками. С практической точки зрения улучшенный процесс кодирования видео обеспечивает пользователю лучшее пользовательское восприятие при отправке, приеме и/или просмотре видео.In fig. 8 illustrates an embodiment of a decoding method 800 implemented by a video decoder (eg, video decoder 400). Method 800 may be performed after the bit stream has been directly or indirectly received from a video encoder (eg, video encoder 300). Method 800 improves the decoding process by including decoded picture buffer (DPB) parameters in a sequence parameter set (SPS) when the output layer set (OLS) contains a single layer. Since SPS includes DPB parameters for single-layer OLS, the video parameter set (VPS) can be removed from the bitstream, reducing redundancy and improving coding efficiency. Thus, the encoder/decoder (aka "codec") for video encoding is improved compared to modern codecs. From a practical standpoint, the improved video encoding process provides the user with a better user experience when sending, receiving and/or viewing video.

На этапе 802 видеодекодер принимает битовый подпоток (например, битовый подпоток 701), имеющий набор параметров последовательности (например, SPS 706) с синтаксической структурой буфера декодированных изображений (DPB) (например, dpb_parameters()) для i-го OLS 784) для набора слоев вывода (OLS) с одним единственным слоем (например, OLS 3).At step 802, the video decoder receives a bit substream (eg, bit substream 701) having a set of sequence parameters (eg, SPS 706) with a decoded picture buffer (DPB) syntax structure (eg, dpb_parameters()) for the i-th OLS 784) for the set output layers (OLS) with one single layer (for example, OLS 3).

В варианте осуществления синтаксическая структура DPB обозначается как dpb_parameters(). В варианте осуществления одним единственным слоем является i-й слой, и где OLS является i-м OLS. В варианте осуществления синтаксическая структура DPB присутствует в i-й синтаксической структуре profile_tier_level() в SPS. В варианте осуществления битовый подпоток не включает в себя набор параметров видео (VPS 704). То есть VPS был удален как часть процесса 703 извлечения.In an embodiment, the DPB syntax structure is denoted dpb_parameters(). In an embodiment, the single layer is the i-th layer, and where OLS is the i-th OLS. In an embodiment, the DPB syntax structure is present in the i-th profile_tier_level() syntax structure in the SPS. In an embodiment, the subbit stream does not include a video parameter set (VPS 704). That is, the VPS was removed as part of the extraction process 703.

На этапе 804 видеодекодер получает синтаксическую структуру DPB для OLS с одним слоем из SPS. В варианте осуществления на SPS ссылается один единственный слой в OLS.At step 804, the video decoder obtains the DPB syntax structure for the OLS with one layer from the SPS. In an embodiment, the SPS is referenced by a single layer in the OLS.

На этапе 806 видеодекодер декодирует изображение (например, изображение 725) одного единственного слоя с использованием синтаксической структуры DPB для получения декодированного изображения. В варианте осуществления декодированное изображение сохраняется в буфере декодированных изображений (DPB) до или перед отображением.At step 806, the video decoder decodes an image (eg, image 725) of one single layer using a DPB syntax structure to obtain a decoded image. In an embodiment, the decoded image is stored in a decoded picture buffer (DPB) before or before display.

После того, как изображение было декодировано, изображение может быть использовано для выработки или получения изображения или видеопоследовательности для отображения пользователю на дисплее или экране электронного устройства (например, смартфона, планшетного компьютера, ноутбука, персонального компьютера и т.д.).Once the image has been decoded, the image can be used to generate or obtain an image or video sequence for display to a user on the display or screen of an electronic device (eg, smartphone, tablet computer, laptop, personal computer, etc.).

На фиг. 9 показан вариант осуществления способа 900 кодирования битового видеопотока, реализуемого видеокодером (например, видеокодером 300). Способ 900 может выполняться тогда, когда изображение (например, из видео) необходимо кодировать в битовый видеопоток и затем передать в видеодекодер (например, видеодекодер 400). Способ 900 улучшает процесс кодирования за счет включения параметров буфера декодированных изображений (DPB) в набор параметров последовательности (SPS) тогда, когда набор слоев вывода (OLS) содержит один единственный слой. Так как SPS включает в себя параметры DPB для OLS с одним слоем, набор параметров видео (VPS) может быть удален из битового потока, что уменьшает избыточность и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») при кодировании видео улучшен по сравнению с современными кодеками. С практической точки зрения улучшенный процесс кодирования видео обеспечивает пользователю лучшее пользовательское восприятие при отправке, приеме и/или просмотре видео.In fig. 9 illustrates an embodiment of a method 900 for encoding a video bitstream implemented by a video encoder (eg, video encoder 300). Method 900 may be performed when an image (eg, from a video) needs to be encoded into a video bit stream and then transmitted to a video decoder (eg, video decoder 400). Method 900 improves the encoding process by including decoded picture buffer (DPB) parameters in a sequence parameter set (SPS) when the output layer set (OLS) contains a single layer. Since SPS includes DPB parameters for single-layer OLS, the video parameter set (VPS) can be removed from the bitstream, reducing redundancy and improving coding efficiency. Thus, the encoder/decoder (aka "codec") for video encoding is improved compared to modern codecs. From a practical standpoint, the improved video encoding process provides the user with a better user experience when sending, receiving and/or viewing video.

На этапе 902 видеокодер вырабатывает набор параметров видео (например, VPS 704) и набор параметров последовательности (например, SPS 706). VPS включает в себя список синтаксических структур буфера декодированных изображений (DPB) для всех наборов слоев вывода (например, синтаксические структуры 780 PTL). SPS включает в себя синтаксическую структуру DPB для каждого OLS, имеющего один единственный слой (например, dpb_parameters() для i-й OLS 784). Например, SPS включает в себя синтаксическую структуру DPB для OLS 3 на фиг. 6, которая обозначена как dpb_parameters() для OLS3 на фиг. 7. SPS не включает в себя синтаксическую структуру DPB для какого-либо OLS, имеющего более одного слоя. Например, SPS не включает в себя синтаксическую структуру DPB для OLS 1 и OLS 2 на фиг. 6, которая обозначена как dpb_parameters() для OLS2 и dpb_parameters() для OLS3 на фиг. 7.At step 902, the video encoder generates a video parameter set (eg, VPS 704) and a sequence parameter set (eg, SPS 706). The VPS includes a list of decoded picture buffer (DPB) syntax structures for all sets of output layers (eg, PTL syntax structures 780). The SPS includes a DPB syntax structure for each OLS having one single layer (eg, dpb_parameters() for the i-th OLS 784). For example, the SPS includes the DPB syntax structure for OLS 3 in FIG. 6, which is denoted dpb_parameters() for OLS3 in FIG. 7. SPS does not include the DPB syntax structure for any OLS that has more than one layer. For example, the SPS does not include the DPB syntax structure for OLS 1 and OLS 2 in FIG. 6, which is denoted dpb_parameters() for OLS2 and dpb_parameters() for OLS3 in FIG. 7.

В варианте осуществления VPS включает в себя индекс для списка синтаксических структур PTL, и где индекс обозначен как vps_ols_dpb_params_idx[ i ]. В варианте осуществления значение vps_ols_dpb_params_idx[ i ] находится в диапазоне от нуля до общего количества синтаксических структур DPB в VPS. В варианте осуществления VPS включает в себя vps_num_dpb_params_minus1, и где vps_num_dpb_params_minus1 плюс 1 указывает общее количество синтаксических структур DPB.In an embodiment, the VPS includes an index for a list of PTL syntax structures, and where the index is denoted as vps_ols_dpb_params_idx[i]. In an embodiment, the value of vps_ols_dpb_params_idx[ i ] ranges from zero to the total number of DPB syntax structures in the VPS. In an embodiment, the VPS includes vps_num_dpb_params_minus1, and where vps_num_dpb_params_minus1 plus 1 indicates the total number of DPB syntax structures.

На этапе 904 видеокодер кодирует VPS и SPS в битовый видеопоток. На этапе 906 видеокодер сохраняет битовый видеопоток для передачи в видеодекодер. В варианте осуществления способ 900 дополнительно включает в себя извлечение битового подпотока (например, битового подпотока 701) из битового потока (например, битового потока 700). Как описано выше, процесс 703 извлечения сохраняет SPS, но удаляет VPS. То есть битовый подпоток включает в себя SPS из битового потока, но не включает в себя VPS из битового потока.At step 904, the video encoder encodes the VPS and SPS into a video bit stream. At step 906, the video encoder stores the video bit stream for transmission to the video decoder. In an embodiment, method 900 further includes extracting a bit stream (eg, bit substream 701) from a bit stream (eg, bit stream 700). As described above, extraction process 703 retains the SPS but removes the VPS. That is, the sub-bitstream includes the SPS from the bitstream, but does not include the VPS from the bitstream.

Аналогично битовому видеопотоку, битовый подпоток может храниться в памяти для передачи в видеодекодер. В варианте осуществления битовый видеопоток и/или битовый подпоток передается в видеодекодер. Кодированный битовый видеопоток и/или кодированный битовый подпоток, после приема видеодекодером, может быть декодирован (например, как описано выше) для выработки или получения изображения или видеопоследовательности для отображения пользователю на дисплее или экране электронного устройства (например, смартфона, планшетного компьютера, ноутбука, персонального компьютера и т.д.).Similar to a video bitstream, a subbitstream can be stored in memory for transmission to a video decoder. In an embodiment, the video bit stream and/or sub-bit stream is transmitted to a video decoder. The encoded video bit stream and/or the encoded sub-bit stream, when received by a video decoder, may be decoded (e.g., as described above) to generate or obtain an image or video sequence for display to the user on the display or screen of an electronic device (e.g., smartphone, tablet computer, laptop, personal computer, etc.).

Дополнительные и/или добавленные детали представлены ниже.Additional and/or added details are provided below.

Общий процесс декодирования выглядит следующим образом.The general decoding process is as follows.

Входными данными для этого процесса является битовый поток BitstreamToDecode. Выходными данными этого процесса является список декодированных изображений.The input to this process is the bitstream BitstreamToDecode. The output of this process is a list of decoded images.

Процесс декодирования указывается таким образом, чтобы все декодеры, которые соответствуют заданному профилю и уровню, создавали численно идентичные кадрированные декодированные выходные изображения при вызове процесса декодирования, ассоциированного с этим профилем для битового потока, соответствующего этому профилю и уровню. Любой процесс декодирования, который создает кадрированные декодированные выходные изображения, идентичные изображениям, полученным в процессе, описанном в данном документе (с правильным порядком вывода или синхронизацией вывода, как это задано), соответствует требованиям к процессу декодирования стандарта VVC.The decoding process is specified such that all decoders that match a given profile and level produce numerically identical framed decoded output pictures when invoking the decoding process associated with that profile for a bitstream corresponding to that profile and level. Any decoding process that produces cropped decoded output images identical to those produced by the process described in this document (with the correct output order or output timing as specified) meets the VVC standard decoding process requirements.

Для каждой AU IRAP в битовом потоке применяется следующее.For each IRAP AU in the bitstream, the following applies.

- Если AU является первой AU в битовом потоке в порядке декодирования, каждое изображение является изображением мгновенного обновления декодирования (IDR), или каждое изображение является первым изображением слоя, которое следует за концом последовательности единиц NAL в порядке декодирования, переменная NoIncorrectPicOutputFlag устанавливается равной 1.- If the AU is the first AU in the bitstream in decoding order, each picture is an instantaneous decoding update (IDR) picture, or each picture is the first layer picture that follows the end of the sequence of NAL units in decoding order, the NoIncorrectPicOutputFlag variable is set to 1.

- В противном случае, если какое-либо внешнее средство, не указанное в данном описании, доступно для установки переменной HandleCraAsCvsStartFlag на значение для AU, HandleCraAsCvsStartFlag устанавливается равным значению, предоставленному внешним средством, и NoIncorrectPicOutputFlag устанавливается равным HandleCraAsCvsStartFlag.- Otherwise, if any external facility not specified in this description is available to set the HandleCraAsCvsStartFlag variable to a value for the AU, HandleCraAsCvsStartFlag is set to the value provided by the external facility, and NoIncorrectPicOutputFlag is set to HandleCraAsCvsStartFlag.

- В противном случае HandleCraAsCvsStartFlag и NoIncorrectPicOutputFlag устанавливаются равными 0.- Otherwise, HandleCraAsCvsStartFlag and NoIncorrectPicOutputFlag are set to 0.

Для каждой AU GDR в битовом потоке применяется следующее.For each GDR AU in the bitstream, the following applies.

- Если AU является первой AU в битовом потоке в порядке декодирования, или каждое изображение является первым изображением слоя, которое следует за единицей NAL конца последовательности в порядке декодирования, переменная NoIncorrectPicOutputFlag устанавливается равной 1.- If the AU is the first AU in the bitstream in decoding order, or each picture is the first layer image that follows the end-of-sequence NAL unit in decoding order, the NoIncorrectPicOutputFlag variable is set to 1.

- В противном случае, если какое-либо внешнее средство, не указанное в данном описании, доступно для установки переменной HandleGdrAsCvsStartFlag на значение для AU, HandleGdrAsCvsStartFlag устанавливается равным значению, предоставленному внешним средством, и NoIncorrectPicOutputFlag устанавливается равным HandleGdrAsCvsStartFlag.- Otherwise, if any external facility not specified herein is available to set the HandleGdrAsCvsStartFlag variable to a value for the AU, HandleGdrAsCvsStartFlag is set to the value provided by the external facility, and NoIncorrectPicOutputFlag is set to HandleGdrAsCvsStartFlag.

- В противном случае HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag устанавливаются равными 0.- Otherwise, HandleGdrAsCvsStartFlag and NoIncorrectPicOutputFlag are set to 0.

Примечание: Описанные выше операции как для изображений IRAP, так и для изображений GDR необходимы для идентификации CVS в битовом потоке.Note: The above operations for both IRAP and GDR images are required to identify the CVS in the bitstream.

Пункт 8.1.2 повторно вызывается для каждого кодированного изображения в BitstreamToDecode в порядке декодирования.Clause 8.1.2 is called repeatedly for each encoded image in BitstreamToDecode in decoding order.

Процесс декодирования для составления списков опорных изображений выглядит следующим образом.The decoding process for generating reference picture lists is as follows.

Этот процесс вызывается в начале процесса декодирования для каждого слоя изображения без IDR.This process is called at the beginning of the decoding process for each layer of the non-IDR image.

Опорные изображения адресуются посредством опорных индексов. Опорный индекс представляет собой индекс в списке опорных изображений. В случае декодирования I-среза список опорных изображений не используется при декодировании данных среза. В случае декодирования P-среза при декодировании данных среза используется только список опорных изображений 0 (то есть RefPicList[ 0 ]). В случае декодирования B-среза при декодировании данных среза используются как список 0 опорных изображений, так и список 1 опорных изображений (то есть RefPicList[1]).The reference images are addressed by reference indices. The reference index is an index in the list of reference images. In the case of I-slice decoding, the reference picture list is not used when decoding the slice data. In the case of P-slice decoding, only the reference picture list 0 (ie, RefPicList[ 0 ]) is used when decoding the slice data. In the case of B-slice decoding, both reference picture list 0 and reference picture list 1 (ie, RefPicList[1]) are used when decoding the slice data.

Требованием соответствия битового потока являются следующие ограничения.The following restrictions apply to the bitstream compliance requirement.

- Для каждого i, равного 0 или 1, num_ref_entries[ i ][RplsIdx[ i ]] не должно быть меньше, чем NumRefIdxActive[ i ].- For each i equal to 0 or 1, num_ref_entries[ i ][RplsIdx[ i ]] must not be less than NumRefIdxActive[ i ].

- Изображение, на которое ссылается каждая активная запись в RefPicList[ 0 ] или RefPicList[1], должно присутствовать в DPB и должно иметь TemporalId, меньший или равный значению TemporalId текущего изображения.- The image referenced by each active entry in RefPicList[ 0 ] or RefPicList[1] must be present in the DPB and must have a TemporalId less than or equal to the TemporalId value of the current image.

- Изображение, на которое ссылается каждая запись в RefPicList[ 0 ] или RefPicList[1], не должно быть текущим изображением и должно иметь non_reference_picture_flag, равный 0.- The picture referenced by each entry in RefPicList[ 0 ] or RefPicList[1] must not be the current picture and must have a non_reference_picture_flag equal to 0.

- Запись краткосрочного опорного изображения (STRP) в RefPicList[ 0 ] или RefPicList[1] среза изображения и запись LTRP в RefPicList[ 0 ] или RefPicList[1] одного и того же среза или другого среза одного и того же изображения не должны относиться к одному и тому же изображению.- A short-term reference picture (STRP) entry in the RefPicList[ 0 ] or RefPicList[1] of an image slice and an LTRP entry in the RefPicList[ 0 ] or RefPicList[1] of the same slice or another slice of the same image shall not refer to the same image.

- В RefPicList[ 0 ] или RefPicList[1] не должно быть записей LTRP, для которых разность между PicOrderCntVal текущего изображения и PicOrderCntVal изображения, на которое ссылается запись, больше или равна 224.- RefPicList[ 0 ] or RefPicList[1] must not contain LTRP entries for which the difference between the PicOrderCntVal of the current image and the PicOrderCntVal of the image referenced by the entry is greater than or equal to 224.

- Пусть setOfRefPics будет набором уникальных изображений, на которые ссылаются все записи в RefPicList[ 0 ], которые имеют тот же nuh_layer_id, что и текущее изображение, и все записи в RefPicList[1], которые имеют тот же nuh_layer_id, что и текущее изображение. Количество изображений в setOfRefPics должно быть меньше или равно MaxDecPicBuffMinus1, и setOfRefPics должно быть одинаковым для всех срезов изображения.- Let setOfRefPics be a set of unique images referenced by all entries in RefPicList[ 0 ] that have the same nuh_layer_id as the current image, and all entries in RefPicList[1] that have the same nuh_layer_id as the current image. The number of images in setOfRefPics must be less than or equal to MaxDecPicBuffMinus1, and setOfRefPics must be the same for all image slices.

- Когда текущее изображение является изображением с пошаговым доступом к временным подслою (STSA), активная запись в RefPicList[ 0 ] или RefPicList[1], которая имеет TemporalId, равный идентификатору текущего изображения, должна отсутствовать.- When the current image is a step-by-step temporal sublayer access (STSA) image, there must be no active entry in RefPicList[ 0 ] or RefPicList[1] that has a TemporalId equal to the ID of the current image.

Когда текущее изображение является изображением, которое следует в порядке декодирования за изображением STSA, которое имеет TemporalId, равный идентификатору текущего изображения, не должно быть изображения, которое имеет TemporalId, равный значению текущего изображения, включенного в качестве активной записи в RefPicList[ 0 ] или RefPicList[1], которая предшествует изображению STSA в порядке декодирования.When the current picture is a picture that follows in decoding order an STSA picture that has a TemporalId equal to the ID of the current picture, there shall not be a picture that has a TemporalId equal to the value of the current picture included as the active entry in RefPicList[ 0 ] or RefPicList [1], which precedes the STSA image in decoding order.

- Изображение, на которое ссылается каждая запись ILRP в RefPicList[ 0 ] или RefPicList[1] среза текущего изображения, должно находиться в той же единице доступа, что и текущее изображение.- The image referenced by each ILRP entry in the RefPicList[ 0 ] or RefPicList[1] of the current image slice must be in the same access unit as the current image.

- Изображение, на которое ссылается каждая запись ILRP в RefPicList[ 0 ] или RefPicList[1] среза текущего изображения, должно присутствовать в DPB и должно иметь nuh_layer_id меньше, чем у текущего изображения.- The image referenced by each ILRP entry in the RefPicList[ 0 ] or RefPicList[1] of the current image slice must be present in the DPB and must have a nuh_layer_id less than that of the current image.

- Каждая запись ILRP в RefPicList[ 0 ] или RefPicList[1] среза должна быть активной записью.- Each ILRP entry in a slice's RefPicList[ 0 ] or RefPicList[1] must be an active entry.

Общие аспекты HRD в пункте C.1 стандарта VVC включают в себя следующее.General aspects of HRD in clause C.1 of the VVC standard include the following.

Это приложение указывает гипотетический опорный декодер (HRD) и его использование для проверки битового потока и соответствия декодера.This appendix specifies a hypothetical reference decoder (HRD) and its use for checking bitstream and decoder compliance.

Набор тестов на соответствие битового потока необходим для проверки на соответствие битового потока, на который ссылаются как на весь битовый поток, обозначенный как fullBitstream. Набор тестов на соответствие битового потока предназначен для проверки на соответствие каждой OP каждого OLS, заданного VPS.A set of bitstream consistency tests is required to test the consistency of a bitstream referred to as the entire bitstream, designated fullBitstream. A set of bitstream conformance tests are designed to check the conformance of each OP of each OLS specified by the VPS.

Для каждого теста применяются следующие упорядоченные этапы в указанном порядке, за которыми следуют процессы, описанные после этих этапов в этом пункте:For each test, the following ordered steps apply in the order listed, followed by the processes described after those steps in this clause:

1. Тестируемая рабочая точка, обозначенная как targetOp, выбирается путем выбора целевого OLS с индексом OLS opOlsIdx и наивысшим значением OpTid TemporalId. Значение opOlsIdx находится в диапазоне от 0 до TotalNumOlss - 1 включительно. Значение opTid находится в диапазоне от 0 до vps_max_sub_layers_minus1 включительно. Каждая пара выбранных значений opOlsIdx и opTid должна быть такой, чтобы битовый подпоток, являющийся выходным при вызове процесса извлечения битового подпотока, как указано в пункте C.6, с целыми потоками битов, opOlsIdx и opTid в качестве входных данных, удовлетворял следующим условиям:1. The test operating point, designated targetOp, is selected by selecting the target OLS with the OLS index opOlsIdx and the highest OpTid TemporalId value. The opOlsIdx value ranges from 0 to TotalNumOlss - 1, inclusive. The opTid value ranges from 0 to vps_max_sub_layers_minus1 inclusive. Each pair of selected values of opOlsIdx and opTid shall be such that the subbitstream output of a call to the subbitstream extraction process as specified in clause C.6, with the entire bitstreams, opOlsIdx and opTid as input, satisfies the following conditions:

- Существует по меньшей мере одна единица NAL VCL с nuh_layer_id, равным каждому из значений nuh_layer_id в LayerIdInOls[opOlsIdx] в BitstreamToDecode.- There is at least one VCL NAL unit with nuh_layer_id equal to each of the nuh_layer_id values in LayerIdInOls[opOlsIdx] in BitstreamToDecode.

- Существует по меньшей мере одна единица NAL VCL с TemporalId, равным opTid в BitstreamToDecode.- There is at least one VCL NAL unit with TemporalId equal to opTid in BitstreamToDecode.

2. Если слои в targetOp включают в себя все слои в fullBitstream, и opTid больше, чем самое высокое значение TemporalId среди всех единиц NAL в fullBitstream, BitstreamToDecode устанавливается равным totalBitstream. В противном случае BitstreamToDecode устанавливается в качестве выходных данных путем вызова процесса извлечения битового подпотока, как указано в пункте C.6 с entireBitstream, opOlsIdx и opTid в качестве входных данных.2. If the layers in targetOp include all layers in fullBitstream, and opTid is greater than the highest TemporalId among all NAL units in fullBitstream, BitstreamToDecode is set to totalBitstream. Otherwise, BitstreamToDecode is set as the output by calling the bitstream extraction process as specified in clause C.6 with the entireBitstream, opOlsIdx, and opTid as input.

3. Значения TargetOlsIdx и Htid устанавливаются равными opOlsIdx и opTid, соответственно, для targetOp.3. The TargetOlsIdx and Htid values are set to opOlsIdx and opTid, respectively, for targetOp.

4. Выбирается значение ScIdx. Выбранное значение ScIdx должно находиться в диапазоне от 0 до hrd_cpb_cnt_minus1 включительно.4. ScIdx value is selected. The selected ScIdx value must be in the range from 0 to hrd_cpb_cnt_minus1 inclusive.

5. Единица доступа в параметре BitstreamToDecode, ассоциированном с SEI-сообщениями периода буферизации (присутствующими в TargetLayerBitstream или доступными через внешнее средство, не указанное в данном описании), применимыми к TargetOlsIdx, выбирается в качестве точки инициализации HRD и упоминается как единица 0 доступа для каждого слоя в целевом OLS.5. The access unit in the BitstreamToDecode parameter associated with the buffer period SEI messages (either present in the TargetLayerBitstream or accessible through an external means not specified herein) applicable to the TargetOlsIdx is selected as the HRD initialization point and is referred to as access unit 0 for each layer in the target OLS.

6. Синтаксическая структура ols_hrd_parameters() и синтаксическая структура sub_layer_hrd_parameters(), применяемые к BitstreamToDecode, выбираются следующим образом:6. The ols_hrd_parameters() syntax structure and the sub_layer_hrd_parameters() syntax structure applied to BitstreamToDecode are selected as follows:

- Выбирается синтаксическая структура ols_hrd_idx[TargetOlsIdx]-th ols_hrd_parameters() в VPS (или предоставляется внешним средством, не указанным в данном описании).- The syntax structure ols_hrd_idx[TargetOlsIdx]-th ols_hrd_parameters() is selected in the VPS (or provided by an external tool not specified in this description).

- В выбранной синтаксической структуре ols_hrd_parameters( ), если BitstreamToDecode является битовым потоком типа I, выбирается синтаксическая структура sub_layer_hrd_parameters( Htid ), которая сразу следует за условием «if( general_vcl_hrd_params_present_flag )», и переменная NalHrdModeFlag устанавливается равной 0; в противном случае (когда BitstreamToDecode является битовым потоком типа II) синтаксическая структура sub_layer_hrd_parameters( Htid ), которая сразу следует либо за условием «if( general_vcl_hrd_params_present_flag )» (в этом случае переменная NalHrdModeFlag устанавливается равной 0), либо за условием «if( general_nal_hrd_params_present_flag )" (в этом случае переменная NalHrdModeFlag устанавливается равной 1). Когда BitstreamToDecode является битовым потоком типа II, и флаг NalHrdModeFlag равен 0, все единицы NAL без VCL, за исключением единиц NAL данных-заполнителей, и все синтаксические элементы leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes и trailing_zero_8bits, которые образуют байтовый поток из потока единиц NAL (как указано в приложении B), если они присутствуют, отбрасываются из BitstreamToDecode, и оставшийся битовый поток назначается параметру BitstreamToDecode.- In the selected syntax structure ols_hrd_parameters( ), if BitstreamToDecode is a type I bitstream, the syntax structure sub_layer_hrd_parameters( Htid ) is selected, which immediately follows the condition "if( general_vcl_hrd_params_present_flag )", and the variable NalHrdModeFlag is set to 0; otherwise (when BitstreamToDecode is a Type II bitstream), the syntax structure is sub_layer_hrd_parameters( Htid ), which immediately follows either the "if( general_vcl_hrd_params_present_flag )" condition (in which case the variable NalHrdModeFlag is set to 0) or the "if( general_nal_hrd_params_present_flag )" condition. " (in this case, the NalHrdModeFlag variable is set to 1). When BitstreamToDecode is a Type II bitstream and the NalHrdModeFlag flag is 0, all non-VCL NAL units except filler data NAL units, and all syntax elements leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes, and trailing_zero_8bits that form a byte stream from the stream of NAL units (as specified in Appendix B), if present, are discarded from BitstreamToDecode and the remaining bitstream is assigned to the BitstreamToDecode parameter.

7. Когда флаг decoding_unit_hrd_params_present_flag равен 1, CPB планируется работать либо на уровне единицы доступа (в этом случае переменная DecodingUnitHrdFlag устанавливается равной 0), либо на уровне единицы декодирования (в этом случае переменная DecodingUnitHrdFlag устанавливается равной 1). В противном случае флаг DecodingUnitHrdFlag устанавливается равным 0, и CPB планируется работать на уровне единицы доступа.7. When the decoding_unit_hrd_params_present_flag flag is 1, the CPB is scheduled to operate either at the access unit level (in which case the DecodingUnitHrdFlag variable is set to 0) or at the decoding unit level (in which case the DecodingUnitHrdFlag variable is set to 1). Otherwise, the DecodingUnitHrdFlag flag is set to 0 and the CPB is scheduled to operate at the access unit level.

8. Для каждой единицы доступа в BitstreamToDecode, начиная с единицы 0 доступа, выбирается SEI-сообщение периода буферизации (присутствующее в BitstreamToDecode или доступное через внешнее средство, не указанное), которое ассоциируется с единицей доступа и применяется к TargetOlsIdx, выбирается SEI-сообщение синхронизации изображения (присутствующее в BitstreamToDecode или доступное через внешнее средство, не указанное в данном описании), которое ассоциируется с единицей доступа и применяется к TargetOlsIdx, и, когда флаг DecodingUnitHrdFlag равен 1, и флаг decoding_unit_cpb_params_in_pic_timing_sei_flag равен 0, выбираются SEI-сообщения информации единицы декодирования (присутствующие в BitstreamToDecode или доступные через внешние средства, не указанные в данном описании), которые ассоциируются с единицами декодирования в единице доступа и применяются к TargetOlsIdx.8. For each access unit in BitstreamToDecode, starting with access unit 0, a buffer period SEI message (either present in BitstreamToDecode or accessible through an external means not specified) is selected that is associated with the access unit and applied to TargetOlsIdx, a synchronization SEI message is selected image (present in BitstreamToDecode or accessible through an external means not specified herein) that is associated with the access unit and applied to the TargetOlsIdx, and when the DecodingUnitHrdFlag flag is 1 and the decoding_unit_cpb_params_in_pic_timing_sei_flag is 0, the decoding unit information SEI messages ( present in BitstreamToDecode or accessible through external means not specified herein) that are associated with decoding units in an access unit and applied to TargetOlsIdx.

Каждый тест на соответствие состоит из комбинации одного варианта на каждом из вышеперечисленных этапов. Когда для этапа существует более одного варианта, для любого конкретного теста на соответствие выбирается только один вариант. Все возможные комбинации всех этапов образуют полный набор тестов на соответствие. Для каждой тестируемой рабочей точки количество выполняемых тестов на соответствие битового потока равно n0 * n1 * n2 * n3, где значения n0, n1, n2 и n3 заданы следующим образом:Each matching test consists of a combination of one option in each of the above steps. When more than one option exists for a step, only one option is selected for any given compliance test. All possible combinations of all stages form a complete set of compliance tests. For each operating point tested, the number of bitstream compliance tests performed is n0 * n1 * n2 * n3, where the values of n0, n1, n2 and n3 are given as follows:

- n1 равно hrd_cpb_cnt_minus1 + 1.- n1 is equal to hrd_cpb_cnt_minus1 + 1.

- n1 представляет собой количество единиц доступа в BitstreamToDecode, которые ассоциируются с SEI-сообщениями периода буферизации.- n1 represents the number of access units in BitstreamToDecode that are associated with buffer period SEI messages.

- n2 получают следующим образом:- n2 is obtained as follows:

- Если BitstreamToDecode является битовым потоком Типа I, n0 равно 1.- If BitstreamToDecode is a Type I bitstream, n0 is 1.

- В противном случае (когда BitstreamToDecode является битовым потоком типа II) n0 равно 2.- Otherwise (when BitstreamToDecode is a Type II bitstream) n0 is 2.

- n3 получают следующим образом:- n3 is obtained as follows:

- Если флаг decoding_unit_hrd_params_present_flag равен 0, n3 равно 1.- If the decoding_unit_hrd_params_present_flag is 0, n3 is 1.

- В противном случае n3 равно 2.- Otherwise n3 is equal to 2.

HRD содержит экстрактор битового потока (в качестве варианта присутствует), буфер кодированный изображений (CPB), процесс мгновенного декодирования, буфер декодированный изображений (DPB), который концептуально содержит под-DPB для каждого слоя, и кадрирование на выходе.The HRD contains a bitstream extractor (optional), a coded picture buffer (CPB), a flash decoding process, a decoded picture buffer (DPB), which conceptually contains a sub-DPB for each layer, and an output crop.

Для каждого теста на соответствие битового потока размер CPB (число битов) равен CpbSize[ Htid ][ ScIdx ], как указано в пункте 7.4.5.2, где ScIdx и параметры HRD указаны выше в этом пункте, и параметры DPB max_dec_pic_buffering_minus1 [ Htid ], max_num_reorder_pics[ Htid ] и MaxLatencyPictures[ Htid ] для каждого слоя находятся в синтаксической структуре dpb_parameters() или получаются из нее, которая применяется к слою в зависимости от того, является ли слой независимым слоем, и является ли слой выходным слоем целевого OLS.For each bitstream matching test, the CPB size (number of bits) is equal to CpbSize[ Htid ][ ScIdx ] as specified in clause 7.4.5.2, where ScIdx and HRD parameters are specified above in this clause, and DPB parameters max_dec_pic_buffering_minus1 [ Htid ], max_num_reorder_pics The [ Htid ] and MaxLatencyPictures[ Htid ] for each layer are found in or derived from the dpb_parameters() syntax structure, which is applied to the layer depending on whether the layer is an independent layer and whether the layer is the output layer of the target OLS.

HRD работает следующим образом.HRD works as follows.

- HRD инициализируется в блоке декодирования 0, причем как CPB, так и каждый под-DPB в DPB устанавливаются пустыми (заполнение под-DPB для каждого под-DPB установлено равным 0).- The HRD is initialized at decode block 0, with both the CPB and each sub-DPB in the DPB set to empty (the sub-DPB padding for each sub-DPB is set to 0).

Примечание: После инициализации HRD не инициализируется снова последующими SEI-сообщениями периода буферизации.Note: Once initialized, the HRD is not reinitialized by subsequent buffer period SEI messages.

- Данные, ассоциированные с единицами декодирования, которые поступают в каждый CPB в соответствии с заданным графиком поступления, доставляются гипотетическим планировщиком потоков (HSS).- Data associated with decoding units that arrive at each CPB according to a given arrival schedule are delivered by a hypothetical stream scheduler (HSS).

- Данные, ассоциированные с каждой единицей декодирования, удаляются и декодируются мгновенно в процессе мгновенного декодирования во время удаления CPB единицы декодирования.- The data associated with each decoding unit is removed and decoded instantly in the instantaneous decoding process at the time the CPB of the decoding unit is deleted.

- Каждое декодированное изображение помещается в DPB.- Each decoded image is placed in DPB.

- Декодированное изображение удаляется из DPB, когда оно больше не требуется для ссылки на межкадровое предсказание и больше не требуется для вывода.- The decoded picture is removed from the DPB when it is no longer required for inter-prediction reference and is no longer required for output.

Выполняется работа буфера декодированных изображений.The decoded image buffer is running.

Спецификации в этом разделе применяются независимым образом к каждому набору параметров буфера декодированных изображений (DPB), выбранных, как указано в пункте C.1.The specifications in this section apply independently to each set of decoded picture buffer (DPB) parameters selected as specified in clause C.1.

Буфер декодированных изображений концептуально состоит из под-DPB, и каждый под-DPB содержит буферы хранения изображений для хранения декодированных изображений одного слоя. Каждый из буферов хранения изображений может содержать декодированное изображение, которое помечено как «используемое для ссылки» или сохранено для будущего вывода. Процессы, указанные в пунктах C3.2, C3.3 и C3.4, применяются последовательно, как указано ниже, и применяются независимо для каждого слоя, начиная с самого нижнего слоя в OLS, в порядке возрастания значений nuh_layer_id слоев в OLS. Когда эти процессы применяются для конкретного слоя, затрагивается только под-DPB для конкретного слоя. В описаниях этих процессов DPB относится к под-DPB для конкретного слоя, и конкретный слой упоминается как текущий слой.The decoded image buffer is conceptually composed of sub-DPBs, and each sub-DPB contains image storage buffers for storing decoded images of one layer. Each of the image storage buffers may contain a decoded image that is marked as "used for reference" or stored for future output. The processes specified in clauses C3.2, C3.3 and C3.4 are applied sequentially as follows and are applied independently for each layer, starting with the lowest layer in the OLS, in ascending order of the nuh_layer_id values of the layers in the OLS. When these processes are applied to a specific layer, only the sub-DPB for the specific layer is affected. In descriptions of these processes, DPB refers to the sub-DPB for a particular layer, and the particular layer is referred to as the current layer.

Примечание: В операции синхронизации на выходе DPB декодированные изображения с PicOutputFlag, равным 1, в одной и той же единице доступа выводятся последовательно в порядке возрастания значений nuh_layer_id декодированных изображений.Note: In the DPB output synchronization operation, decoded pictures with PicOutputFlag equal to 1 in the same access unit are output sequentially in ascending order of the nuh_layer_id values of the decoded pictures.

Пусть изображение n и текущее изображение будут кодированным изображением или декодированным изображением единицы n доступа для конкретного значения nuh_layer_id, где n - неотрицательное целое число.Let image n and the current image be the encoded image or decoded image of access unit n for a particular nuh_layer_id value, where n is a non-negative integer.

Ниже описывается удаление изображений из DPB перед декодированием текущего изображения.The following describes how to remove images from the DPB before decoding the current image.

Удаление изображений из DPB до декодирования текущего изображения (но после синтаксического анализа заголовка среза первого среза текущего изображения) происходит мгновенно во время удаления CPB первой единицы декодирования единицы n доступа (содержащей текущее изображение) и выполняется следующим образом:Removing pictures from the DPB before decoding the current picture (but after parsing the slice header of the first slice of the current picture) occurs instantly during CPB removal of the first decoding unit of access unit n (containing the current picture) and is done as follows:

- Процесс декодирования запускается для составления списка опорных изображений, как указано в пункте 8.3.2, и процесс декодирования запускается для маркировки опорных изображений, как указано в пункте 8.3.3.- The decoding process is started to list the reference pictures as specified in clause 8.3.2, and the decoding process is started to mark the reference pictures as specified in clause 8.3.3.

- Когда текущая AU является AU CVSS, которая не является AU 0, применяются следующие упорядоченные этапы:- When the current AU is a CVSS AU that is not AU 0, the following ordered steps apply:

1. Переменная NoOutputOfPriorPicsFlag получается для тестируемого декодера следующим образом:1. The NoOutputOfPriorPicsFlag variable is obtained for the decoder under test as follows:

- Если значение pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 или max_dec_pic__minus1 [Htid], полученное для любого изображения в текущей AU, отличается от значений pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, separate_colour_plane_, bit_depth_luma_minus8, bit_depth_chrom a_minus8 или max_dec_pic_buffering_minus1[ Htid ], , полученных, соответственно, для предыдущего изображения в одной той же CLVS, флаг NoOutputOfPriorPicsFlag может (но не должен) быть установлен тестируемым декодером на 1, независимо от значения no_output_of_prior_pics_flag.- If the pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 or max_dec_pic__minus1 [Htid] value obtained for any image in the current AU differs from the pic_width_in_luma_samples values, height_in_luma_samples, chroma_format_idc, separate_colour_plane_, bit_depth_luma_minus8, bit_depth_chrom a_minus8 or max_dec_pic_buffering_minus1[ Htid ], , obtained respectively for the previous image in the same CLVS, the NoOutputOfPriorPicsFlag flag may (but should not) be set by the decoder under test to 1, regardless of the value of no_output_of_prior_pics_flag.

Примечание: Хотя установка NoOutputOfPriorPicsFlag, равного no_output_of_prior_pics_flag, в этих условиях является предпочтительной, в этом случае тестируемому декодеру разрешается устанавливать NoOutputOfPriorPicsFlag в 1.Note: Although setting NoOutputOfPriorPicsFlag equal to no_output_of_prior_pics_flag is preferred under these conditions, the decoder under test is allowed to set NoOutputOfPriorPicsFlag to 1 in this case.

- В противном случае NoOutputOfPriorPicsFlag устанавливается равным no_output_of_prior_pics_flag.- Otherwise, NoOutputOfPriorPicsFlag is set to no_output_of_prior_pics_flag.

2. Значение NoOutputOfPriorPicsFlag, полученное для тестируемого декодера, применяется для HRD, поэтому, когда значение NoOutputOfPriorPicsFlag равно 1, все буферы хранения изображений в DPB очищаются без вывода содержащихся в них изображений, и заполненность DPB устанавливается равной 0.2. The NoOutputOfPriorPicsFlag value obtained for the decoder under test is applied to the HRD, so when the NoOutputOfPriorPicsFlag value is 1, all image storage buffers in the DPB are cleared without outputting the images they contain, and the DPB occupancy is set to 0.

- Когда для любых изображений k в DPB выполняются оба следующих условия, все такие изображения k в DPB удаляются из DPB:- When both of the following conditions are met for any k images in the DPB, all such k images in the DPB are removed from the DPB:

- изображение k помечается как «неиспользуемое для ссылки».- image k is marked as "not used for reference".

- изображение k имеет флаг PictureOutputFlag, равный 0, или время его вывода DPB меньше или равно времени удаления CPB первой единицы декодирования (обозначенной как единица m декодирования) текущего изображения n; то есть DpbOutputTime[ k ] меньше или равно DuCpbRemovalTime[ m ].- picture k has a PictureOutputFlag equal to 0, or its DPB output time is less than or equal to the CPB removal time of the first decoding unit (denoted as decoding unit m) of the current picture n; that is, DpbOutputTime[ k ] is less than or equal to DuCpbRemovalTime[ m ].

- Для каждого изображения, которое удаляется из DPB, заполнение DPB уменьшается на единицу.- For each image that is removed from the DPB, the DPB padding is reduced by one.

Ниже приводится описание работы DPB в порядке вывода.Below is a description of the operation of DPB in order of output.

Спецификации в этом пункте применяются независимым образом к каждому набору параметров буфера декодированных изображений (DPB), выбранных, как указано в пункте C.1.The specifications in this clause apply independently to each set of decoded picture buffer (DPB) parameters selected as specified in clause C.1.

Буфер декодированных изображений концептуально состоит из подблоков DPB, и каждый подблок DPB содержит буферы хранения изображений для хранения декодированных изображений одного слоя. Каждый из буферов хранения изображений содержит декодированное изображение, помеченное как «используемое для справки» или сохраненное для будущего вывода.The decoded image buffer is conceptually composed of DPB sub-blocks, and each DPB sub-block contains image storage buffers for storing decoded images of one layer. Each of the image storage buffers contains a decoded image, marked as "used for reference" or saved for future output.

Процесс вывода и удаления изображений из DPB инициируется перед декодированием текущего изображения, как указано в пункте C.5.2.2, с последующим вызовом процесса маркировки и сохранения текущего декодированного изображения, как указано в пункте C.3.4, и, наконец, с последующим вызовом процесса дополнительного выталкивания, как указано в пункте C.5.2.3. Процесс «выталкивания» указан в пункте C.5.2.4 и инициируется таким образом, как указано в пунктах C.5.2.2 и C.5.2.3.The process of outputting and removing pictures from the DPB is initiated before decoding the current picture as specified in clause C.5.2.2, followed by the process of marking and storing the current decoded picture as specified in clause C.3.4, and finally by calling the process additional ejection as specified in paragraph C.5.2.3. The "push" process is specified in clause C.5.2.4 and is initiated as specified in clauses C.5.2.2 and C.5.2.3.

Эти процессы применяются независимым образом для каждого слоя, начиная с нижнего слоя в OLS, в порядке возрастания значений nuh_layer_id слоев в OLS. Когда эти процессы применяются для конкретного слоя, затрагивается только под-DPB для конкретного слоя.These processes are applied independently for each layer, starting with the bottom layer in OLS, in ascending order of the nuh_layer_id values of the layers in OLS. When these processes are applied to a specific layer, only the sub-DPB for the specific layer is affected.

Примечание: В операции DPB очередности вывода, так же, как и в операции DPB синхронизации вывода, декодированные изображения с PicOutputFlag, равным 1, в одной той же единице доступа также выводятся последовательно в порядке возрастания значений nuh_layer_id декодированных изображений.Note: In the output queuing DPB operation, as well as in the output synchronization DPB operation, decoded pictures with PicOutputFlag equal to 1 in the same access unit are also output sequentially in ascending order of the nuh_layer_id values of the decoded pictures.

Пусть изображение n и текущее изображение будут кодированным изображением или декодированным изображением единицы n доступа для конкретного значения nuh_layer_id, где n - неотрицательное целое число.Let image n and the current image be the encoded image or decoded image of access unit n for a particular nuh_layer_id value, where n is a non-negative integer.

Ниже описывается вывод и удаление изображений из DPB.The following describes how to output and delete images from DPB.

Вывод и удаление изображений из DPB перед декодированием текущего изображения (но после синтаксического анализа заголовка среза первого среза текущего изображения) происходит мгновенно тогда, когда первая единица декодирования единицы доступа, содержащей текущее изображение, удаляется из DPB и действует следующим образом:The output and removal of pictures from the DPB before decoding the current picture (but after parsing the slice header of the first slice of the current picture) occurs instantly when the first decoding unit of the access unit containing the current picture is removed from the DPB and acts as follows:

- Инициируются процесс декодирования для составления списка опорных изображений, как указано в пункте 8.3.2, и процесс декодирования для маркировки опорных изображений, как указано в пункте 8.3.3.- The decoding process for listing the reference pictures as specified in clause 8.3.2 and the decoding process for marking the reference pictures as specified in clause 8.3.3 are initiated.

- Если текущая AU представляет собой AU CVSS, которая не является AU0, применяются следующие упорядоченные этапы:- If the current AU is a CVSS AU that is not AU0, the following ordered steps apply:

1. Переменная NoOutputOfPriorPicsFlag получается для тестируемого декодера следующим образом:1. The NoOutputOfPriorPicsFlag variable is obtained for the decoder under test as follows:

- Если значение pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 или max_dec_pic__minus1 [Htid], полученное для любого изображения текущей AU, отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, separate_colour_plane, bit_depth_luma_minus8, bit_depth_chroma_minus8 или max_dec_pic_buffering_[ Htid ], полученного, соответственно, для предыдущего изображения в одной и той же CLVS, NoOutputOfPriorPicsFlag может (но не должен) быть установлен тестируемым декодером на 1, независимо от значения no_output_of_prior_pics_flag.- If the pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 or max_dec_pic__minus1 [Htid] value obtained for any image of the current AU differs from the pic_width_in_luma_samples value, ight_in_luma_samples, chroma_format_idc, separate_colour_plane, bit_depth_luma_minus8, bit_depth_chroma_minus8 or max_dec_pic_buffering_[ Htid ] obtained, respectively , for a previous picture in the same CLVS, NoOutputOfPriorPicsFlag may (but should not) be set by the decoder under test to 1, regardless of the value of no_output_of_prior_pics_flag.

Примечание: Хотя установка флага NoOutputOfPriorPicsFlag, равного no_output_of_prior_pics_flag, при этих условиях является предпочтительной, в этом случае тестируемому декодеру разрешено устанавливать NoOutputOfPriorPicsFlag на 1.Note: Although setting the NoOutputOfPriorPicsFlag to no_output_of_prior_pics_flag is preferable under these conditions, the decoder under test is allowed to set NoOutputOfPriorPicsFlag to 1 in this case.

- В противном случае NoOutputOfPriorPicsFlag устанавливается равным no_output_of_prior_pics_flag.- Otherwise, NoOutputOfPriorPicsFlag is set to no_output_of_prior_pics_flag.

2. Значение NoOutputOfPriorPicsFlag, полученное для тестируемого декодера, применяется для HRD следующим образом:2. The NoOutputOfPriorPicsFlag value obtained for the decoder under test is applied to the HRD as follows:

- Если флаг NoOutputOfPriorPicsFlag равен 1, все буферы хранения изображений в DPB очищаются без вывода содержащихся в них изображений, и заполнение DPB устанавливается равным 0.- If the NoOutputOfPriorPicsFlag flag is 1, all image storage buffers in the DPB are cleared without outputting the images they contain, and the DPB padding is set to 0.

- В противном случае (когда значение NoOutputOfPriorPicsFlag равно 0) все буферы хранения изображений, содержащие изображение, которое помечено как «не нужное для вывода» и «не используется для ссылки», очищаются (без вывода), и все очищенные буферы хранения изображений в DPB очищаются путем многократного вызова процесса «выталкивания», указанного в пункте C.5.2.4, и заполнение DPB устанавливается равным 0.- Otherwise (when the value of NoOutputOfPriorPicsFlag is 0), all image storage buffers containing an image that is marked as "not needed for output" and "not used for reference" are flushed (no output), and all image storage buffers in the DPB are flushed are cleared by repeatedly calling the "push" process specified in clause C.5.2.4, and the DPB padding is set to 0.

- В противном случае (когда текущее изображение не является изображением CLVSS) все буферы хранения изображений, содержащие изображение, которое помечено как «не нужное для вывода» и «не используется для ссылки», очищаются (без вывода). Для каждого очищенного буфера хранения изображений значение заполнения DPB уменьшается на единицу. Когда одно или более из следующих условий истинны, повторно вызывается процесс «выталкивания», указанный в пункте C.5.2.4, при дальнейшем уменьшении заполнения DPB на единицу для каждого дополнительного буфера хранения изображений, который очищается, до тех пор, пока не будет выполнено одно из следующих условий:- Otherwise (when the current image is not a CLVSS image), all image storage buffers containing an image that is marked as "not needed for output" and "not used for reference" are cleared (without output). For each image storage buffer cleared, the DPB fill value is decreased by one. When one or more of the following conditions are true, the "push" process specified in clause C.5.2.4 is re-invoked, further reducing the DPB fill by one for each additional image storage buffer that is flushed, until the one of the following conditions:

Количество изображений в DPB, которые помечены как «необходимые для вывода», больше, чем max_num_reorder_pics[ Htid ].The number of images in the DPB that are marked as "required for output" is greater than max_num_reorder_pics[ Htid ].

Значение max_latency_increase_plus1[ Htid ] не равно 0, и в DPB имеется по меньшей мере одно изображение, помеченное как «необходимое для вывода», для которого ассоциированная переменная PicLatencyCount больше или равна MaxLatencyPictures[ Htid ].The value of max_latency_increase_plus1[ Htid ] is not equal to 0, and there is at least one image in the DPB that is marked as "required for output" for which the associated PicLatencyCount variable is greater than or equal to MaxLatencyPictures[ Htid ].

Количество изображений в DPB больше или равно max_dec_pic_buffering_minus1[Htid] + 1.The number of images in DPB is greater than or equal to max_dec_pic_buffering_minus1[Htid] + 1.

Ниже приведено дополнительное описание процесса выталкивания.Below is a further description of the ejection process.

Процессы, указанные в этом разделе, происходят мгновенно тогда, когда последняя единица декодирования из единицы n доступа, содержащей текущее изображение, удаляется из CPB.The processes specified in this section occur instantly when the last decoding unit from access unit n containing the current picture is removed from the CPB.

Когда текущее изображение имеет флаг PictureOutputFlag, равный 1, для каждого изображения в DPB, которое помечено как «необходимое для вывода» и следует за текущим изображением в порядке вывода, ассоциированная переменная PicLatencyCount устанавливается равной PicLatencyCount + 1.When the current image has a PictureOutputFlag equal to 1, for each image in the DPB that is marked as "needed for output" and follows the current image in output order, the associated PicLatencyCount variable is set to PicLatencyCount + 1.

Применяется следующее:The following applies:

- Если текущее декодированное изображение имеет флаг PictureOutputFlag, равный 1, оно помечается как «необходимое для вывода», и ассоциированная с ним переменная PicLatencyCount устанавливается равной 0.- If the currently decoded picture has a PictureOutputFlag of 1, it is marked as "needed for output" and its associated PicLatencyCount variable is set to 0.

- В противном случае (когда текущее декодированное изображение имеет значение PictureOutputFlag, равное 0) оно помечается как «не нужное для вывода».- Otherwise (when the currently decoded picture has a PictureOutputFlag value of 0) it is marked as “not needed for output”.

Когда одно или более из следующих условий истинны, процесс «выталкивания», указанный в пункте C.5.2.4, вызывается повторно до тех пор, пока не будет выполнено одно из следующих условий:When one or more of the following conditions are true, the "push" process specified in clause C.5.2.4 is called repeatedly until one of the following conditions is met:

- Количество изображений в DPB, помеченных как «необходимые для вывода», больше, чем max_num_reorder_pics[ Htid ].- The number of images in DPB marked as "required for output" is greater than max_num_reorder_pics[ Htid ].

- max_latency_increase_plus1[ Htid ] не равно 0 и в DPB есть хотя бы одно изображение, помеченное как «необходимое для вывода», для которого ассоциированная с ним переменная PicLatencyCount больше или равна MaxLatencyPictures[ Htid ].- max_latency_increase_plus1[ Htid ] is not equal to 0 and the DPB has at least one image marked as "needed for output" for which its associated PicLatencyCount variable is greater than or equal to MaxLatencyPictures[ Htid ].

Ниже приводится описание процесса выталкивания.Below is a description of the ejection process.

Процесс «выталкивания» состоит из следующих упорядоченных этапов:The “pushing” process consists of the following ordered steps:

Изображение или изображения, которые выводятся первыми, выбираются как имеющие наименьшее значение PicOrderCntVal из всех изображений в DPB, помеченных как «необходимые для вывода».The image or images that are output first are selected as having the lowest PicOrderCntVal value of all the images in the DPB that are marked as "required for output".

Каждое из этих изображений, в порядке возрастания nuh_layer_id, кадрируется с использованием окна кадрирования, обеспечивающего соответствие, для изображения, кадрированное изображение выводится, и изображение помечается как «не нужное для вывода».Each of these images, in ascending order by nuh_layer_id, is cropped using a matching crop window for the image, the cropped image is output, and the image is marked as “not needed for output.”

Каждый буфер хранения изображений, который содержит изображение, помеченное как «неиспользуемое для ссылки», и которое было одним из кадрированных и выведенных изображений, очищается, и заполненность ассоциированного под-DPB уменьшается на единицу.Each image storage buffer that contains an image marked as "not used for reference" and which was one of the cropped and output images is cleared and the occupancy of the associated sub-DPB is reduced by one.

Примечание: Для любых двух изображений picA и picB, которые принадлежат к одной и той же CVS и выводятся в «процессе выталкивания», когда picA получается раньше, чем picB, значение PicOrderCntVal для picA меньше значения PicOrderCntVal для picB.Note: For any two images picA and picB that belong to the same CVS and are output in a "push process" when picA is produced before picB, the PicOrderCntVal value of picA is less than the PicOrderCntVal value of picB.

Процесс извлечения битового подпотока выглядит следующим образом.The process of extracting a bit stream is as follows.

Входными данными этого процесса являются битовый поток inBitstream, целевой индекс OLS targetOlsIdx и целевое наибольшее значение TemporalId tIdTarget.The inputs to this process are the bitstream inBitstream, the target OLS index targetOlsIdx, and the target largest TemporalId tIdTarget.

Выходными данными этого процесса являются битовый подпоток outBitstream.The output of this process is the outBitstream.

Требование соответствия битового потока для входного битового потока состоит в том, что любой выходной битовый подпоток, являющийся результатом процесса, заданного в этом пункте, с битовым потоком targetOlsIdx, равным индексу списка OLS, заданного VPS, и tIdTarget, равным любому значению в диапазоне от 0 до 7 включительно в качестве входных данных, и который удовлетворяет следующим условиям, должен быть соответствующим битовым потоком.The bitstream matching requirement for an input bitstream is that any output bitstream resulting from the process specified in this clause with a bitstream targetOlsIdx equal to the index of the OLS list specified by the VPS and tIdTarget equal to any value in the range of 0 up to and including 7 as input, and which satisfies the following conditions must be a corresponding bitstream.

- Выходной битовый подпоток содержит по меньшей мере одну единицу NAL VCL с nuh_layer_id, равным каждому из значений nuh_layer_id в LayerIdInOls[ targetOlsIdx ].- The output bitstream contains at least one VCL NAL unit with a nuh_layer_id equal to each of the nuh_layer_id values in LayerIdInOls[ targetOlsIdx ].

- Выходной битовый подпоток содержит по меньшей мере одну единицу NAL VCL с TemporalId, равным tIdTarget.- The output bitstream contains at least one VCL NAL unit with a TemporalId equal to tIdTarget.

Примечание: Соответствующий битовый поток содержит одну или более единиц NAL кодированного среза с TemporalId, равным 0, но не обязательно должен содержать единицы NAL кодированного среза с nuh_layer_id, равным 0.Note: The corresponding bitstream contains one or more coded slice NAL units with TemporalId equal to 0, but need not contain coded slice NAL units with nuh_layer_id equal to 0.

Выходной битовый подпоток OutBitstream получается следующим образом.The output bit stream OutBitstream is obtained as follows.

- Битовый поток outBitstream устанавливается идентичным битовому потоку inBitstream.- The outBitstream bitstream is set to be identical to the inBitstream bitstream.

- Удалить из outBitstream все единицы NAL с TemporalId больше, чем tIdTarget.- Remove from outBitstream all NAL units with a TemporalId greater than tIdTarget.

- Удалить из outBitstream все единицы NAL с nuh_layer_id, не включенные в список LayerIdInOls[ targetOlsIdx ].- Remove from outBitstream all NAL units with nuh_layer_id not included in the LayerIdInOls[ targetOlsIdx ] list.

- Удалить из outBitstream все единицы NAL SEI, которые содержат масштабируемое вкладывающее SEI-сообщение, которое имеет nesting_ols_flag, равный 1, и у которого отсутствует значение i в диапазоне от 0 до nesting_num_olss_minus1 включительно, чтобы NestingOlsIdx[ i ] равнялось targetOlsIdx.- Remove from outBitstream all NAL SEI units that contain a scalable nesting SEI message that has a nesting_ols_flag equal to 1 and that does not have an i value in the range 0 to nesting_num_olss_minus1 inclusive, so that NestingOlsIdx[ i ] equals targetOlsIdx.

- Когда targetOlsIdx больше 0, удалить из outBitstream все единицы NAL SEI, которые содержат немасштабируемое вложенное SEI-сообщение с payloadType, равным 0 (период буферизации), 1 (таймирование изображения) или 130 (информация единицы декодирования).- When targetOlsIdx is greater than 0, remove from outBitstream all NAL SEI units that contain an unscaled embedded SEI message with a payloadType of 0 (buffering period), 1 (image timing), or 130 (decoding unit information).

Синтаксис масштабируемого вкладывающего SEI-сообщения предоставлен следующим образом.The scalable nesting SEI message syntax is provided as follows.

scalable_nesting( payloadSize ) {scalable_nesting( payloadSize ) { ДескрипторDescriptor nesting_ols_flagnesting_ols_flag u(1)u(1) if( nesting_ols_flag ) {if( nesting_ols_flag ) { nesting_num_olss_minus1nesting_num_olss_minus1 ue(v)ue(v) for( i = 0; i <= nesting_num_olss_minus1; i++ )for( i = 0; i <= nesting_num_olss_minus1; i++ ) nesting_ols_idx_delta_minus1[ i ]nesting_ols_idx_delta_minus1[ i ] ue(v)ue(v) } else {} else { nesting_all_layers_flagnesting_all_layers_flag u(1)u(1) if( !nesting_all_layers_flag ) {if( !nesting_all_layers_flag ) { nesting_num_layers_minus1nesting_num_layers_minus1 ue(v)ue(v) for( i = 1; i <= nesting_num_layers_minus1; i++ )for( i = 1; i <= nesting_num_layers_minus1; i++ ) nesting_layer_id[ i ]nesting_layer_id[ i ] u(6)u(6) }} }} nesting_num_seis_minus1nesting_num_seis_minus1 ue(v)ue(v) while( !byte_aligned( ) )while( !byte_aligned() ) nesting_zero_bit /* equal to 0 */nesting_zero_bit /* equal to 0 */ u(1)u(1) for( i = 0; i <= nesting_num_seis_minus1; i++ )for( i = 0; i <= nesting_num_seis_minus1; i++ ) sei_message( )sei_message( ) }}

Примерная общая семантики полезной нагрузки SEI выглядит следующим образом.The approximate general semantics of an SEI payload is as follows.

Следующее применимо к применяемым слоям или OLS немасштабируемых вложенных SEI-сообщений.The following applies to applied layers or OLS of unscaled nested SEI messages.

- Для немасштабируемого вложенного SEI-сообщения, когда payloadType равно нулю (период буферизации), единице (таймирование изображения) или 130 (информация единицы декодирования), немасштабируемое вложенное SEI-сообщение применяется только к 0-й OLS.- For a non-scalable embedded SEI message, when payloadType is zero (buffering period), one (picture timing) or 130 (decoding unit information), the non-scaled embedded SEI message applies only to the 0th OLS.

- Для немасштабируемого вложенного SEI-сообщения, когда payloadType равно любому значению среди VclAssociatedSeiList, немасштабируемое вложенное SEI-сообщение применяется только к слою, для которого единицы NAL VCL имеют nuh_layer_id, равный nuh_layer_id единицы NAL SEI, содержащей SEI-сообщение.- For a non-scaled nested SEI message, when payloadType is equal to any value among the VclAssociatedSeiList, the non-scaled nested SEI message applies only to the layer for which the VCL NAL units have a nuh_layer_id equal to the nuh_layer_id of the NAL SEI unit containing the SEI message.

Требование соответствия битового потока состоит в том, что для значения nuh_layer_id блоков SEI NAL применяются следующие ограничения:The bitstream compliance requirement is that the following restrictions apply to the nuh_layer_id value of SEI NAL blocks:

- Когда немасштабируемое вложенное SEI-сообщение имеет значение payloadType, равное 0 (период буферизации), 1 (таймирование изображения) или 130 (информация единицы декодирования), единица NAL SEI, содержащая немасштабируемое вложенное SEI-сообщение nuh_layer_id, должна быть равна vps_layer_id[ 0 ].- When a non-scaleable nested SEI message has a payloadType value of 0 (buffering period), 1 (picture timing) or 130 (decoding unit information), the NAL SEI unit containing the non-scaleable nested SEI message nuh_layer_id shall be equal to vps_layer_id[ 0 ] .

- Когда немасштабируемое вложенное SEI-сообщение имеет значение payloadType, равное любому значению из списка VclAssociatedSeiList, единица NAL SEI, содержащая немасштабируемое вложенное SEI-сообщение, должна иметь nuh_layer_id, равный значению nuh_layer_id единицы NAL VCL, ассоциированной с единицей NAL SEI.- When a non-scalable nested SEI message has a payloadType equal to any value in the VclAssociatedSeiList, the NAL SEI unit containing the non-scalable nested SEI message shall have a nuh_layer_id equal to the nuh_layer_id value of the VCL NAL unit associated with the NAL SEI unit.

- Единица NAL SEI, содержащая масштабируемое вкладывающее SEI-сообщение, должна иметь nuh_layer_id, равный наименьшему значению nuh_layer_id из всех слоев, к которым применяется масштабируемое вложенное SEI-сообщение (когда флаг nesting_ols_flag масштабируемого вкладывающего SEI-сообщения равен 0), или наименьшему значению nuh_layer_id из всех слоев в OLS, к которым применяется масштабируемое вложенное SEI-сообщение (когда флаг nesting_ols_flag масштабируемого вкладывающего SEI-сообщения равен 1).- A NAL SEI unit containing a scalable nesting SEI message shall have a nuh_layer_id equal to the smallest nuh_layer_id value of all layers to which the scalable nesting SEI message applies (when the nesting_ols_flag of the scalable nesting SEI message is 0), or the smallest nuh_layer_id value of all layers in the OLS to which the scalable nested SEI message is applied (when the nesting_ols_flag of the scalable nested SEI message is 1).

Предусмотрена семантика масштабируемого вкладывающего SEI-сообщения.Scalable nesting SEI message semantics are provided.

Масштабируемое вкладывающее SEI-сообщение обеспечивает механизм для ассоциирования SEI-сообщений с конкретными OLS или с конкретными слоями.The scalable embedding SEI message provides a mechanism for associating SEI messages with specific OLSs or with specific layers.

Масштабируемое вкладывающее SEI-сообщение содержит одно или более SEI-сообщений. SEI-сообщения, содержащиеся в масштабируемом вкладывающем SEI-сообщении, также называются масштабируемыми вложенными SEI-сообщениями.A scalable embedding SEI message contains one or more SEI messages. SEI messages contained in a scalable nested SEI message are also called scalable nested SEI messages.

Требование соответствия битового потока состоит в том, что для содержания SEI-сообщений в масштабируемом вкладывающем SEI-сообщении применяются следующие ограничения:The bitstream compliance requirement is that the following restrictions apply to the content of SEI messages in a scalable nesting SEI message:

- SEI-сообщение с типом полезной нагрузки, равным 132 (хэш декодированного изображения) или 133 (масштабируемое вложение), не должно содержаться в масштабируемом вкладывающем SEI-сообщении.- An SEI message with a payload type of 132 (decoded image hash) or 133 (scalable attachment) shall not be contained in a scalable embedding SEI message.

- Когда масштабируемое вкладывающее SEI-сообщение содержит SEI-сообщение о периоде буферизации, синхронизации изображения или информации единицы декодирования, масштабируемое вкладывающее SEI-сообщение не должно содержать никакого другого SEI-сообщения с payloadType, не равным 0 (период буферизации), 1 (синхронизации изображения) или 130 (информация единицы декодирования).- When a scalable embedding SEI message contains an SEI message about buffering period, image timing, or decoding unit information, the scalable enclosing SEI message shall not contain any other SEI message with payloadType not equal to 0 (buffering period), 1 (image timing ) or 130 (decoding unit information).

Требование соответствия битового потока состоит в том, что для значения nal_unit_type единицы NAL SEI, содержащего масштабируемое вкладывающее SEI-сообщение, применяются следующие ограничения:The bitstream compliance requirement is that the following restrictions apply to the nal_unit_type value of the NAL SEI unit containing the scalable nesting SEI message:

- Когда масштабируемое вкладывающее SEI-сообщение содержит SEI-сообщение, которое имеет значение payloadType, равное 0 (период буферизации), 1 (таймирование изображения), 130 (информация единицы декодирования), 145 (зависимый указатель RAP) или 168 (информация о кадре-поле), единица NAL SEI, содержащая масштабируемое вкладывающее SEI-сообщение, должна иметь nal_unit_type, равный PREFIX_SEI_NUT.- When the scalable embedding SEI message contains an SEI message that has a payloadType value of 0 (buffering period), 1 (picture timing), 130 (decoding unit information), 145 (RAP dependent pointer), or 168 (frame information) field), a NAL SEI unit containing a scalable nesting SEI message shall have a nal_unit_type equal to PREFIX_SEI_NUT.

Значение nesting_ols_flag, равное 1, указывает то, что масштабируемые вложенные SEI-сообщения применяются к конкретным OLS. Значение nesting_ols_flag, равное 0, указывает то, что масштабируемые вложенные SEI-сообщения применяются к конкретным слоям.A nesting_ols_flag value of 1 indicates that scalable nested SEI messages are applied to specific OLSs. A nesting_ols_flag value of 0 indicates that scalable nested SEI messages are applied to specific layers.

Требованием соответствия битового потока являются следующие ограничения, применяемые к значению nesting_ols_flag:The bitstream compliance requirement is that the following restrictions apply to the nesting_ols_flag value:

- Когда масштабируемое вкладывающее SEI-сообщение содержит SEI-сообщение, которое имеет значение payloadType, равное 0 (период буферизации), 1 (таймирование изображения) или 130 (информация единицы декодирования), значение nesting_ols_flag должно быть равно 1.- When a scalable nesting SEI message contains an SEI message that has a payloadType value of 0 (buffering period), 1 (image timing), or 130 (decoding unit information), the value of nesting_ols_flag shall be equal to 1.

- Если масштабируемое вкладывающее SEI-сообщение содержит SEI-сообщение, которое имеет payloadType, равный значению в VclAssociatedSeiList, значение nesting_ols_flag должно быть равно 0.- If a scalable nesting SEI message contains an SEI message that has a payloadType equal to the value in VclAssociatedSeiList, the value of nesting_ols_flag must be 0.

nesting_num_olss_minus1 плюс 1 указывает количество OLS, к которым применяются масштабируемые вложенные SEI-сообщения. Значение nesting_num_olss_minus1 должно находиться в диапазоне от 0 до TotalNumOlss - 1 включительно.nesting_num_olss_minus1 plus 1 specifies the number of OLSs to which scalable nested SEI messages apply. The value of nesting_num_olss_minus1 must be in the range from 0 to TotalNumOlss - 1, inclusive.

nesting_ols_idx_delta_minus1[ i ] используется для получения переменной NestingOlsIdx[ i ], которая указывает индекс OLS i-го OLS, к которому применяются масштабируемые вложенные SEI-сообщения, когда nesting_ols_flag равна 1. Значение nesting_ols_idx_delta_minus1[i ] должно находиться в диапазоне от 0 до TotalNumOlss - 2 включительно.nesting_ols_idx_delta_minus1[ i ] is used to obtain the variable NestingOlsIdx[ i ], which specifies the OLS index of the i-th OLS to which scaled nested SEI messages are applied when nesting_ols_flag is 1. The value of nesting_ols_idx_delta_minus1[i ] must be in the range from 0 to TotalNumOlss - 2 inclusive.

Переменная NestingOlsIdx[ i ] получается следующим образом.The NestingOlsIdx[ i ] variable is obtained as follows.

if( i = = 0 )if( i == 0 )

NestingOlsIdx[ i ] = nesting_ols_idx_delta_minus1[ i ]NestingOlsIdx[ i ] = nesting_ols_idx_delta_minus1[ i ]

elseelse

NestingOlsIdx[ i ] = NestingOlsIdx[ i - 1 ] + nesting_ols_idx_delta_minus1[ i ] + 1NestingOlsIdx[ i ] = NestingOlsIdx[ i - 1 ] + nesting_ols_idx_delta_minus1[ i ] + 1

Значение nesting_all_layers_flag, равное 1, указывает то, что масштабируемые вложенные SEI-сообщения применяются ко всем слоям, у которых nuh_layer_id больше или равен nuh_layer_id текущей единицы NAL SEI. Значение nesting_all_layers_flag, равное 0, указывает то, что масштабируемые вложенные SEI-сообщения могут применяться или не применяться ко всем слоям, у которых nuh_layer_id больше или равен nuh_layer_id текущей единицы NAL SEI.A nesting_all_layers_flag value of 1 indicates that scalable nested SEI messages are applied to all layers that have a nuh_layer_id greater than or equal to the nuh_layer_id of the current NAL SEI unit. A nesting_all_layers_flag value of 0 indicates that scalable nested SEI messages may or may not apply to all layers whose nuh_layer_id is greater than or equal to the nuh_layer_id of the current NAL SEI unit.

nesting_num_layers_minus1 плюс 1 указывает количество слоев, к которым применяются масштабируемые вложенные SEI-сообщения. Значение nesting_num_layers_minus1 должно находиться в диапазоне от 0 до vps_max_layers_minus1 - GeneralLayerIdx[nuh_layer_id] включительно, где nuh_layer_id представляет собой nuh_layer_id текущей единицы NAL SEI.nesting_num_layers_minus1 plus 1 specifies the number of layers to which scalable nested SEI messages are applied. The nesting_num_layers_minus1 value must be in the range 0 to vps_max_layers_minus1 - GeneralLayerIdx[nuh_layer_id] inclusive, where nuh_layer_id is the nuh_layer_id of the current NAL SEI unit.

nesting_layer_id[ i ] указывает значение nuh_layer_id i-го слоя, к которому применяются масштабируемые вложенные SEI-сообщения, когда значение nesting_all_layers_flag равно 0. Значение nesting_layer_id[ i ] должно быть больше, чем nuh_layer_id, где nuh_layer_id представляет собой nuh_layer_id текущей единицы NAL SEI.nesting_layer_id[ i ] specifies the nuh_layer_id value of the ith layer to which scaled nested SEI messages are applied when nesting_all_layers_flag is 0. The nesting_layer_id[ i ] value must be greater than nuh_layer_id, where nuh_layer_id represents the nuh_layer_id of the current NAL SEI unit.

Когда nesting_ols_flag равно 0, переменная NestingNumLayers, указывающая номер слоя, к которому применяются масштабируемые вложенные SEI-сообщения, и список NestingLayerId[ i ] для i в диапазоне от 0 до NestingNumLayers - 1 включительно, задающий список значений nuh_layer_id слоев, к которым применяются масштабируемые вложенные SEI-сообщения, получаются следующим образом, где nuh_layer_id представляет собой nuh_layer_id текущей единицы NAL SEI.When nesting_ols_flag is 0, a NestingNumLayers variable indicating the layer number to which scalable nested SEI messages are applied, and a list of NestingLayerId[ i ] for i ranging from 0 to NestingNumLayers - 1 inclusive, specifying the list of nuh_layer_id values of layers to which scalable nesting is applied SEI messages are obtained as follows, where nuh_layer_id is the nuh_layer_id of the current NAL SEI unit.

if( nesting_all_layers_flag ) {if( nesting_all_layers_flag ) {

NestingNumLayers = NestingNumLayers =

ps_max_layers_minus1 + 1 - GeneralLayerIdx[ nuh_layer_id ] ps_max_layers_minus1 + 1 - GeneralLayerIdx[ nuh_layer_id ]

for( i = 0; i < NestingNumLayers; i ++)for( i = 0; i < NestingNumLayers; i++)

NestingLayerId[ i ] = vps_layer_id[ GeneralLayerIdx[ nuh_layer_id ] + i ]NestingLayerId[ i ] = vps_layer_id[ GeneralLayerIdx[ nuh_layer_id ] + i ]

} else {} else {

NestingNumLayers = nesting_num_layers_minus1 + 1NestingNumLayers = nesting_num_layers_minus1 + 1

for( i = 0; i < NestingNumLayers; i ++)for( i = 0; i < NestingNumLayers; i++)

NestingLayerId[ i ] = ( i = = 0 ) ? nuh_layer_id : nesting_layer_id[ i ]NestingLayerId[ i ] = ( i = = 0 ) ? nuh_layer_id : nesting_layer_id[ i ]

}}

} }

nesting_num_seis_minus1 плюс 1 указывает количество масштабируемых вложенных SEI-сообщений. Значение nesting_num_seis_minus1 должно находиться в диапазоне от 0 до 73 включительно.nesting_num_seis_minus1 plus 1 specifies the number of nested SEI messages to scale. The nesting_num_seis_minus1 value must be in the range 0 to 73, inclusive.

Значение nesting_zero_bit должно быть равно 0.The value of nesting_zero_bit must be 0.

На фиг. 10 показано схематичное представление устройства 1000 для кодирования видео (например, видеокодера 300 или видеодекодера 400) в соответствии с вариантом осуществления настоящего раскрытия. Устройство 1000 для кодирования видео подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. Устройство 1000 для кодирования видео содержит входные порты 1010 и блоки (Rx) 1020 приемника для приема данных; процессор, логический блок или центральный процессор (CPU) 1030 для обработки данных; блоки (Tx) 1040 передатчика и выходные порты 1050 для передачи данных; и память 1060 для хранения данных. Устройство 1000 для кодирования видео может также содержать оптико-электрические (OE) компоненты и электрооптические (EO) компоненты, подключенные к входным портам 1010, приемным блокам 1020, блокам 1040 передачи и выходным портам 1050 для вывода или ввода оптических или электрических сигналов.In fig. 10 is a schematic diagram of a video encoding apparatus 1000 (eg, video encoder 300 or video decoder 400) in accordance with an embodiment of the present disclosure. The video encoding apparatus 1000 is suitable for implementing the disclosed embodiments that are described herein. The video encoding device 1000 includes input ports 1010 and receiver units (Rx) 1020 for receiving data; a processor, logical unit, or central processing unit (CPU) 1030 for processing data; transmitter (Tx) blocks 1040 and data output ports 1050; and 1060 memory for data storage. The video encoding apparatus 1000 may also include optical-electrical (OE) components and electro-optical (EO) components connected to input ports 1010, receiving units 1020, transmitting units 1040, and output ports 1050 for outputting or inputting optical or electrical signals.

Процессор 1030 реализован с помощью программно-аппаратных средств. Процессор 1030 может быть реализован в виде одной или более микросхем CPU, ядер (например, в виде многоядерного процессора), программируемых пользователем вентильных матриц (FPGA), специализированных интегральных схем (ASIC) и процессоров цифровых сигналов (DSP). Процессор 1030 взаимодействует с входными портами 1010, блоками 1020 приемника, блоками 1040 передатчика, выходными портами 1050 и памятью 1060. Процессор 1030 содержит модуль 1070 кодирования. Модуль 1070 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 1070 кодирования реализует, обрабатывает, подготавливает или обеспечивает различные функции кодека. Таким образом, включение модуля 1070 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 1000 для кодирования видео и приводит к переводу устройства 1000 для кодирования видео в другое состояние. Альтернативно, модуль 1070 кодирования реализован в виде инструкций, хранящихся в памяти 1060 и исполняемым процессором 1030.The 1030 processor is implemented using hardware and software. The processor 1030 may be implemented as one or more CPU chips, cores (eg, a multi-core processor), field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). Processor 1030 interfaces with input ports 1010, receiver blocks 1020, transmitter blocks 1040, output ports 1050, and memory 1060. Processor 1030 includes an encoding module 1070. Encoding module 1070 implements the disclosed embodiments described above. For example, encoding module 1070 implements, processes, prepares, or provides various codec functions. Thus, turning on the encoding module 1070 provides a significant improvement in the functionality of the video encoding apparatus 1000 and causes the video encoding apparatus 1000 to be placed in a different state. Alternatively, encoding module 1070 is implemented as instructions stored in memory 1060 and executed by processor 1030.

Устройство 1000 кодирования видео может также включать в себя устройства 1080 ввода и/или вывода (I/O) для передачи данных пользователю и от пользователя. Устройства 1080 ввода/вывода могут включать в себя устройства вывода, такие как дисплей для отображения видеоданных, динамики для вывода аудиоданных и т.д. Устройства 1080 ввода/вывода также могут включать в себя устройства ввода, такие как клавиатура, мышь, шаровой манипулятор и т.д. и/или соответствующие интерфейсы для взаимодействия с такими устройствами вывода.The video encoding device 1000 may also include input and/or output (I/O) devices 1080 for transmitting data to and from the user. The input/output devices 1080 may include output devices such as a display for displaying video data, speakers for outputting audio data, etc. I/O devices 1080 may also include input devices such as a keyboard, mouse, trackball, etc. and/or appropriate interfaces for interacting with such output devices.

Память 1060 содержит один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства для хранения данных с переполнением для хранения программ, когда такие программы выбираются для исполнения, и для хранения инструкций и данных, которые считываются во время исполнения программы. Память 1060 может быть энергозависимой и/или энергонезависимой и может представлять собой постоянную память (RAM), оперативную память (ROM), троичную память с адресацией по содержимому (TCAM) и/или статическую оперативную память (SRAM).Memory 1060 includes one or more disks, tape drives, and solid-state drives and can be used as an overflow storage device for storing programs when such programs are selected for execution, and for storing instructions and data that are read during program execution. Memory 1060 may be volatile and/or nonvolatile and may be read only memory (RAM), random access memory (ROM), ternary content addressable memory (TCAM), and/or static random access memory (SRAM).

На фиг. 11 показано схематичное представление варианта осуществления средства 1100 кодирования. В варианте осуществления средство 1100 кодирования реализовано в устройстве 1102 для кодирования видео (например, видеокодере 300 или видеодекодере 400). Устройство 1102 для кодирования видео включает в себя средство 1101 приема. Средство 1101 приема выполнено с возможностью приема изображения для кодирования или приема битового потока для декодирования. Устройство 1102 для кодирования видео включает в себя средство 1107 передачи, подключенное к средству 1101 приема. Средство 1107 передачи выполнено с возможностью передачи битового потока в декодер или передачи декодированного изображения в средство отображения (например, в одно из устройств 1080 ввода-вывода).In fig. 11 shows a schematic diagram of an embodiment of an encoding means 1100. In an embodiment, the encoding engine 1100 is implemented in a video encoding device 1102 (eg, video encoder 300 or video decoder 400). The video encoding device 1102 includes a receiving means 1101. The receiving means 1101 is configured to receive an image for encoding or receive a bit stream for decoding. The video encoding device 1102 includes a transmission means 1107 connected to a reception means 1101. The transmission means 1107 is configured to transmit a bit stream to a decoder or transmit a decoded image to a display device (eg, one of the input/output devices 1080).

Устройство 1102 для кодирования видео включает в себя средство 1103 хранения. Средство 1103 хранения подключено по меньшей мере к одному из: средства 1101 приема или средства 1107 передачи. Средство 1103 хранения выполнено с возможностью хранения инструкций. Устройство 1102 для кодирования видео также включает в себя средство 1105 обработки. Средство 1105 обработки подключено к средству 1103 хранения. Средство 1105 обработки выполнено с возможностью исполнения инструкций, хранящихся в средстве 1103 хранения, для выполнения способов, раскрытых в данном документе.The video encoding device 1102 includes storage means 1103. The storage means 1103 is connected to at least one of the receiving means 1101 or the transmitting means 1107. The storage means 1103 is configured to store instructions. The video encoding device 1102 also includes processing means 1105. The processing means 1105 is connected to the storage means 1103. The processing means 1105 is configured to execute instructions stored in the storage means 1103 to perform the methods disclosed herein.

Кроме того, следует также понимать, что этапы примерных способов, изложенных в данном документе, не обязательно должны выполняться в описанном порядке, и порядок этапов таких способов следует рассматривать только как примерный. Аналогичным образом, в такие способы могут быть включены дополнительные этапы, и некоторые этапы могут быть исключены или объединены в способах, соответствующих различным вариантам осуществления настоящего раскрытия.In addition, it should also be understood that the steps of the exemplary methods set forth herein need not be performed in the order described, and the order of the steps of such methods should be considered as exemplary only. Likewise, additional steps may be included in such methods, and some steps may be omitted or combined in methods consistent with various embodiments of the present disclosure.

Несмотря на то, что в настоящем раскрытии было представлено несколько вариантов осуществления, должно быть понятно, что раскрытые системы и способы могут быть воплощены в многих других конкретных формах без отклонения от сущности или объема настоящего раскрытия. Настоящие примеры следует рассматривать как иллюстративные, и не ограничительные, и примеры не имеют намерения ограничивать изобретение деталями, приведенными в данном документе. Например, различные элементы или компоненты могут быть объединены или интегрированы в другую систему, или некоторые функции могут быть опущены или не реализованы.Although several embodiments have been presented in the present disclosure, it should be understood that the disclosed systems and methods may be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered illustrative and non-limiting, and the examples are not intended to limit the invention to the details set forth herein. For example, various elements or components may be combined or integrated into another system, or some functionality may be omitted or not implemented.

В дополнение к этому, технологии, системы, подсистемы и способы, описанные и проиллюстрированные в различных вариантах осуществления как дискретные или отдельные, могут быть объединены или интегрированы с другими системами, компонентами, технологиями или способами, что не выходит за рамки объема настоящего раскрытия. Другие элементы, показанные или рассмотренные как напрямую соединенные или связанные друг с другом, могут быть косвенно соединены или связаны через какой-либо интерфейс, устройство или промежуточный компонент, будь то электрически, механически или иным образом. Другие примеры изменений, замен и модификаций могут быть установлены специалистом в данной области техники и могут быть осуществлены без отклонения от сущности и объема, раскрытых в данном документе.In addition, the technologies, systems, subsystems, and methods described and illustrated in various embodiments as discrete or separate may be combined or integrated with other systems, components, technologies, or methods without departing from the scope of the present disclosure. Other elements shown or viewed as being directly connected or coupled to each other may be indirectly connected or coupled through some interface, device, or intermediate component, whether electrically, mechanically, or otherwise. Other examples of changes, substitutions and modifications may be ascertained by one skilled in the art and may be made without departing from the spirit and scope disclosed herein.

Claims (35)

1. Способ декодирования, содержащий этапы, на которых:1. A decoding method comprising the steps of: принимают битовый подпоток, имеющий синтаксическую структуру буфера декодированных изображений (DPB), причем когда синтаксическая структура DPB содержится в наборе параметров видео (VPS), наборы слоев вывода (OLSs), к которым применяется синтаксическая структура DPB, определены посредством VPS, а когда синтаксическая структура DPB содержится в наборе параметров последовательности (SPS), синтаксическая структура DPB применяется к OLS, который имеет только один слой;receive a bit stream having a decoded picture buffer (DPB) syntax structure, wherein when the DPB syntax structure is contained in a video parameter set (VPS), output layer sets (OLSs) to which the DPB syntax structure applies are defined by the VPS, and when the syntax structure The DPB is contained in a Sequence Parameter Set (SPS), the syntactic structure of the DPB is applied to the OLS, which has only one layer; получают синтаксическую структуру DPB для OLS с одним слоем из SPS или синтаксическую структуру DPB для OLS из VPS; иobtaining a DPB syntax structure for OLS with one layer from SPS or a DPB syntax structure for OLS from VPS; And декодируют изображение из OLS, имеющего только один слой, или из OLSs с использованием синтаксической структуры DPB для получения декодированного изображения.decoding an image from an OLS having only one layer or from OLSs using a DPB syntax structure to obtain a decoded image. 2. Способ по п. 1, в котором синтаксическая структура DPB обозначена как dpb_parameters().2. The method according to claim 1, in which the syntactic structure of DPB is designated as dpb_parameters(). 3. Способ по п. 1 или 2, в котором указанным только одним слоем является i-й слой, а OLS является i-м OLS.3. The method of claim 1 or 2, wherein said only one layer is the i-th layer and the OLS is the i-th OLS. 4. Способ по любому из пп. 1-3, в котором синтаксическая структура DPB присутствует в i-й синтаксической структуре dpb_parameters() в SPS.4. Method according to any one of paragraphs. 1-3, in which the DPB syntax structure is present in the i-th syntax structure dpb_parameters() in the SPS. 5. Способ по любому из пп. 1-4, в котором битовый подпоток не включает в себя набор параметров видео (VPS), когда синтаксическая структура DPB содержится в SPS.5. Method according to any one of paragraphs. 1-4, wherein the bit stream does not include a video parameter set (VPS) when the DPB syntax structure is contained in the SPS. 6. Способ по любому из пп. 1-5, дополнительно содержащий этап, на котором сохраняют декодированное изображение в DPB перед отображением.6. Method according to any one of paragraphs. 1-5, further comprising the step of storing the decoded image in the DPB before display. 7. Способ по любому из пп. 1-6, в котором на SPS ссылается указанный только один слой в OLS.7. Method according to any one of paragraphs. 1-6, in which the SPS is referenced by the specified only one layer in the OLS. 8. Способ по любому из пп. 1-7, дополнительно содержащий этап, на котором отображают декодированное изображение на дисплее электронного устройства.8. Method according to any one of paragraphs. 1-7, further comprising the step of displaying the decoded image on a display of the electronic device. 9. Устройство декодирования, содержащее:9. A decoding device comprising: приемник, выполненный с возможностью приема битового подпотока, имеющего синтаксическую структуру буфера декодированных изображений (DPB), причем когда синтаксическая структура DPB содержится в наборе параметров видео (VPS), наборы слоев вывода (OLSs), к которым применяется синтаксическая структура DPB, определены посредством VPS, а когда синтаксическая структура DPB содержится в наборе параметров последовательности (SPS), синтаксическая структура DPB применяется к OLS, который имеет только один слой; иa receiver configured to receive a bit stream having a decoded picture buffer (DPB) syntax structure, wherein when the DPB syntax structure is contained in a video parameter set (VPS), output layer sets (OLSs) to which the DPB syntax structure applies are defined by the VPS , and when the DPB syntax structure is contained in a Sequence Parameter Set (SPS), the DPB syntax structure is applied to the OLS, which has only one layer; And процессор, подключенный к памяти, причем процессор выполнен с возможностью исполнения инструкций, вызывающих выполнение, устройством декодирования:a processor coupled to the memory, wherein the processor is configured to execute instructions causing execution by a decoding device: получения синтаксической структуры DPB для OLS только с одним слоем из SPS или синтаксической структуры DPB для OLSs из VPS; иobtaining a DPB syntax structure for OLSs with only one layer from the SPS or a DPB syntax structure for OLSs from the VPS; And декодирования изображения из OLS только с одним слоем или OLSs с использованием синтаксической структуры DPB для получения декодированного изображения.decoding an image from OLSs with only one layer or OLSs using the DPB syntax structure to obtain the decoded image. 10. Устройство декодирования по п. 9, в котором синтаксическая структура DPB обозначена как dpb_parameters(), причем указанным только одним слоем является i-й слой, при этом OLS является i-м OLS.10. The decoding apparatus of claim 9, wherein the DPB syntax structure is designated dpb_parameters(), wherein said only one layer is the i-th layer, wherein the OLS is the i-th OLS. 11. Устройство декодирования по п. 9 или 10, в котором синтаксическая структура DPB присутствует в i-й синтаксической структуре dpb_parameters() в SPS.11. The decoding device according to claim 9 or 10, wherein the DPB syntax structure is present in the i-th dpb_parameters() syntax structure in the SPS. 12. Устройство декодирования по любому из пп. 9-11, в котором битовый подпоток не включает в себя набор параметров видео (VPS), когда синтаксическая структура DPB содержится в SPS.12. Decoding device according to any one of claims. 9-11, wherein the bit stream does not include a video parameter set (VPS) when the DPB syntax structure is contained in the SPS. 13. Устройство декодирования по любому из пп. 9-12, в котором на SPS ссылается указанный только один слой в OLS.13. Decoding device according to any one of paragraphs. 9-12, in which the SPS is referenced by only one specified layer in the OLS. 14. Устройство декодирования по любому из пп. 9-13, дополнительно содержащее дисплей, выполненный с возможностью отображения декодированного изображения.14. Decoding device according to any one of paragraphs. 9-13, further comprising a display configured to display the decoded image. 15. Устройство кодирования, содержащее:15. An encoding device containing: приемник, выполненный с возможностью приема изображения для кодирования или приема битового потока для декодирования;a receiver configured to receive an image for encoding or receive a bitstream for decoding; передатчик, соединенный с приемником, причем передатчик выполнен с возможностью передачи битового потока в декодер или передачи декодированного изображения на дисплей;a transmitter coupled to the receiver, wherein the transmitter is configured to transmit a bit stream to a decoder or transmit a decoded image to a display; память, соединенную по меньшей мере с одним из: приемника и передатчика, причем память выполнена с возможностью хранения инструкций; иa memory connected to at least one of a receiver and a transmitter, the memory being configured to store instructions; And процессор, соединенный с памятью, причем процессор выполнен с возможностью исполнения инструкций, хранящихся в памяти, для реализации способа по любому из пп. 1-8.a processor coupled to the memory, wherein the processor is configured to execute instructions stored in the memory to implement the method of any one of claims. 1-8. 16. Устройство кодирования по п. 15, дополнительно содержащее дисплей, выполненный с возможностью отображения декодированного изображения.16. The encoding device according to claim 15, further comprising a display configured to display the decoded image. 17. Система кодирования/декодирования видео, содержащая:17. Video encoding/decoding system containing: кодер; иencoder; And декодер, соединенный с возможностью связи с кодером, причем кодер или декодер включает в себя устройство декодирования или устройство кодирования по любому из пп. 9-16.a decoder communicatively coupled to the encoder, wherein the encoder or decoder includes a decoding device or an encoding device according to any one of claims. 9-16. 18. Средство кодирования, содержащее:18. Encoding tool containing: средство приема, выполненное с возможностью приема изображения для кодирования или приема битового потока для декодирования;receiving means configured to receive an image for encoding or receive a bit stream for decoding; средство передачи, соединенное со средством приема, причем средство передачи выполнено с возможностью передачи битового потока на средство декодирования или передачи декодированного изображения на средство отображения;transmission means connected to the reception means, the transmission means being configured to transmit a bit stream to the decoding means or transmit a decoded image to the display means; средство хранения, соединенное меньшей мере с одним из: средства приема и средства передачи, причем средство хранения выполнено с возможностью хранения инструкций; иstorage means connected to at least one of: receiving means and transmitting means, wherein the storage means is configured to store instructions; And средство обработки, соединенное со средством хранения, причем средство обработки выполнено с возможностью исполнения инструкций, хранящихся в средстве хранения, для реализации способа по любому из пп. 1-8.processing means connected to the storage means, wherein the processing means is configured to execute instructions stored in the storage means to implement the method according to any one of claims. 1-8.
RU2022111990A 2019-10-07 2020-10-06 Prevention of redundant signaling in multilayer bit video streams RU2821429C1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US62/911,808 2019-10-07

Publications (1)

Publication Number Publication Date
RU2821429C1 true RU2821429C1 (en) 2024-06-24

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2612577C2 (en) * 2012-07-02 2017-03-09 Нокиа Текнолоджиз Ой Method and apparatus for encoding video
US9819948B2 (en) * 2014-06-18 2017-11-14 Qualcomm Incorporated Signaling HRD parameters for bitstream partitions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2612577C2 (en) * 2012-07-02 2017-03-09 Нокиа Текнолоджиз Ой Method and apparatus for encoding video
US9819948B2 (en) * 2014-06-18 2017-11-14 Qualcomm Incorporated Signaling HRD parameters for bitstream partitions

Similar Documents

Publication Publication Date Title
US12200263B2 (en) Avoidance of redundant signaling in multi-layer video bitstreams
JP7323099B2 (en) Signaling DPB parameters for multi-layer video bitstreams
CN117425011A (en) Disallowing unused layers to be included in a multi-layer video stream
RU2821429C1 (en) Prevention of redundant signaling in multilayer bit video streams
RU2827899C1 (en) Prevention of redundant signaling in multilayer bit video streams
RU2829492C1 (en) Prevention of redundant signaling in multilayer bit video streams
RU2822511C1 (en) Prevention of redundant signaling in multilayer video bit streams
RU2820076C1 (en) Hrd compliance tests for ols