RU2819291C2 - Extraction of video coding bit stream using identifier signaling - Google Patents

Extraction of video coding bit stream using identifier signaling Download PDF

Info

Publication number
RU2819291C2
RU2819291C2 RU2022101538A RU2022101538A RU2819291C2 RU 2819291 C2 RU2819291 C2 RU 2819291C2 RU 2022101538 A RU2022101538 A RU 2022101538A RU 2022101538 A RU2022101538 A RU 2022101538A RU 2819291 C2 RU2819291 C2 RU 2819291C2
Authority
RU
Russia
Prior art keywords
sub
bitstream
picture
pictures
bit stream
Prior art date
Application number
RU2022101538A
Other languages
Russian (ru)
Other versions
RU2022101538A (en
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 Хуавэй Текнолоджиз Ко., Лтд.
Publication of RU2022101538A publication Critical patent/RU2022101538A/en
Application granted granted Critical
Publication of RU2819291C2 publication Critical patent/RU2819291C2/en

Links

Images

Abstract

FIELD: physics.
SUBSTANCE: invention relates to video coding. Result is achieved by the fact that the video coding mechanism includes receiving an extracted bit stream, which is the result of a process of extracting a bit sub-stream from an input bit stream containing a set of sub-pictures. Extracted bit stream contains only a subset of sub-pictures of the input bit stream before the process of extracting the bit sub-stream. Flag from the extracted bitstream is set to indicate that sub-snapshot information relating to a subset of the sub-snaps is present in the extracted bitstream. One or more identifiers (ID) of sub-pictures for a sub-set of sub-pictures are obtained based on the flag. Subset of sub-pictures is decoded based on identifiers (ID) of the sub-pictures.
EFFECT: high coding efficiency.
20 cl, 10 dwg

Description

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИCROSS REFERENCE TO RELATED APPLICATIONS

[0001] В настоящей заявке на патент испрашиваются преимущества предварительной заявки на патент США №. 62/870,892, поданной 5 июля 2019 года Е-Куи Вангом и озаглавленной «Обработка идентификатора сигнализированного сегмента для извлечения битового подпотока» (“Handling Signalled Slice Id for Bitstream Extraction”), которая включена сюда посредством ссылки.[0001] This patent application claims benefit from U.S. Provisional Patent Application No. 62/870,892, filed July 5, 2019 by Ye-Qui Wang, entitled “Handling Signalled Slice Id for Bitstream Extraction,” which is incorporated herein by reference.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕFIELD OF TECHNOLOGY TO WHICH THE INVENTION RELATES

[0002] Настоящее раскрытие в целом относится к видеокодированию и, в частности, относится к извлечению битового потока при видеокодировании.[0002] The present disclosure relates generally to video encoding, and in particular relates to bitstream extraction in video encoding.

УРОВЕНЬ ТЕХНИКИBACKGROUND OF THE ART

[0003] Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством-получателем декомпрессии видео, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео желательны улучшенные методики сжатия и распаковки, которые улучшают степень сжатия с минимальными потерями в качестве изображения или вообще без них. [0003] The amount of video data required to present even a relatively short video can be significant, which can lead to difficulties when 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 on 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 by a video decompression destination device, which decodes the video data. With limited network resources and ever-increasing demands for higher video quality, improved compression and decompression techniques are desired that improve compression rates with little or no loss in image quality.

СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

[0004] В одном варианте осуществления раскрытие включает в себя способ, реализуемый в декодере, при этом способ содержит: прием посредством приемника декодера извлеченного битового потока, который является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков, при этом извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока; определение посредством процессора декодера того, что флаг из извлеченного битового потока установлен указывать, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке; получение посредством процессора одного или более идентификаторов (ID) подснимков для поднабора подснимков на основе флага; и декодирование посредством процессора поднабора подснимков на основе идентификаторов (ID) подснимков.[0004] In one embodiment, the disclosure includes a method implemented in a decoder, the method comprising: receiving, by a receiver of the decoder, an extracted bit stream that results from a process of extracting a sub-bit stream from an input bit stream containing a set of sub-pictures, wherein the extracted bit stream the stream contains only a subset of subsnapshots of the input bitstream before the subbitstream extraction process; determining, by the decoder processor, that a flag from the extracted bitstream is set to indicate that sub-picture information related to a subset of sub-pictures is present in the extracted bitstream; obtaining, by the processor, one or more sub-picture IDs for a subset of sub-pictures based on the flag; and decoding, by the processor, a subset of the sub-pictures based on the IDs of the sub-pictures.

[0005] Некоторые последовательности видеокодирования могут включать в себя снимки, которые закодированы как набор подснимков. Подснимки могут быть связаны с идентификаторами подснимков, которые могут использоваться для указания местоположения подснимков относительно снимков. В некоторых случаях такая информация о подснимках может быть логически выведена. В таких случаях эту информацию о подснимках можно исключить из битового потока, чтобы повысить эффективность кодирования. Некоторые процессы могут извлекать битовый подпоток из битового потока для независимой передачи конечному пользователю. В таком случае битовый подпоток содержит только поднабор подснимков, которые содержались в исходном битовом потоке. Хотя информация о подснимках может быть логически выведена, когда присутствуют все подснимки, такой вывод может быть невозможен в декодере, когда присутствует только поднабор подснимков. Настоящий пример включает в себя механизмы для предотвращения ошибок кодирования в течение извлечения битового подпотока. В частности, если битовый подпоток извлекается из битового потока, кодер и/или средство видеомонтажа (сплайсер) включают информацию о подснимках для, по меньшей мере, поднабора подснимков в битовый подпоток. Кроме того, кодер/средство видеомонтажа включает флаг, указывающий, что информация о подснимках включена в битовый подпоток. Декодер может считать этот флаг, получить правильную информацию о подснимках и декодировать битовый подпоток. Соответственно, раскрытые механизмы создают дополнительные функциональные возможности в кодере и/или декодере, избегая ошибок. Кроме того, раскрытые механизмы могут повысить эффективность кодирования, допуская извлечение битового подпотока, а не передачу всего битового потока. Это может уменьшить использование процессора, памяти и/или сетевых ресурсов в кодере и/или декодере.[0005] Some video encoding sequences may include pictures that are encoded as a set of sub-pictures. Sub-pictures can be associated with sub-picture identifiers, which can be used to indicate the location of the sub-pictures relative to the snapshots. In some cases, such sub-image information can be inferred. In such cases, this sub-picture information can be excluded from the bitstream to improve coding efficiency. Some processes can extract a subbitstream of a bitstream for independent transmission to the end user. In such a case, the subbitstream contains only a subset of the subpictures that were contained in the original bitstream. Although sub-picture information can be inferred when all sub-pictures are present, such inference may not be possible in the decoder when only a subset of sub-pictures is present. The present example includes mechanisms for preventing encoding errors during bitstream extraction. In particular, if a sub-bitstream is extracted from the bitstream, the encoder and/or splicer includes sub-picture information for at least a subset of sub-pictures in the sub-bitstream. In addition, the encoder/editer includes a flag indicating that sub-picture information is included in the sub-bitstream. The decoder can read this flag, obtain the correct sub-picture information, and decode the sub-bit stream. Accordingly, the disclosed mechanisms create additional functionality in the encoder and/or decoder while avoiding errors. In addition, the disclosed mechanisms can improve encoding efficiency by allowing a sub-bitstream to be extracted rather than the entire bitstream being transmitted. This may reduce the use of processor, memory and/or network resources in the encoder and/or decoder.

[0006] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта предусматривает то, что дополнительно содержится получение процессором длины в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков.[0006] Optionally, in any of the preceding aspects, another embodiment of the aspect further comprises obtaining by the processor the bit length of a syntax element comprising one or more sub-picture identifiers (IDs).

[0007] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что флаг, идентификаторы подснимков и длина получаются из набора параметров последовательности (SPS) в извлеченном битовом потоке.[0007] Optionally, in any of the preceding aspects, another embodiment of the aspect ensures that the flag, sub-picture identifiers, and length are obtained from a sequence parameter set (SPS) in the extracted bitstream.

[0008] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что флаг является флагом присутствия информации о подснимках (subpic_info_present_flag).[0008] Optionally, in any of the preceding aspects, another embodiment of the aspect provides that the flag is a subpic_info_present_flag.

[0009] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что идентификаторы подснимков содержатся в синтаксической структуре идентификатора подснимка SPS (sps_subpic_id [i]).[0009] Optionally, in any of the preceding aspects, another embodiment of the aspect ensures that the subpicture identifiers are contained in the syntactic structure of the SPS subpicture identifier (sps_subpic_id[i]).

[0010] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что длина содержится в синтаксической структуре длины идентификаторов подснимков SPS минус один плюс один (sps_subpic_id_len_minus1 plus 1).[0010] Optionally, in any of the preceding aspects, another embodiment of the aspect ensures that the length is contained in the syntax structure of the length of the SPS subpicture identifiers minus one plus one (sps_subpic_id_len_minus1 plus 1).

[0011] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта предусматривает то, что требуется, чтобы флаг был установлен в единицу для указания того, что информация о подснимках присутствует для закодированной послойно видеопоследовательности (CLVS) и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока.[0011] Optionally, in any of the preceding aspects, another embodiment of the aspect provides that a flag is required to be set to one to indicate that sub-picture information is present for the coded layer-by-layer video sequence (CLVS) and that each picture of CLVS contains more than one sub-snapshot when the extracted bitstream is the result of the process of extracting a sub-bitstream from the input bitstream.

[0012] В одном варианте осуществления раскрытие включает в себя способ, реализуемый в кодере, содержащий: кодирование процессором кодера входного битового потока, содержащего набор подснимков; выполнение процессором процесса извлечения битового подпотока в отношении входного битового потока для создания извлеченного битового потока, содержащего только поднабор подснимков входного битового потока; кодирование в извлеченный битовый поток процессором одного или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке; установку процессором флага в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке; и сохранение посредством памяти, соединенной с процессором, битового потока для передачи в декодер.[0012] In one embodiment, the disclosure includes a method implemented in an encoder, comprising: encoding, by an encoder processor, an input bit stream containing a set of sub-pictures; performing a sub-bitstream extraction process on the processor with respect to the input bitstream to create an extracted bitstream containing only a subset of sub-snapshots of the input bitstream; encoding into the extracted bit stream by the processor one or more sub-picture identifiers (IDs) for a subset of sub-pictures in the extracted bit stream; setting a flag by the processor in the extracted bit stream to indicate that sub-picture information related to a subset of sub-pictures is present in the extracted bit stream; and storing, by a memory coupled to the processor, a bit stream for transmission to the decoder.

[0013] Некоторые последовательности видеокодирования могут включать в себя снимки, которые закодированы как набор подснимков. Подснимки могут быть связаны с идентификаторами подснимков, которые могут использоваться для указания местоположения подснимков относительно снимков. В некоторых случаях такая информация о подснимках может быть логически выведена. В таких случаях эту информацию о подснимках можно исключить из битового потока, чтобы повысить эффективность кодирования. Некоторые процессы могут извлекать битовый подпоток из битового потока для независимой передачи конечному пользователю. В таком случае битовый подпоток содержит только поднабор подснимков, которые содержались в исходном битовом потоке. Хотя информация о подснимках может быть логически выведена, когда присутствуют все подснимки, такой вывод может быть невозможен в декодере, когда присутствует только поднабор подснимков. Настоящий пример включает в себя механизмы для предотвращения ошибок кодирования в течение извлечения битового подпотока. В частности, если битовый подпоток извлекается из битового потока, кодер и/или средство видеомонтажа включают информацию о подснимках для, по меньшей мере, поднабора подснимков в битовый подпоток. Кроме того, кодер/средство видеомонтажа включает флаг, указывающий, что информация о подснимках включена в битовый подпоток. Декодер может считать этот флаг, получить правильную информацию о подснимках и декодировать битовый подпоток. Соответственно, раскрытые механизмы создают дополнительные функциональные возможности в кодере и/или декодере, избегая ошибок. Кроме того, раскрытые механизмы могут повысить эффективность кодирования, допуская извлечение битового подпотока, а не передачу всего битового потока. Это может уменьшить использование процессора, памяти и/или сетевых ресурсов в кодере и/или декодере.[0013] Some video encoding sequences may include pictures that are encoded as a set of sub-pictures. Sub-pictures can be associated with sub-picture identifiers, which can be used to indicate the location of the sub-pictures relative to the snapshots. In some cases, such sub-image information can be inferred. In such cases, this sub-picture information can be excluded from the bitstream to improve coding efficiency. Some processes can extract a subbitstream of a bitstream for independent transmission to the end user. In such a case, the subbitstream contains only a subset of the subpictures that were contained in the original bitstream. Although sub-picture information can be inferred when all sub-pictures are present, such inference may not be possible in the decoder when only a subset of sub-pictures is present. The present example includes mechanisms for preventing encoding errors during bitstream extraction. In particular, if a sub-bit stream is extracted from the bit stream, the encoder and/or video editing engine includes sub-picture information for at least a subset of sub-pictures in the sub-bit stream. In addition, the encoder/editer includes a flag indicating that sub-picture information is included in the sub-bitstream. The decoder can read this flag, obtain the correct sub-picture information, and decode the sub-bit stream. Accordingly, the disclosed mechanisms create additional functionality in the encoder and/or decoder while avoiding errors. In addition, the disclosed mechanisms can improve encoding efficiency by allowing a sub-bitstream to be extracted rather than the entire bitstream being transmitted. This may reduce the use of processor, memory and/or network resources in the encoder and/or decoder.

[0014] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что дополнительно содержится кодирование процессором длины в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков, в извлеченный битовый поток.[0014] Optionally, in any of the preceding aspects, another embodiment of the aspect further comprises encoding the bit length of a syntax element comprising one or more sub-picture IDs into the extracted bitstream by the processor.

[0015] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что флаг, идентификаторы подснимков и длина кодируются в SPS в извлеченном битовом потоке.[0015] Optionally, in any of the preceding aspects, another embodiment of the aspect ensures that the flag, sub-picture identifiers, and length are SPS encoded in the extracted bitstream.

[0016] В необязательном порядке, в любом из предшествующих аспектов, предоставляется другой вариант реализации аспекта, в котором флаг является subpic_info_present_flag.[0016] Optionally, in any of the preceding aspects, another embodiment of the aspect is provided, in which the flag is subpic_info_present_flag.

[0017] В необязательном порядке, в любом из предшествующих аспектов, предоставляется другой вариант реализации аспекта, в котором идентификаторы подснимков содержатся в синтаксической структуре sps_subpic_id [i].[0017] Optionally, in any of the preceding aspects, another embodiment of the aspect is provided wherein the subpicture identifiers are contained in the syntax structure sps_subpic_id[i].

[0018] В необязательном порядке, в любом из предшествующих аспектов, предоставляется другой вариант реализации аспекта, в котором длина содержится в синтаксической структуре sps_subpic_id_len_minus1 plus 1.[0018] Optionally, in any of the preceding aspects, another embodiment of the aspect is provided wherein the length is contained in the sps_subpic_id_len_minus1 plus 1 syntax structure.

[0019] В необязательном порядке, в любом из предшествующих аспектов предусмотрен другой вариант реализации аспекта, в котором требуется, чтобы флаг был установлен в единицу для указания того, что информация о подснимках присутствует для CLVS и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока.[0019] Optionally, in any of the preceding aspects, another embodiment of the aspect is provided that requires that a flag be set to one to indicate that sub-picture information is present for the CLVS and that each snapshot from the CLVS contains more than one sub-picture, when the extracted bitstream is the result of the process of extracting a subbitstream from the input bitstream.

[0020] В одном варианте осуществления раскрытие включает в себя устройство видеокодирования, содержащее: процессор, приемник, соединенный с процессором, память, соединенную с процессором, и передатчик, соединенный с процессором, при этом процессор, приемник, память и передатчик выполнены с возможностью осуществлять способ любого из предыдущих аспектов.[0020] In one embodiment, the disclosure includes a video encoding device comprising: a processor, a receiver coupled to the processor, a memory coupled to the processor, and a transmitter coupled to the processor, wherein the processor, receiver, memory, and transmitter are configured to implement method of any of the previous aspects.

[0021] В одном варианте осуществления изобретение включает в себя долговременный машиночитаемый носитель, содержащий компьютерный программный продукт для использования устройством видеокодирования, причем компьютерный программный продукт содержит машиноисполняемые инструкции, хранящиеся на долговременном машиночитаемом носителе, которые при их исполнении процессором предписывают устройству видеокодирования выполнять способ по любому из предшествующих аспектов.[0021] In one embodiment, the invention includes a non-transitory computer readable medium comprising a computer program product for use by a video encoding device, the computer program product comprising computer executable instructions stored on the non-transitory computer readable medium that, when executed by a processor, cause the video encoding device to perform a method in any manner. from the previous aspects.

[0022] В одном варианте осуществления раскрытие включает в себя декодер, содержащий: средство приема для приема извлеченного битового потока, который является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков, причем извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока; средство определения для определения того, что флаг из извлеченного битового потока установлен для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке; средство получения для получения одного или более идентификаторов (ID) подснимков для поднабора подснимков на основе флага; средство декодирования для декодирования поднабора подснимков на основе идентификаторов (ID) подснимков; и средство пересылки для пересылки поднабора подснимков для отображения в качестве части декодированной видеопоследовательности.[0022] In one embodiment, the disclosure includes a decoder comprising: receiving means for receiving an extracted bit stream that is the result of a process of extracting a sub-bit stream from an input bit stream containing a set of sub-pictures, wherein the extracted bit stream contains only a subset of sub-pictures of the input bit stream before the bit substream extraction process; determination means for determining that a flag from the extracted bit stream is set to indicate that sub-picture information related to a subset of sub-pictures is present in the extracted bit stream; obtaining means for obtaining one or more sub-picture IDs for a subset of sub-pictures based on the flag; decoding means for decoding a subset of sub-pictures based on sub-picture IDs; and forwarding means for forwarding a subset of sub-pictures for display as part of the decoded video sequence.

[0023] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что декодер дополнительно выполнен с возможностью выполнения способа по любому из предыдущих аспектов.[0023] Optionally, in any of the preceding aspects, another embodiment of the aspect provides that the decoder is further configured to perform the method of any of the preceding aspects.

[0024] В одном варианте осуществления раскрытие включает в себя кодер, содержащий: первое средство кодирования для кодирования входного битового потока, содержащего набор подснимков; средство извлечения битового подпотока для выполнения процесса извлечения битового подпотока в отношении входного битового потока для создания извлеченного битового потока, содержащего только поднабор подснимков входного битового потока; второе средство кодирования для кодирования в извлеченный битовый поток одного или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке; средство установки для установки флага в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке; и средство хранения для хранения битового потока для передачи в декодер.[0024] In one embodiment, the disclosure includes an encoder comprising: first encoding means for encoding an input bitstream containing a set of sub-pictures; subbitstream extractor means for performing a subbitstream extraction process on the input bitstream to create an extracted bitstream containing only a subset of subsnapshots of the input bitstream; second encoding means for encoding into the extracted bit stream one or more sub-picture IDs for a subset of sub-pictures in the extracted bit stream; setting means for setting a flag in the extracted bit stream to indicate that sub-picture information related to a subset of sub-pictures is present in the extracted bit stream; and storage means for storing the bit stream for transmission to the decoder.

[0025] В необязательном порядке, в любом из предыдущих аспектов, другой вариант реализации аспекта обеспечивает то, что кодер дополнительно выполнен с возможностью выполнения способа по любому из предыдущих аспектов.[0025] Optionally, in any of the previous aspects, another embodiment of the aspect provides that the encoder is further configured to perform the method of any of the previous aspects.

[0026] Для ясности любой из вышеупомянутых вариантов осуществления изобретения может быть объединен с любым одним или более другими вышеупомянутыми вариантами осуществления изобретения, чтобы создать новый вариант осуществления в пределах объема настоящего изобретения.[0026] For clarity, any of the above embodiments may be combined with any one or more of the other above embodiments to create a new embodiment within the scope of the present invention.

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

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

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

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

[0031] Фиг.3 - принципиальная схема, иллюстрирующая пример видеокодера.[0031] FIG. 3 is a circuit diagram illustrating an example of a video encoder.

[0032] Фиг.4 - принципиальная схема, иллюстрирующая пример видеодекодера.[0032] FIG. 4 is a circuit diagram illustrating an example of a video decoder.

[0033] Фиг.5 - принципиальная схема, иллюстрирующая множество видеопотоков подснимков, извлеченных из видеопотока со снимками.[0033] FIG. 5 is a schematic diagram illustrating a plurality of sub-picture video streams extracted from a still picture video stream.

[0034] Фиг.6 - принципиальная схема, иллюстрирующая примерный битовый поток, разделенный на битовый подпоток.[0034] FIG. 6 is a schematic diagram illustrating an example bit stream divided into a sub-bit stream.

[0035] Фиг.7 - принципиальная схема примерного устройства видеокодирования.[0035] FIG. 7 is a schematic diagram of an exemplary video encoding apparatus.

[0036] Фиг.8 - блок-схема последовательности операций примерного способа кодирования видеопоследовательности в битовый поток и извлечения битового подпотока при уменьшении ошибок с идентификаторами.[0036] FIG. 8 is a flowchart of an exemplary method for encoding a video sequence into a bit stream and extracting the sub-bit stream while reducing identifier errors.

[0037] Фиг.9 - блок-схема последовательности операций примерного способа декодирования видеопоследовательности из битового подпотока, извлеченного из битового потока.[0037] FIG. 9 is a flowchart of an exemplary method for decoding a video sequence from a subbitstream extracted from a bitstream.

[0038] Фиг.10 - принципиальная схема примерной системы для кодирования видеопоследовательности изображений в битовом потоке и извлечения битового подпотока при уменьшении ошибок ID.[0038] FIG. 10 is a schematic diagram of an exemplary system for encoding a video sequence of images into a bitstream and extracting the subbitstream while reducing ID errors.

ПОДРОБНОЕ ОПИСАНИЕDETAILED DESCRIPTION

[0039] Вначале следует понять, что хотя иллюстративная реализация одного или более вариантов осуществления представлена ниже, раскрытые системы и/или способы могут быть реализованы с использованием любого количества способов, известных в настоящее время или существующих. Раскрытие никоим образом не должно ограничиваться иллюстративными реализациями, чертежами и технологиями, проиллюстрированными ниже, включая иллюстративные конструкции и реализации, проиллюстрированные и описанные здесь, но может быть изменено в пределах объема прилагаемой формулы изобретения вместе с полным объемом ее эквивалентов.[0039] It should first be understood 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 methods currently known or existing. The disclosure is not to be limited in any way to the exemplary implementations, drawings and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be varied within the scope of the appended claims along with the full scope of their equivalents.

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

[0041] Битовый поток - это последовательность битов, включающая в себя видеоданные, которые сжимаются для передачи между кодером и декодером. Кодер - это устройство, которое выполнено с возможностью использования процессов кодирования для сжатия видеоданных в битовый поток. Декодер - это устройство, которое выполнено с возможностью использования процессов декодирования для восстановления видеоданных из битового потока для отображения. Снимок - это массив дискретных отсчетов яркости и/или массив дискретных отсчетов цветности, которые создают кадр или его поле. Снимок, который кодируется или декодируется, может называться текущим снимком для ясности обсуждения. Подснимок - это прямоугольная область из одного или более сегментов внутри снимка. Процесс извлечения битового подпотока - это заданный механизм, который удаляет единичные блоки уровня абстракции сети (NAL) из битового потока, которые не являются частью целевого набора, в результате чего получается выходной битовый подпоток, который включает в себя единичные блоки NAL, включенные в целевой набор. Единичный блок NAL - это синтаксическая структура, содержащая байты данных и указание типа содержащихся в них данных. Единичные блоки NAL включают в себя единичные блоки NAL уровня видеокодирования (VCL), которые содержат видеоданные, и единичные блоки NAL, не относящиеся к VCL, которые содержат вспомогательные синтаксические данные. Входной битовый поток - это битовый поток, который содержит полный набор единичных блоков NAL до применения процесса извлечения битового подпотока. Извлеченный битовый поток, также известный как битовый подпоток, представляет собой битовый поток, который выводится из процесса извлечения битового потока и включает в себя поднабор единичных блоков NAL из входного битового потока. Набор - это совокупность отдельных элементов. Поднабор - это совокупность элементов, так что каждый элемент в поднаборе включен в набор, и по меньшей мере один элемент из набора исключен из поднабора. Информация о подснимках - это любые данные, которые описывают подснимок. Флаг - это структура данных, содержащая последовательность битов, которая может быть установлена для указания соответствующих данных. Идентификатор (ID) подснимка - это элемент данных, который однозначно идентифицирует соответствующий подснимок. Длина структуры данных - это количество битов, содержащихся в структуре данных. Закодированная послойно видеопоследовательность (CLVS) - это последовательность кодированных видеоданных, содержащих один или более слоев снимков. CLVS может называться закодированной видеопоследовательностью (CVS), когда CLVS содержит единственный слой или когда CLVS обсуждается вне контекста слоев. Набор параметров последовательности (SPS) - это набор параметров, который содержит данные, относящиеся к последовательности снимков. Декодированная видеопоследовательность - это последовательность снимков, которые были восстановлены декодером при подготовке к отображению пользователю.[0041] A bit stream is a sequence of bits including 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 bit stream. A decoder is a device that is configured to use decoding processes to recover video data from a bitstream for display. A picture is an array of discrete luminance samples and/or an array of discrete chromaticity samples that create a frame or its field. The snapshot that is being encoded or decoded may be called the current snapshot for clarity of discussion. A sub-image is a rectangular area of one or more segments within a photograph. The subbitstream extraction process is a defined mechanism that removes Network Abstraction Layer (NAL) units from the bitstream that are not part of the target set, resulting in an output substream that includes the NAL units included in the target set . A NAL unit block is a syntactic structure containing bytes of data and an indication of the type of data they contain. NAL units include video coding layer (VCL) NAL units that contain video data and non-VCL NAL units that contain syntax auxiliary data. The input bitstream is a bitstream that contains the complete set of NAL units before applying the subbitstream extraction process. An extracted bitstream, also known as a subbitstream, is a bitstream that is output from the bitstream extraction process and includes a subset of NAL units from the input bitstream. A set is a collection of individual elements. A subset is a collection of elements such that every element in the subset is included in the set, and at least one element in the set is excluded from the subset. Subimage information is any data that describes a subimage. A flag is a data structure containing a sequence of bits that can be set to indicate appropriate data. A sub-picture identifier (ID) is a data element that uniquely identifies the corresponding sub-picture. The length of a data structure is the number of bits contained in the data structure. A coded layer-by-layer video sequence (CLVS) is a sequence of encoded video data containing one or more image layers. A CLVS may be called a coded video sequence (CVS) when the CLVS contains a single layer or when the CLVS is discussed outside the context of layers. A Sequence Parameter Set (SPS) is a parameter set that contains data related to a sequence of snapshots. A decoded video sequence is a sequence of pictures that have been reconstructed by the decoder in preparation for display to the user.

[0042] В данном документе используются следующие сокращения: Блок дерева кодирования (CTB), Единичный блок дерева кодирования (CTU), Единичный блок кодирования (CU), Закодированная видеопоследовательность (CVS), Объединенная группа экспертов по видео (JVET), Набор клеток с ограничением движения (MCTS), Максимальный единичный блок передачи (MTU), Уровень сетевой абстракции (NAL), Порядковый номер снимка (POC), Полезная нагрузка необработанной байтовой последовательности (RBSP), Набор параметров последовательности (SPS), Единичный блок подснимка (SPU), Универсальное видеокодирование (VVC) и Рабочий проект (WD).[0042] The following abbreviations are used herein: Coding Tree Block (CTB), Coding Tree Unit (CTU), Coding Unit (CU), Coded Video Sequence (CVS), Joint Video Expert Team (JVET), Cell Set Motion Constrained Transmission Unit (MCTS), Maximum Transmission Unit (MTU), Network Abstraction Layer (NAL), Snapshot Sequence Number (POC), Raw Byte Sequence Payload (RBSP), Sequence Parameter Set (SPS), Sub-Snapshot Unit Unit (SPU) , Versatile Video Coding (VVC) and Working Draft (WD).

[0043] Для уменьшения размера видеофайлов с минимальной потерей данных можно использовать многие методики сжатия видео. Например, методики сжатия видео могут включать в себя выполнение пространственного (например, внутрикадрового (интра)) предсказания. Для блочного видеокодирования сегмент (слайс) видео (например, видеоснимок или часть видеоснимка) может быть разделен на видеоблоки, которые также могут называться древовидными блоками, блоками дерева кодирования (CTB), единичными блоками дерева кодирования (CTU), единичными блоками кодирования (CU) и/или узлами кодирования. Видеоблоки в сегменте, закодированном в интра-режиме (I), кодируются с использованием пространственного предсказания относительно опорных дискретных отсчетов в соседних блоках в одном и том же снимке. Видеоблоки в сегменте снимка, закодированном в межкадровом (интер) режиме с однонаправленным предсказанием (P) или двунаправленным предсказанием (B), могут кодироваться, используя пространственное предсказание относительно опорных дискретных отсчетов в соседних блоках в одном и том же снимке или временное предсказание относительно опорных дискретных отсчетов в других опорных снимках. Снимки могут называться кадрами и/или изображениями, а опорные снимки могут называться опорными кадрами и/или опорными изображениями. Пространственное или временное предсказание приводит к блоку предсказания, представляющему блок изображения. Остаточные данные представляют собой пиксельные разности между исходным блоком изображения и блоком предсказания. Соответственно, кодированный в интер-режиме блок кодируется согласно вектору движения, который указывает на блок опорных дискретных отсчетов, формирующих блок предсказания, и остаточные данные, указывающие разность между кодированным блоком и блоком предсказания. Кодированный в интра-режиме блок кодируется в соответствии с режимом внутрикадрового (интра) кодирования и остаточными данными. Для дальнейшего сжатия остаточные данные могут быть преобразованы из области пикселей в область преобразования. В результате получаются остаточные коэффициенты преобразования, которые можно квантовать. Квантованные коэффициенты преобразования могут изначально быть скомпонованы в двумерном массиве. Квантованные коэффициенты преобразования могут сканироваться для создания одномерного вектора коэффициентов преобразования. Для достижения еще большего сжатия может применяться энтропийное кодирование. Такие методики сжатия видео более подробно обсуждаются ниже.[0043] Many video compression techniques can be used to reduce the size of video files with minimal data loss. For example, video compression techniques may include performing spatial (eg, intra-frame) prediction. For block video encoding, a video segment (slice) (for example, a video snapshot or part of a video snapshot) can be divided into video blocks, which can 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-mode (I) encoded segment are encoded using spatial prediction relative to reference samples in adjacent blocks in the same picture. Video blocks in a picture segment encoded in inter-frame mode with unidirectional prediction (P) or bidirectional prediction (B) may be encoded using spatial prediction relative to reference samples in adjacent blocks in the same picture or temporal prediction relative to reference samples counts in other reference images. Shots may be referred to as frames and/or images, and reference photographs may be referred to as reference frames and/or reference images. Spatial or temporal prediction results in a prediction block representing an image block. The residual data represents the pixel differences between the original image block and the prediction block. Accordingly, an inter-mode coded block is encoded according to a motion vector that indicates a block of reference samples forming a prediction block, and residual data indicating a difference between the coded block and the prediction block. An intra-mode encoded block is encoded in accordance with the intra-encoding mode and residual data. For further compression, the residual data can be converted from the pixel domain to the transform domain. The result is residual transform coefficients that can be quantized. The quantized transform coefficients may initially be arranged in a two-dimensional array. The quantized transform coefficients can be scanned to create a one-dimensional vector of transform coefficients. Entropy coding can be used to achieve even greater compression. Such video compression techniques are discussed in more detail below.

[0044] Чтобы обеспечить точное декодирование закодированного видео, видео кодируется и декодируется согласно соответствующим стандартам видеокодирования. Стандарты видеокодирования включают в себя Сектор стандартизации Международного союза электросвязи (ITU) (ITU-T) H.261, Группа экспертов по кинофильмам (MPEG)-1 Часть 2 Международной организации по стандартизации/Международная электротехническая комиссия (ISO/IEC), 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). Совместная группа экспертов по видео (JVET) ITU-T и ISO/IEC приступила к разработке стандарта видеокодирования, называемого Универсальным видеокодированием (VVC). VVC включен в рабочий проект (WD), который включает в себя JVET-N1001-v8.[0044] To ensure accurate decoding of the encoded video, the video is encoded and decoded according to relevant video encoding standards. Video coding standards include International Telecommunication Union (ITU) Standardization Sector (ITU-T) H.261, Motion Picture Experts Group (MPEG)-1 International Organization for Standardization/International Electrotechnical Commission (ISO/IEC) 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-angle Video Coding (MVC), and Multi-angle video encoding plus depth (MVC+D) and three-dimensional (3D) AVC (3D-AVC). HEVC includes extensions such as Scalable HEVC (SHVC), Multi-angle HEVC (MV-HEVC), and 3D HEVC (3D-HEVC). The Joint Video Experts Team (JVET) of ITU-T and ISO/IEC has begun developing a video coding standard called Versatile Video Coding (VVC). VVC is included in the working draft (WD), which includes JVET-N1001-v8.

[0045] Последовательности видеокодирования включают в себя последовательность снимков. В некоторых случаях такие снимки могут быть дополнительно разделены на набор подснимков, где каждый подснимок включает в себя отдельную область снимка. Подснимки могут позволять различным пространственным частям снимка обрабатываться в декодере по-разному. Например, в контексте виртуальной реальности (VR) пользователю отображается только часть всего снимка. Соответственно, подснимки могут использоваться для передачи различных частей снимка в декодер с разными разрешениями и/или даже для исключения конкретных частей снимка. Это может повысить эффективность кодирования. В другом примере приложения телеконференцсвязи могут динамически увеличивать размер и/или разрешение изображений участника, который активно говорит, и уменьшать размер/разрешение изображения участника, когда участник перестает говорить. Включение каждого участника в отдельный подснимок позволяет производить такие динамические изменения, относящиеся к одному участнику, не влияя на изображения, относящиеся к другим участникам. Подснимки могут быть связаны с идентификаторами подснимков. Идентификатор подснимка однозначно идентифицирует соответствующий подснимок. Соответственно, идентификаторы подснимков могут использоваться для указания местоположения подснимков относительно снимка и/или для внесения изменений в процесс кодирования на уровне подснимков. В некоторых случаях может быть логически выведена информация о подснимках, такая как идентификаторы подснимков. Например, когда снимок включает в себя девять подснимков, идентификаторы подснимков могут быть выведены декодером как индексы в диапазоне от нуля до восьми. В таких случаях эту информацию о подснимках можно исключить из битового потока, чтобы повысить эффективность кодирования.[0045] Video encoding sequences include a sequence of pictures. In some cases, such images may be further divided into a set of subimages, where each subimage includes a separate area of the image. Sub-pictures can allow different spatial parts of the picture to be processed differently in the decoder. For example, in a virtual reality (VR) context, only a portion of the entire image is shown to the user. Accordingly, sub-pictures can be used to transmit different parts of the picture to the decoder at different resolutions and/or even to exclude specific parts of the picture. This can improve coding efficiency. In another example, teleconferencing applications may dynamically increase the size and/or resolution of images of a participant who is actively speaking, and reduce the size/resolution of the participant's image when the participant stops speaking. Including each participant in a separate subshot allows such dynamic changes to be made pertaining to one participant without affecting images pertaining to other participants. Sub-pictures can be associated with sub-picture IDs. The subimage ID uniquely identifies the corresponding subimage. Accordingly, sub-picture identifiers can be used to indicate the location of sub-pictures relative to the picture and/or to make changes to the sub-picture level encoding process. In some cases, information about sub-pictures, such as sub-picture IDs, may be inferred. For example, when a picture includes nine sub-pictures, the sub-picture identifiers may be output by the decoder as indexes ranging from zero to eight. In such cases, this sub-picture information can be excluded from the bitstream to improve coding efficiency.

[0046] Однако некоторые процессы могут извлекать битовый подпоток из битового потока для независимой передачи конечному пользователю. В таком случае битовый подпоток содержит только поднабор подснимков, которые содержались в исходном битовом потоке. Хотя информация о подснимках может быть логически выведена, когда присутствуют все подснимки, такой вывод может быть невозможен в декодере, когда присутствует только поднабор подснимков. Например, кодер может передавать декодеру только третий из девяти подснимок и четвертый из девяти подснимок. Если информация о подснимках опущена, декодер может быть не в состоянии определить, какие подснимки принимаются и как такие подснимки должны отображаться. В таком случае битовый поток считается соответствующим битовым потоком, поскольку можно сделать вывод о недостающих данных, относящихся к битовому потоку. Однако извлеченный битовый подпоток не соответствует требованиям, поскольку некоторые недостающие данные, относящиеся к битовому подпотоку, не могут быть выведены.[0046] However, some processes may extract a subbit stream from the bit stream for independent transmission to the end user. In such a case, the subbitstream contains only a subset of the subpictures that were contained in the original bitstream. Although sub-picture information can be inferred when all sub-pictures are present, such inference may not be possible in the decoder when only a subset of sub-pictures is present. For example, the encoder may only transmit the third of nine sub-pictures and the fourth of nine sub-pictures to the decoder. If sub-picture information is omitted, the decoder may be unable to determine which sub-pictures are received and how such sub-pictures should be displayed. In such a case, the bitstream is considered to be a corresponding bitstream since missing data related to the bitstream can be inferred. However, the extracted bitstream does not meet the requirements because some missing data related to the bitstream cannot be output.

[0047] В данном документе раскрыты механизмы предотвращения ошибок кодирования в течение извлечения битового подпотока. В частности, когда битовый подпоток извлекается из битового потока, кодер и/или средство видеомонтажа кодируют информацию о подснимках для, по меньшей мере, поднабора подснимков в битовом подпотоке в набор параметров в битовом подпотоке. Кроме того, кодер/средство видеомонтажа включает флаг, указывающий, что информация о подснимках включена в битовый подпоток. Декодер может считать этот флаг, получить правильную информацию о подснимках и декодировать битовый подпоток. Такая информация о подснимках может включать в себя идентификаторы подснимков в синтаксическом элементе и элемент данных длины, указывающий длину в битах синтаксического элемента идентификатора подснимка. Соответственно, раскрытые механизмы создают дополнительные функциональные возможности в кодере и/или декодере, избегая ошибок кодирования, связанных подснимков. Кроме того, раскрытые механизмы могут повысить эффективность кодирования, допуская извлечение битового подпотока, а не передачу всего битового потока. Это может уменьшить использование процессора, памяти и/или сетевых ресурсов в кодере и/или декодере.[0047] This document discloses mechanisms for preventing encoding errors during bitstream extraction. In particular, when a subbitstream is extracted from a bitstream, an encoder and/or video editing engine encodes subpicture information for at least a subset of subpictures in the subbitstream into a set of parameters in the subbitstream. In addition, the encoder/editer includes a flag indicating that sub-picture information is included in the sub-bitstream. The decoder can read this flag, obtain the correct sub-picture information, and decode the sub-bit stream. Such sub-picture information may include sub-picture identifiers in the syntax element and a length data element indicating the length in bits of the sub-picture identifier syntax element. Accordingly, the disclosed mechanisms create additional functionality in the encoder and/or decoder while avoiding encoding errors associated with subpictures. In addition, the disclosed mechanisms can improve encoding efficiency by allowing a sub-bitstream to be extracted rather than the entire bitstream being transmitted. This may reduce CPU, memory and/or network resource usage in the encoder and/or decoder.

[0048] Фиг.1 является блок-схемой примерного рабочего способа 100 кодирования видеосигнала. В частности, видеосигнал кодируется в кодере. Процесс кодирования сжимает видеосигнал, используя различные механизмы для уменьшения размера видеофайла. Меньший размер файла позволяет передавать сжатый видеофайл пользователю, уменьшая при этом издержки на полосу пропускания. Затем декодер декодирует сжатый видеофайл, чтобы восстановить исходный видеосигнал для отображения конечному пользователю. Процесс декодирования обычно отражает процесс кодирования, чтобы декодер мог последовательно восстанавливать видеосигнал.[0048] FIG. 1 is a flow diagram of an exemplary operating method 100 for encoding a video signal. 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 bandwidth costs. The decoder then decodes the compressed video file to reconstruct the original video signal for display to the end user. The decoding process usually mirrors the encoding process so that the decoder can reconstruct the video signal sequentially.

[0049] На этапе 101 видеосигнал вводится в кодер. Например, видеосигнал может быть несжатым видеофайлом, хранящимся в памяти. В качестве другого примера видеофайл может быть захвачен устройством видеозахвата, например видеокамерой, и закодирован для поддержки потоковой передачи видео в реальном времени. Видеофайл может включать в себя как аудио составляющую, так и видео составляющую. Видео составляющая содержит серию кадров изображений, которые при последовательном просмотре создают визуальное впечатление движения. Кадры содержат пиксели, которые выражаются в единицах света, называемых здесь компонентами яркости (или дискретными отсчетами яркости), и цветом, который упоминается как компоненты цветности (или дискретные отсчеты цвета). В некоторых примерах кадры могут также содержать значения глубины для поддержки трехмерного просмотра.[0049] 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 real-time video streaming. A video file can include both an audio component and a video component. The video component contains a series of image frames that, when viewed sequentially, create the visual impression of movement. Frames contain pixels that are expressed in units of light, referred to here as luminance components (or luminance samples), and color, which are referred to as chrominance components (or color samples). In some examples, frames may also contain depth values to support 3D viewing.

[0050] На этапе 103 видео разбивается на блоки. Разбиение включает в себя разделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, при высокоэффективном видеокодировании (HEVC) (также известном как H.265 и MPEG-H Часть 2) кадр сначала можно разделить на единичные блоки дерева кодирования (CTU), которые представляют собой блоки заранее заданного размера (например, шестьдесят четыре пикселя на шестьдесят четыре пикселя). Единичные блоки CTU содержат дискретные отсчеты яркости и цветности. Деревья кодирования могут использоваться для разделения CTU на блоки, а затем рекурсивно разделять блоки до тех пор, пока не будут достигнуты конфигурации, поддерживающие дальнейшее кодирование. Например, компоненты яркости кадра могут делиться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения яркости. Кроме того, компоненты цветности кадра могут делиться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения цвета. Соответственно, механизмы разделения меняются в зависимости от содержимого видеокадров.[0050] At step 103, the video is divided into blocks. Splitting 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 can first be divided into coding tree units (CTUs), which are blocks of a predetermined size (for example, sixty-four pixels by sixty four pixels). CTU units contain discrete luminance and chrominance samples. Encoding trees can be used to partition a CTU into blocks and then recursively partition the blocks until configurations that support further encoding are reached. For example, the luminance components of a frame may be divided until the individual blocks contain relatively uniform luminance values. Additionally, the chrominance components of a frame can be divided until the individual blocks contain relatively uniform color values. Accordingly, the division mechanisms change depending on the content of the video frames.

[0051] На этапе 105 используются различные механизмы сжатия для сжатия блоков изображения, разделенных на этапе 103. Например, может использоваться интер-предсказание и/или интра-предсказание. Интре-предсказание предназначено для использования того факта, что объекты в общей сцене имеют тенденцию появляться в последовательных кадрах. Соответственно, блок, изображающий объект в опорном кадре, не нужно повторно описывать в соседних кадрах. В частности, объект, такой как таблица, может оставаться в постоянной позиции на протяжении нескольких кадров. Следовательно, таблица описывается один раз, и соседние кадры могут обращаться к опорному кадру. Механизмы сопоставления с образцом могут использоваться для сопоставления объектов в нескольких кадрах. Кроме того, движущиеся объекты могут быть представлены в нескольких кадрах, например, из-за движения объекта или движения камеры. В качестве конкретного примера видео может показывать автомобиль, который движется по экрану в нескольких кадрах. Векторы движения могут использоваться для описания такого движения. Вектор движения - это двумерный вектор, который обеспечивает смещение от координат объекта в кадре до координат объекта в опорном кадре. По существу, интер- предсказание может кодировать блок изображения в текущем кадре как набор векторов движения, указывающих смещение от соответствующего блока в опорном кадре.[0051] At step 105, various compression mechanisms are used to compress the image blocks divided at step 103. For example, inter-prediction and/or intra-prediction may be used. Intra-prediction is designed to take advantage of the fact that objects in a shared scene tend to appear in successive 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 access the reference frame. Pattern matching mechanisms 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 across the screen over multiple frames. Motion vectors can be used to describe such motion. A motion vector is a two-dimensional vector that provides an offset from the coordinates of an object in the frame to the coordinates of the object in the reference frame. Essentially, inter-prediction can encode an image block in the current frame as a set of motion vectors indicating an offset from the corresponding block in the reference frame.

[0052] Интра-предсказание кодирует блоки в общем кадре. Интра-предсказание использует тот факт, что компоненты яркости и цветности имеют тенденцию группироваться в кадре. Например, участок зеленого цвета на части дерева имеет тенденцию располагаться рядом с аналогичными участками зеленого цвета. Интра-предсказание использует несколько режимов направленного предсказания (например, тридцать три в HEVC), планарный режим и режим прямого течения (Direct Current (DC)). Направленные режимы указывают, что текущий блок подобен/совпадает с дискретными отсчетами соседнего блока в соответствующем направлении. Планарный режим указывает, что последовательность блоков вдоль строки/столбца (например, плоскости) может быть интерполирована на основе соседних блоков на краях строки. Фактически планарный режим указывает на плавный переход света/цвета по строке/столбцу за счет использования относительно постоянного наклона при изменении значений. Режим DC используется для сглаживания границ и указывает, что блок подобен/совпадает со средним значением, связанным с дискретными отсчетами всех соседних блоков, связанных с угловыми направлениями режимов направленного предсказания. Соответственно, блоки интра-предсказания могут представлять блоки изображения как различные значения режима реляционного предсказания вместо фактических значений. Кроме того, блоки интер-предсказания могут представлять блоки изображения как значения вектора движения вместо фактических значений. В любом случае в некоторых случаях блоки предсказания могут не точно представлять блоки изображения. Любые отличия хранятся в остаточных блоках. К остаточным блокам могут применяться преобразования для дальнейшего сжатия файла.[0052] Intra prediction encodes blocks in a common frame. Intra-prediction takes advantage of the fact that luminance and chrominance components tend to cluster together in a frame. For example, a patch of green on a piece of wood tends to be located next to similar patches of green. Intra-prediction uses several directional prediction modes (for example, thirty-three in HEVC), planar mode, and Direct Current (DC) mode. Directional modes indicate that the current block is similar to/matches the samples of an adjacent block in the corresponding direction. Planar mode specifies that a sequence of blocks along a row/column (such as a plane) can be interpolated based on adjacent blocks at the edges of the row. In effect, planar mode 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 similar to/matches the average value associated with the sampled samples of all neighboring blocks associated with the angular directions of the directional prediction modes. Accordingly, intra-prediction blocks may represent image blocks as different relational prediction mode values instead of actual values. In addition, inter-prediction blocks can represent image blocks as motion vector values instead of actual values. In any case, in some cases the prediction blocks may not accurately represent the image blocks. Any differences are stored in residual blocks. Transformations can be applied to the remaining blocks to further compress the file.

[0053] На этапе 107 могут применяться различные методики фильтрации. В HEVC фильтры применяются в соответствии со схемой внутриконтурной фильтрации. Обсуждаемое выше предсказание на основе блоков может привести к созданию блочных изображений в декодере. Кроме того, схема предсказания на основе блоков может кодировать блок, а затем восстанавливать кодированный блок для последующего использования в качестве опорного блока. Схема внутриконтурной фильтрации итеративно применяет фильтры подавления шума, фильтры устранения блочности, адаптивные контурные фильтры и фильтры с адаптивным смещением дискретного отсчета (SAO) к блокам/кадрам. Эти фильтры уменьшают такие артефакты блокировки, чтобы можно было точно восстановить закодированный файл. Кроме того, эти фильтры уменьшают артефакты в восстановленных опорных блоках, так что артефакты с меньшей вероятностью создают дополнительные артефакты в последующих блоках, которые кодируются на основе восстановленных опорных блоков.[0053] At step 107, various filtering techniques may be applied. In HEVC, filters are applied according to an in-loop filtering scheme. The block-based prediction discussed above may result in blocky images in the decoder. In addition, the block-based prediction scheme can encode a block and then recover the encoded block for later use as a reference block. The in-loop filtering scheme iteratively applies denoising 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.

[0054] После того, как видеосигнал разделен, сжат и отфильтрован, полученные данные кодируются в битовом потоке на этапе 109. Битовый поток включает в себя данные, описанные выше, а также любые данные сигнализации, необходимые для поддержки надлежащего восстановления видеосигнала в декодере. Например, такие данные могут включать в себя данные разбиения, данные предсказания, остаточные блоки и различные флаги, предоставляющие инструкции кодирования для декодера. Битовый поток может храниться в памяти для передачи декодеру по запросу. Битовый поток также может быть широковещательным и/или многоадресным для множества декодеров. Создание битового потока - это итеративный процесс. Соответственно, этапы 101, 103, 105, 107 и 109 могут происходить непрерывно и/или одновременно во многих кадрах и блоках. Порядок, показанный на Фиг.1 представлен для ясности и простоты обсуждения и не предназначен для ограничения процесса видеокодирования конкретным порядком.[0054] After the video signal is separated, compressed, and filtered, the resulting data is encoded into a bitstream at step 109. The bitstream includes the data described 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 bitstream may be stored in memory for transmission to the decoder upon request. The bitstream may also be broadcast and/or multicast to multiple decoders. Creating a bitstream is an iterative process. Accordingly, steps 101, 103, 105, 107 and 109 may occur 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.

[0055] Декодер принимает битовый поток и начинает процесс декодирования на этапе 111. В частности, декодер использует схему энтропийного декодирования для преобразования битового потока в соответствующий синтаксис и видеоданные. Декодер использует синтаксические данные из битового потока для определения разбиений для кадров на этапе 111. Разбиение должно соответствовать результатам разбиения блока на этапе 103. Теперь описывается энтропийное кодирование/декодирование, используемое на этапе 111. Кодер осуществляет многократный выбор вариантов в процессе сжатия, таких как выбор схем разбиения на блоки из нескольких возможных вариантов на основе пространственного позиционирования значений во входном изображении(ях). Для сигнализации конкретного выбора может использоваться большое количество бинарных элементов (бинов). В данном контексте бинарный элемент - это двоичное значение, которое обрабатывается как переменная (например, битовое значение, которое может варьироваться в зависимости от контекста). Энтропийное кодирование позволяет кодеру отбросить любые варианты, которые явно не подходят для конкретного случая, оставив набор допустимых вариантов. Затем каждому допустимому варианту присваивается кодовое слово. Длина кодовых слов основана на количестве допустимых вариантов (например, один бинарный элемент для двух вариантов, два бинарных элемента для трех-четырех вариантов и т.д.) Затем кодер кодирует кодовое слово для выбранного варианта. Эта схема уменьшает размер кодовых слов, поскольку кодовые слова настолько велики, насколько желательно, чтобы однозначно указать выбор из небольшого поднабора допустимых вариантов, в отличие от однозначного указания выбора из потенциально большого набора всех возможных вариантов. Затем декодер декодирует выбор, определяя набор допустимых вариантов аналогично кодеру. Определив набор допустимых вариантов, декодер может считать кодовое слово и определить выбор, сделанный кодером.[0055] The decoder receives the bitstream and begins the decoding process at step 111. Specifically, the decoder uses an entropy decoding circuit to convert the bitstream into appropriate syntax and video data. The decoder uses syntax data from the bitstream to determine splits for frames at step 111. The split must correspond to the results of the block split at step 103. The entropy encoding/decoding used at step 111 is now described. The encoder makes multiple selections of options during the compression process, such as selecting schemes for dividing into blocks from several possible options based on the spatial positioning of values in the input image(s). A large number of binary elements (bins) can be used to signal a particular choice. In this context, a binary element is a binary value that is treated as a variable (for example, a bit value that can vary 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 is based on the number of valid options (for example, one binary element for two options, two binary elements for three to four options, etc.) The encoder then encodes the codeword for the selected option. This scheme reduces the size of codewords because the codewords are as large as desired 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 choice, 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.

[0056] На этапе 113 декодер выполняет блочное декодирование. В частности, декодер использует обратное преобразование для генерации остаточных блоков. Затем декодер использует остаточные блоки и соответствующие блоки предсказания для восстановления блоков изображения в соответствии с разбиением. Блоки предсказания могут включать в себя как блоки интра-предсказания, так и блоки интер-предсказания, сгенерированные в кодере на этапе 105. Блоки восстановленного изображения затем размещаются в кадрах восстановленного видеосигнала в соответствии с данными разбиения, определенными на этапе 111. Синтаксис для этапа 113 также может передаваться в битовом потоке посредством энтропийного кодирования, как описано выше.[0056] At step 113, the decoder performs block decoding. In particular, the decoder uses the inverse transform to generate residual blocks. The decoder then uses residual blocks and corresponding prediction blocks to reconstruct the image blocks according to the partitioning. The prediction blocks may include both intra-prediction blocks and inter-prediction blocks generated in 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. Syntax for step 113 can also be transmitted in a bit stream via entropy encoding as described above.

[0057] На этапе 115 выполняется фильтрация кадров восстановленного видеосигнала аналогично этапу 107 в кодере. Например, фильтры подавления шума, фильтры устранения блочности, адаптивные контурные фильтры и фильтры SAO могут применяться к кадрам для удаления артефактов блочности. После фильтрации кадров видеосигнал может выводиться на дисплей на этапе 117 для просмотра конечным пользователем.[0057] At step 115, frames of the reconstructed video signal are filtered, 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. After frame filtering, the video signal may be displayed at step 117 for viewing by the end user.

[0058] Фиг.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 буфера декодированных снимков. Теперь будут описаны эти компоненты.[0058] FIG. 2 is a schematic diagram of an exemplary encoding and decoding (codec) system 200 for video encoding. In particular, codec system 200 provides functionality to support implementation of operational method 100. Codec system 200 is generalized to depict components used in both an encoder and a decoder. Codec system 200 receives and splits the video signal as described with respect to steps 101 and 103 in operating method 100, resulting in a split video signal 201. Codec system 200 then compresses the split video signal 201 into an encoded bitstream, acting as an encoder, as described with respect to steps 105, 107, and 109 in method 100. Acting as a decoder, codec system 200 generates a video output signal from the bitstream as described with respect to steps 111, 113, 115, and 117 in operating method 100. Codec system 200 includes component 211 general encoder control, transform scaling and quantization component 213, intra-mode estimation component 215, intra-prediction component 217, motion compensation component 219, motion estimation component 221, scaling and inverse transform component 229, filter control analysis component 227, in-loop component 225 filters, a decoded snapshot buffer component 223, and a header formatting and context adaptive binary arithmetic coding (CABAC) component 231. Such components are connected as shown in FIG. 2, the black lines indicating the movement of data that must be encoded/decoded, and the dotted lines indicating the movement of control data that controls the operation of other components. All components of the codec system 200 may be present in the encoder. The decoder may include a subset of codec system 200 components. For example, the decoder may include an inter-prediction component 217, a motion compensation component 219, a scaling and inverse transform component 229, an in-loop filter component 225, and a decoded snapshot buffer component 223. These components will now be described.

[0059] Разделенный видеосигнал 201 представляет собой захваченную видеопоследовательность, которая была разделена на блоки пикселей с помощью дерева кодирования. Дерево кодирования использует различные режимы разделения для разделения блока пикселей на более мелкие блоки пикселей. Затем эти блоки можно разделить на более мелкие блоки. Блоки могут называться узлами в дереве кодирования. Более крупные родительские узлы разделяются на более мелкие дочерние узлы. Количество раз, когда узел делится на подразделения, называется глубиной дерева узлов/кодирования. В некоторых случаях разделенные блоки могут быть включены в единичные блоки кодирования (CU). Например, CU может быть частью CTU, которая содержит блок яркости, блок(-и) красной цветоразности (Cr) и блок(-и) синей цветоразности (Cb) вместе с соответствующими инструкциями синтаксиса для CU. Режимы разделения могут включать в себя двоичное дерево (BT), троичное дерево (TT) и квадратное дерево (QT), используемые для разделения узла на два, три или четыре дочерних узла, соответственно, различной формы в зависимости от применяемых режимов разделения. Разделенный видеосигнал 201 пересылается в компонент 211 общего управления кодером, компонент 213 масштабирования и квантования преобразования, компонент 215 оценки интра-режима, компонент 227 анализа управления фильтрами и компонент 221 оценки движения для сжатия.[0059] 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 smaller blocks. Blocks may be called nodes in a coding tree. Larger parent nodes are split into smaller child nodes. The number of times a node is divided into subdivisions is called the node/encoding tree depth. 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, chrominance red (Cr) block(s), and chrominance blue (Cb) block(s), along with corresponding syntax instructions for the CU. Partitioning modes may include binary tree (BT), ternary tree (TT), and square tree (QT), used to partition a node into two, three, or four child nodes, respectively, of varying shapes depending on the partitioning modes applied. The divided video signal 201 is sent to a general encoder control component 211, a transform scaling and quantization component 213, an intra-mode estimation component 215, a filter control analysis component 227, and a motion estimation component 221 for compression.

[0060] Компонент 211 общего управления кодером выполнен с возможностью принятия решений, связанных с кодированием изображений видеопоследовательности в битовый поток в соответствии с ограничениями применения. Например, компонент 211 общего управления кодером управляет оптимизацией скорости передачи/размера битового потока по сравнению с качеством восстановления. Такие решения могут быть приняты на основе доступности дискового пространства/полосы пропускания и запросов разрешения изображения. Компонент 211 общего управления кодером также управляет использованием буфера с учетом скорости передачи, чтобы уменьшить проблемы опустошения и переполнения буфера. Чтобы управлять этими проблемами, компонент 211 общего управления кодером управляет разбиением, предсказанием и фильтрацией с помощью других компонентов. Например, компонент 211 общего управления кодером может динамически увеличивать сложность сжатия для увеличения разрешения и увеличения использования полосы пропускания или уменьшения сложности сжатия для уменьшения разрешения и использования полосы пропускания. Следовательно, компонент 211 общего управления кодером управляет другими компонентами системы 200 кодека, чтобы сбалансировать качество восстановления видеосигнала с проблемами скорости передачи данных. Компонент 211 общего управления кодером создает данные управления, которые управляют работой других компонентов. Данные управления также направляются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке, чтобы сигнализировать параметры для декодирования в декодере.[0060] The general encoder control component 211 is configured to make decisions related to encoding images of a video sequence into a bitstream in accordance with application constraints. For example, the encoder general control component 211 controls the optimization of bitrate/bitstream size versus 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 based on the bit rate to reduce buffer underrun and overflow problems. To manage these issues, the general encoder control component 211 controls partitioning, prediction, and filtering with 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 codec system 200 to balance the quality of the video signal restoration with data 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.

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

[0062] Компонент 221 оценки движения и компонент 219 компенсации движения могут быть сильно интегрированы, но проиллюстрированы отдельно для концептуальных целей. Оценка движения, выполняемая компонентом 221 оценки движения, представляет собой процесс генерации векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение кодированного объекта относительно блока предсказания. Блок предсказания - это блок, который, как установлено, близко соответствует блоку, который должен быть кодирован, с точки зрения разности пикселей. Блок предсказания также может называться опорным блоком. Такая разность пикселей может определяться суммой абсолютной разности (SAD), суммой квадратов разности (SSD) или другими показателями разности. HEVC использует несколько закодированных объектов, включая CTU, блоки дерева кодирования (CTB) и CU. Например, CTU можно разделить на CTB, которые затем можно разделить на CB для включения в CU. CU может быть закодирован как единичный блок предсказания (PU), содержащий данные предсказания, и/или единичный блок преобразования (TU), содержащий преобразованные остаточные данные для CU. Компонент 221 оценки движения генерирует векторы движения, PU и TU, используя анализ искажения скорости как часть процесса оптимизации искажения скорости. Например, компонент 221 оценки движения может определять несколько опорных блоков, множество векторов движения и т.д. для текущего блока/кадра и может выбирать опорные блоки, векторы движения и т.д., имеющие наилучшие характеристики скорость-искажение. Наилучшие характеристики соотношения скорость-искажение уравновешивают как качество восстановления видео (например, количество потерь данных при сжатии), так и эффективность кодирования (например, размер окончательного кодирования).[0062] The motion estimation component 221 and the motion compensation component 219 may be highly integrated, but are illustrated separately for conceptual purposes. Motion estimation performed by motion estimation component 221 is a process for generating motion vectors that estimate motion for video blocks. The motion vector, for example, may indicate an offset of the encoded object relative to the prediction block. A prediction block is a block that is found to closely match the block to be encoded in terms of pixel difference. The prediction block may also be called a reference block. Such pixel difference may be determined by sum of absolute difference (SAD), sum of squared difference (SSD), or other difference measures. HEVC uses several encoded 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 transform unit (TU) containing transformed residual data for the CU. Motion estimation component 221 generates motion vectors, PUs and TUs, using speed distortion analysis as part of the speed 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 both video restoration quality (e.g., amount of data loss during compression) and encoding efficiency (e.g., final encoding size).

[0063] В некоторых примерах система 200 кодека может вычислять значения для положений суб-целочисленных пикселей опорных снимков, сохраненных в компоненте 223 буфера декодированных снимков. Например, система 200 видеокодека может интерполировать значения положений четверти пикселя, положений одной восьмой пикселя или других положений дробных пикселей опорного снимка. Следовательно, компонент 221 оценки движения может выполнять поиск движения относительно положений полных пикселей и положений дробных пикселей и выводить вектор движения с точностью до дробных пикселей. Компонент 221 оценки движения вычисляет вектор движения для PU видеоблока в сегменте с интер-кодированием путем сравнения положения PU с положением блока предсказания опорного снимка. Компонент 221 оценки движения выводит вычисленный вектор движения как данные движения для форматирования заголовка и компонент 231 CABAC для кодирования и движения в компонент 219 компенсации движения.[0063] In some examples, codec system 200 may calculate values for sub-integer pixel positions of reference pictures stored in decoded picture buffer component 223. For example, video codec system 200 may interpolate quarter-pixel position values, eighth-pixel positions, or other fractional pixel positions of a reference picture. Therefore, the motion estimation component 221 can search for motion with respect to full 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-encoding segment 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 encoding and motion CABAC component 231 to the motion compensation component 219 .

[0064] Компенсация движения, выполняемая компонентом 219 компенсации движения, может включать в себя выборку или генерацию блока предсказания на основе вектора движения, определенного компонентом 221 оценки движения. Опять же, в некоторых примерах компонент 221 оценки движения и компонент 219 компенсации движения могут быть функционально интегрированы. После приема вектора движения для PU текущего видеоблока компонент 219 компенсации движения может определить местонахождение блока предсказания, на который указывает вектор движения. Затем формируется остаточный видеоблок путем вычитания значений пикселей блока предсказания из значений пикселей текущего кодируемого видеоблока, формируя значения разности пикселей. В общем, компонент 221 оценки движения выполняет оценку движения относительно компонентов яркости, а компонент 219 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости как для компонентов цветности, так и для компонентов яркости. Блок предсказания и остаточный блок направляются в компонент 213 масштабирования и квантования преобразования.[0064] 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 relative 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 transform scaling and quantization component 213 .

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

[0066] Например, компонент 215 оценки интра-режима вычисляет значения скоростного искажения, используя анализ скоростного искажения для различных тестируемых режимов интра-предсказания, и выбирает режим интра-предсказания, имеющий лучшие характеристики скоростного искажения среди тестированных режимов. Анализ соотношения скорости к искажению обычно определяет величину искажения (или ошибки) между закодированным блоком и исходным не кодированным блоком, который был закодирован для создания закодированного блока, а также скорость передачи данных (например, количество битов), используемую для создания закодированного блока. Компонент 215 оценки интра-режима вычисляет отношения из искажений и скоростей для различных кодированных блоков, чтобы определить, какой режим интра-предсказания показывает наилучшее значение искажения скорости для блока. Кроме того, компонент 215 оценки интра-режима может быть выполнен с возможностью кодирования блоков глубины карты глубины с использованием режима моделирования глубины (DMM) на основе оптимизации скорости-искажения (RDO).[0066] For example, intra-mode evaluation component 215 calculates speed distortion values using speed distortion analysis for various intra-prediction modes tested, and selects the intra-prediction mode having the best speed distortion characteristics among the tested modes. Rate-to-distortion analysis typically determines the amount of distortion (or error) between a coded block and the original uncoded block that was coded to create the coded block, as well as the data rate (e.g., number of bits) used to create the coded block. The intra-mode estimation component 215 calculates the ratios of distortions and rates for various coded blocks to determine which intra-prediction mode shows the best rate distortion value for the block. In addition, the intra-mode estimation component 215 may be configured to encode the depth blocks of the depth map using a rate-distortion optimization (RDO)-based depth modeling mode (DMM).

[0067] Компонент 217 интра-предсказания может генерировать остаточный блок из блока предсказания на основе выбранных режимов интра-предсказания, определенных компонентом 215 оценки интра-режима, когда он реализован в кодере, или считывать остаточный блок из битового потока, когда реализован в декодере. Остаточный блок включает в себя разность в значениях между блоком предсказания и исходным блоком, представленную в виде матрицы. Остаточный блок затем пересылается в компонент 213 масштабирования и квантования преобразования. Компонент 215 оценки интра-режима и компонент 217 интра-предсказания могут работать как с компонентами яркости, так и с компонентами цветности.[0067] The intra-prediction component 217 may generate a residual block from the prediction block based on the selected intra-prediction modes determined by the intra-mode evaluation 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 transform scaling and quantization component 213 . The intra-mode estimation component 215 and the intra-prediction component 217 may operate on both luma and chroma components.

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

[0069] Компонент 229 масштабирования и обратного преобразования применяет обратную операцию компонента 213 масштабирования и квантования преобразования для поддержки оценки движения. Компонент 229 масштабирования и обратного преобразования применяет обратное масштабирование, преобразование и/или квантование для восстановления остаточного блока в области пикселей, например, для последующего использования в качестве опорного блока, который может стать блоком предсказания для другого текущего блока. Компонент 221 оценки движения и/или компонент 219 компенсации движения может вычислять опорный блок, добавляя остаточный блок обратно к соответствующему блоку предсказания для использования при оценке движения более позднего блока/кадра. Фильтры применяются к восстановленным опорным блокам для уменьшения артефактов, возникающих во время масштабирования, квантования и преобразования. В противном случае такие артефакты могут вызвать неточное предсказание (и создать дополнительные артефакты) при предсказании последующих блоков.[0069] The scaling and inverse transform component 229 applies the inverse operation of the transform scaling and quantization component 213 to support motion estimation. The scaling and detransforming component 229 applies descaling, transforming, and/or quantization to reconstruct a residual block in a 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 reduce artifacts introduced during scaling, quantization, and transformation. Otherwise, such artifacts may cause inaccurate prediction (and create additional artifacts) when predicting subsequent blocks.

[0070] Компонент 227 анализа управления фильтрами и компонент 225 внутриконтурных фильтров применяют фильтры к остаточным блокам и/или к восстановленным блокам изображения. Например, преобразованный остаточный блок из компонента 229 масштабирования и обратного преобразования может быть объединен с соответствующим блоком предсказания из компонента 217 интра-предсказания и/или компонента 219 компенсации движения для восстановления исходного блока изображения. Затем фильтры могут быть применены к восстановленному блоку изображения. В некоторых примерах вместо этого фильтры могут применяться к остаточным блокам. Как и в случае с другими компонентами на Фиг.2, компонент 227 анализа управления фильтрами и компонент 225 внутриконтурных фильтров сильно интегрированы и могут быть реализованы вместе, но изображены отдельно для концептуальных целей. Фильтры, применяемые к восстановленным опорным блокам, применяются к конкретным пространственным областям и включают несколько параметров для настройки того, как такие фильтры применяются. Компонент 227 анализа управления фильтрами анализирует восстановленные опорные блоки, чтобы определить, где такие фильтры должны быть применены, и устанавливает соответствующие параметры. Такие данные пересылаются в компонент 231 форматирования заголовка и CABAC в качестве данных управления фильтром для кодирования. Компонент 225 внутриконтурных фильтров применяет такие фильтры на основе данных управления фильтром. Фильтры могут включать в себя фильтр удаления блочности, фильтр подавления шума, фильтр SAO и адаптивный контурный фильтр. Такие фильтры могут применяться в пространственной/пиксельной области (например, в восстановленном блоке пикселей) или в частотной области, в зависимости от примера.[0070] The filter control analysis component 227 and the in-loop filter component 225 apply filters to the residual blocks and/or reconstructed image blocks. For example, the transformed residual block from the upscaling and inverse transform component 229 may be combined with the corresponding prediction block from the intra-prediction component 217 and/or the motion compensation component 219 to reconstruct 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 other components in FIG. 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 spatial regions and include several options to customize how such 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. Such filters may be applied in the spatial/pixel domain (eg, in a reconstructed block of pixels) or in the frequency domain, depending on the example.

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

[0072] Компонент 231 форматирования заголовка и CABAC принимает данные от различных компонентов системы 200 кодека и кодирует такие данные в кодированный битовый поток для передачи в декодер. В частности, компонент 231 форматирования заголовка и CABAC генерирует различные заголовки для кодирования данных управления, таких как общие данные управления и данные управления фильтром. Кроме того, данные предсказания, включая данные интра-предсказания и движения, а также остаточные данные в форме квантованных данных коэффициентов преобразования, все кодируются в битовом потоке. Конечный битовый поток включает в себя всю информацию, требуемую декодером для восстановления исходного разделенного видеосигнала 201. Такая информация может также включать в себя таблицы индексов режима интра-предсказания (также называемые таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, указания наиболее вероятных режимов интра-предсказания, указание информации о разделах и т.д. Такие данные могут быть закодированы с использованием энтропийного кодирования. Например, информация может быть закодирована с использованием контекстно-адаптивного кодирования с переменной длиной (CAVLC), CABAC, основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с вероятностным интервалом разделения (PIPE) или другого метода энтропийного кодирования. После энтропийного кодирования закодированный битовый поток может быть передан на другое устройство (например, видеодекодер) или заархивирован для последующей передачи или поиска.[0072] Header formatting and CABAC component 231 receives data from various components of codec system 200 and encodes such data into a coded bitstream for transmission to the decoder. Specifically, the header and CABAC formatting component 231 generates various headers for encoding control data such as general control data and filter control data. In addition, prediction data, including intra-prediction and motion data, as well as residual data in the form of quantized transform coefficient data, are all encoded in the bitstream. The final bitstream includes all information required by the decoder to reconstruct the original split video signal 201. Such information may also include intra-prediction mode index tables (also called codeword mapping tables), definitions of encoding contexts for various blocks, indications of the most likely intra-prediction modes, indicating information about sections, 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 interval separation entropy encoding (PIPE), or another entropy encoding method. After entropy encoding, the encoded bitstream can be transferred to another device (such as a video decoder) or archived for later transmission or retrieval.

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

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

[0075] Преобразованные и квантованные остаточные блоки и/или соответствующие блоки предсказания также направляются из компонента 313 преобразования и квантования в компонент 329 обратного преобразования и квантования для восстановления в опорные блоки для использования компонентом 321 компенсации движения. Компонент 329 обратного преобразования и квантования может быть по существу аналогичен компоненту 229 масштабирования и обратного преобразования. Контурные фильтры в компоненте 325 внутриконтурных фильтров также применяются к остаточным блокам и/или восстановленным опорным блокам, в зависимости от примера. Компонент 325 внутриконтурных фильтров может быть по существу аналогичен компоненту 227 анализа управления фильтрами и компоненту 225 внутриконтурных фильтров. Компонент 325 внутриконтурных фильтров может включать в себя несколько фильтров, как обсуждалось в отношении компонента 225 внутриконтурных фильтров. Отфильтрованные блоки затем сохраняются в компоненте 323 буфера декодированных снимков для использования в качестве опорных блоков компонентом 321 компенсации движения. Компонент 323 буфера декодированных снимков может быть по существу аналогичен компоненту 223 буфера декодированных снимков.[0075] 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 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 multiple filters, as discussed with respect to the in-loop filter component 225. The filtered blocks are then stored in the decoded snapshot buffer component 323 for use as reference blocks by the motion compensation component 321 . The decoded snapshot buffer component 323 may be substantially similar to the decoded snapshot buffer component 223.

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

[0077] Битовый поток принимается компонентом 433 энтропийного декодирования. Компонент 433 энтропийного декодирования выполнен с возможностью реализации схемы энтропийного декодирования, такой как CAVLC, CABAC, SBAC, PIPE-кодирование или другие методики энтропийного кодирования. Например, компонент 433 энтропийного декодирования может использовать информацию заголовка, чтобы предоставить контекст для интерпретации дополнительных данных, закодированных как кодовые слова в битовом потоке. Декодированная информация включает в себя любую желаемую информацию для декодирования видеосигнала, такую как общие данные управления, данные управления фильтром, информацию о разделах, данные движения, данные предсказания и квантованные коэффициенты преобразования из остаточных блоков. Квантованные коэффициенты преобразования направляются в компонент 429 обратного преобразования и квантования для восстановления в остаточные блоки. Компонент 429 обратного преобразования и квантования может быть аналогичен компоненту 329 обратного преобразования и квантования.[0077] The bit stream 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 encoding, or other entropy encoding techniques. For example, entropy decoding component 433 may use header information to provide context for interpreting additional data encoded as codewords in the bitstream. The decoded information includes any desired information for decoding a video signal, such as general control data, filter control data, section 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 .

[0078] Восстановленные остаточные блоки и/или блоки предсказания пересылаются в компонент 417 интра-предсказания для восстановления в блоки изображения на основе операций интра-предсказания. Компонент 417 интра-предсказания может быть аналогичен компоненту 215 оценки интра-режима и компоненту 217 интра-предсказания. В частности, компонент 417 интра-предсказания использует режимы предсказания, чтобы найти опорный блок в кадре, и применяет остаточный блок к результату для восстановления блоков изображения с интра-предсказанием. Восстановленные блоки изображения с интра-предсказанием и/или остаточные блоки и соответствующие данные интер-предсказания пересылаются в компонент 423 буфера декодированных снимков через компонент 425 внутриконтурных фильтров, который может быть по существу аналогичен компоненту 223 буфера декодированных снимков и компонент 225 внутриконтурных фильтров соответственно. Компонент 425 внутриконтурных фильтров фильтрует блоки восстановленных изображений, остаточные блоки и/или блоки предсказания, и такая информация сохраняется в компоненте 423 буфера декодированных снимков. Восстановленные блоки изображения из компонента 423 буфера декодированных снимков пересылаются в компонент 421 компенсации движения для интер-предсказания. Компонент 421 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и/или компоненту 219 компенсации движения. В частности, компонент 421 компенсации движения использует векторы движения из опорного блока для генерации блока предсказания и применяет остаточный блок к результату для восстановления блока изображения. Результирующие восстановленные блоки также могут быть отправлены через компонент 425 внутриконтурных фильтров в компонент 423 буфера декодированных снимков. Компонент 423 буфера декодированных снимков продолжает хранить дополнительные восстановленные блоки изображения, которые могут быть преобразованы в кадры через информацию о разбиении. Такие кадры также можно размещать последовательно. Последовательность выводится на дисплей как восстановленный выходной видеосигнал.[0078] The reconstructed residual blocks and/or prediction blocks are sent to the intra-prediction component 417 for reconstruction into image blocks based on the intra-prediction operations. The intra-prediction component 417 may be similar to the intra-mode evaluation component 215 and the intra-prediction component 217 . Specifically, intra-prediction component 417 uses prediction modes to find a reference block in a frame, and applies a residual block to the result to reconstruct intra-prediction image blocks. The reconstructed intra-predicted image blocks and/or residual blocks and corresponding inter-prediction data are sent to the decoded shot buffer component 423 through the in-loop filter component 425, which may be substantially similar to the decoded shot buffer component 223 and 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 picture buffer component 423. The reconstructed image blocks from the decoded snapshot buffer component 423 are sent to the motion compensation component 421 for inter-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 generate a prediction block and applies the residual block to the result to reconstruct the image block. The resulting reconstructed blocks may also be sent through the in-loop filter component 425 to the decoded snapshot buffer component 423. The decoded snapshot buffer component 423 continues to store additional reconstructed image blocks that can be converted into frames via splitting information. Such frames can also be placed sequentially. The sequence is displayed as a reconstructed video output.

[0079] Фиг.5 является принципиальной схемой, иллюстрирующей множество видеопотоков 501, 502 и 503 подснимков, извлеченных из видеопотока 500 снимков. Например, каждый из видеопотоков 501-503 подснимков и/или видеопотока 500 снимков может быть закодирован кодером, например системой 200 кодека и/или кодером 300, согласно способу 100. Кроме того, видеопотоки 501-503 подснимков и/или видеопоток 500 снимков могут быть декодированы декодером, например системой 200 кодека и/или декодером 400.[0079] FIG. 5 is a schematic diagram illustrating a plurality of sub-picture video streams 501, 502, and 503 extracted from the picture video stream 500. For example, each of the sub-shot video streams 501-503 and/or the shot video stream 500 may be encoded by an encoder, such as a codec system 200 and/or an encoder 300, according to method 100. In addition, the sub-shot video streams 501-503 and/or the shot video stream 500 may be decoded by a decoder, such as codec system 200 and/or decoder 400.

[0080] Видеопоток 500 снимков включает в себя множество снимков, представленных во времени. Видеопоток 500 снимков, как показано на Фиг.5, сконфигурирован для использования в приложении виртуальной реальности (VR). VR работает путем кодирования сферы видеоконтента, который может отображаться так, как если бы пользователь находился в центре сферы. Каждый снимок включает в себя всю сферу. Между тем, пользователю отображается только часть снимка, известная как область просмотра. Например, пользователь может использовать головной дисплей (HMD), который выбирает и отображает область просмотра сферы на основе движения головы пользователя. Это создает впечатление физического присутствия в виртуальном пространстве, как показано на видео. Для достижения этого результата каждый снимок видеопоследовательности включает в себя всю сферу видеоданных в соответствующий момент времени. Однако пользователю отображается только небольшая часть (например, одно окно просмотра) снимка. Остальная часть снимка отбрасывается в декодере без визуализации. Весь снимок может быть передан так, чтобы можно было динамически выбирать и отображать другое окно просмотра в ответ на движение головы пользователя.[0080] The video stream 500 pictures includes a plurality of pictures represented over time. A video stream of 500 pictures, as shown in FIG. 5, is configured for use in a virtual reality (VR) application. VR works by encoding a sphere of video content that can be displayed as if the user were in the center of the sphere. Each shot includes the entire sphere. Meanwhile, only a portion of the photo, known as the viewing area, is shown to the user. For example, a user may use a head-mounted display (HMD) that selects and displays a viewing area of a sphere based on the movement of the user's head. This creates the impression of a physical presence in the virtual space, as shown in the video. To achieve this result, each snapshot of a video sequence includes the entire sphere of video data at the corresponding point in time. However, only a small part (for example, one viewport) of the photo is shown to the user. The rest of the image is discarded in the decoder without rendering. The entire snapshot can be transmitted so that a different viewport can be dynamically selected and displayed in response to the user's head movement.

[0081] В показанном примере каждый снимок видеопотока 500 снимков может быть подразделен на подснимки на основе доступных окон просмотра. Соответственно, каждый снимок и соответствующий подснимок включает в себя временную позицию (например, порядок снимков) как часть временного представления. Видеопотоки 501-503 подснимков создаются, когда подразделение применяется последовательно во времени. Такое согласованное подразделение создает видеопотоки 501-503 подснимков, где каждый поток содержит набор подснимков предварительно определенного размера, формы и пространственного положения относительно соответствующих снимков в видеопотоке 500 снимков. Кроме того, набор подснимков в видеопотоке 501-503 подснимков изменяется во временной позиции в течение времени представления. По существу, подснимки видеопотоков 501-503 подснимков могут быть выровнены во временной области на основе временной позиции. Затем подснимки из видеопотоков 501-503 подснимков в каждой временной позиции могут быть объединены в пространственной области на основе предварительно определенной пространственной позиции, чтобы восстановить видеопоток 500 снимков для отображения. В частности, каждый из видеопотоков 501-503 подснимков может быть закодирован в отдельные битовые подпотоки. Когда такие битовые подпотоки объединяются вместе, они приводят к битовому потоку, который включает в себя весь набор изображений с течением времени. Результирующий битовый поток может быть передан в декодер для декодирования и отображения на основе текущего выбранного пользователем окна просмотра.[0081] In the example shown, each picture of a video stream of 500 pictures may be divided into sub-pictures based on available viewports. Accordingly, each snapshot and corresponding sub-picture includes a temporal position (eg, snapshot order) as part of the temporal representation. Sub-picture video streams 501-503 are created when subdivision is applied sequentially over time. This consistent subdivision creates sub-picture video streams 501-503, where each stream contains a set of sub-pictures of a predetermined size, shape, and spatial position relative to corresponding pictures in the video snapshot stream 500. In addition, the set of sub-pictures in the sub-picture video stream 501-503 changes in time position during the presentation time. As such, sub-pictures of sub-picture video streams 501-503 may be aligned in the time domain based on time position. Sub-pictures from the sub-picture video streams 501-503 at each time position can then be combined into a spatial domain based on the predetermined spatial position to reconstruct the video snapshot stream 500 for display. In particular, each of the sub-picture video streams 501-503 may be encoded into separate bit sub-streams. When such sub-bitstreams are combined together, they result in a bitstream that includes the entire set of images over time. The resulting bitstream can be passed to the decoder for decoding and display based on the user's currently selected viewport.

[0082] Одна из проблем с видео VR заключается в том, что все видеопотоки 501-503 подснимков могут быть переданы пользователю с высоким качеством (например, с высоким разрешением). Это позволяет декодеру динамически выбирать текущее окно просмотра пользователя и отображать подснимок(и) из соответствующих видеопотоков 501-503 подснимков в реальном времени. Однако пользователь может просматривать только одно окно просмотра, например, из видеопотока 501 подснимков, в то время как видеопотоки 502-503 подснимков отбрасываются. Как таковая передача видеопотоков 502-503 подснимков с высоким качеством может использовать значительную часть полосы пропускания, не обеспечивая соответствующего преимущества для пользователя. Чтобы повысить эффективность кодирования, видео VR может быть закодировано во множество видеопотоков 500, где каждый видеопоток 500 кодируется с разным качеством/разрешением. Таким образом, декодер может передать запрос текущего видеопотока 501 подснимков. В ответ кодер (или промежуточное средство видиомонтажа, или другой сервер контента) может выбрать видеопоток 501 подснимков более высокого качества из видеопотока 500 более высокого качества и видеопотоки 502-503 подснимков более низкого качества из видеопотока 500 более низкого качества. Затем кодер может объединить такие битовые подпотоки вместе в полный кодированный битовый поток для передачи в декодер. Таким образом, декодер получает серию снимков, где текущее окно просмотра имеет более высокое качество, а другие окна просмотра - более низкого качества. Кроме того, подснимки наивысшего качества обычно отображаются пользователю (при отсутствии движения головы), а подснимки более низкого качества обычно отбрасываются, что уравновешивает функциональность с эффективностью кодирования.[0082] One of the problems with VR video is that all sub-picture video streams 501-503 may be delivered to the user in high quality (eg, high resolution). This allows the decoder to dynamically select the user's current viewport and display the sub-shot(s) from the corresponding sub-shot video streams 501-503 in real time. However, the user can view only one viewport, for example, from the sub-picture video stream 501, while the sub-picture video streams 502-503 are discarded. As such, transmitting high quality sub-picture video streams 502-503 may consume a significant amount of bandwidth without providing a corresponding benefit to the user. To improve encoding efficiency, the VR video may be encoded into multiple video streams 500, where each video stream 500 is encoded at a different quality/resolution. Thus, the decoder can transmit a request for the current sub-picture video stream 501. In response, the encoder (or middleware or other content server) may select higher quality sub-shot video stream 501 from higher quality video stream 500 and lower quality sub-shot video streams 502-503 from lower quality video stream 500. The encoder can then combine such sub-bitstreams together into a complete encoded bitstream for transmission to the decoder. Thus, the decoder receives a series of snapshots where the current viewport is of higher quality and other viewports are of lower quality. Additionally, the highest quality sub-pictures are typically displayed to the user (in the absence of head movement), while lower quality sub-pictures are typically discarded, balancing functionality with encoding efficiency.

[0083] В случае, если пользователь переключается с просмотра видеопотока 501 подснимков на видеопоток 502 подснимков, декодер запрашивает передачу нового текущего видеопотока 502 подснимков с более высоким качеством. Затем кодер может соответствующим образом изменить механизм объединения.[0083] In the event that the user switches from viewing sub-picture video stream 501 to sub-picture video stream 502, the decoder requests transmission of a new current sub-picture video stream 502 with higher quality. The encoder can then change the combining mechanism accordingly.

[0084] Видеопоток 500 снимков включен для описания практического применения подснимков. Следует отметить, что подснимки имеют множество применений, и настоящее раскрытие не ограничивается технологией VR. Например, подснимки также могут использоваться в системах телеконференцсвязи. В таком случае видеопоток каждого пользователя включается в битовый поток подснимков, такой как видеопоток 501, 502 и/или 503 подснимков. Система может принимать такой видеопоток 501, 502 и/или 503 подснимков и объединять их в различных позициях, разрешениях и т.д. Для создания видеопотока 500 полного снимка для передачи обратно пользователю. Это позволяет системе телеконференцсвязи динамически изменять видеопоток 500 снимков на основе изменения ввода пользователя, например, путем увеличения или уменьшения размера видеопотока 501, 502 и/или 503 подснимков, чтобы выделить пользователей, которые в данный момент разговаривают или убрать акцент с пользователей, которые больше не разговаривают. Соответственно, подснимки имеют множество применений, которые позволяют динамически изменять видеопоток 500 снимков во время выполнения на основе изменений в поведении пользователя. Эта функциональность может быть достигнута путем извлечения и/или объединения видеопотока 501, 502 и/или 503 подснимков из и/или в видеопоток 500 снимков.[0084] A video stream of 500 pictures is included to describe the practical application of the sub-pictures. It should be noted that sub-pictures have many uses, and the present disclosure is not limited to VR technology. For example, sub-images can also be used in teleconferencing systems. In such a case, each user's video stream is included in a sub-picture bitstream, such as sub-picture video stream 501, 502 and/or 503. The system may receive such video stream 501, 502 and/or 503 sub-pictures and combine them at various positions, resolutions, etc. To create a video stream 500 of a complete snapshot for transmission back to the user. This allows the teleconferencing system to dynamically change the video stream 500 based on changes in user input, for example, by increasing or decreasing the size of the video stream 501, 502 and/or 503 to highlight users who are currently talking or to remove emphasis from users who are no longer talking. talking. Accordingly, sub-snapshots have many uses that allow the video stream of 500 snapshots to be dynamically changed at runtime based on changes in user behavior. This functionality can be achieved by extracting and/or combining the sub-picture video stream 501, 502 and/or 503 from and/or into the 500-picture video stream.

[0085] Фиг.6 является принципиальной схемой, иллюстрирующей примерный битовый поток 600, разделенный на битовый подпоток 601. Битовый поток 600 может содержать видеопоток снимков, такой как видеопоток 500 снимков, а битовый подпоток 601 может содержать видеопоток подснимков, такой как видеопоток 501, 502 и/или 503 подснимков. Например, битовый поток 600 и битовый подпоток 601 могут быть сгенерированы системой 200 кодека и/или кодером 300 для декодирования системой 200 кодека и/или декодером 400. В качестве другого примера битовый поток 600 и битовый подпоток 601 могут быть сгенерированы кодером на этапе 109 способа 100 для использования декодером на этапе 111.[0085] FIG. 6 is a schematic diagram illustrating an example bit stream 600 divided into a sub-bit stream 601. The bit stream 600 may comprise a snapshot video stream, such as snapshot video stream 500, and the sub-bit stream 601 may comprise a sub-picture video stream, such as video stream 501. 502 and/or 503 sub-images. For example, bitstream 600 and subbitstream 601 may be generated by codec system 200 and/or encoder 300 for decoding by codec system 200 and/or decoder 400. As another example, bitstream 600 and subbitstream 601 may be generated by encoder at method step 109 100 for use by the decoder at step 111.

[0086] Битовый поток 600 включает в себя набор параметров последовательности (SPS) 610, множество наборов параметров снимка (PPS) 611, множество заголовков 615 сегментов и данные 620 изображения. SPS 610 содержит данные последовательности, общие для всех снимков в видеопоследовательности, содержащейся в битовом потоке 600. Такие данные могут включать в себя размер снимка, битовую глубину, параметры инструмента кодирования, ограничения битовой скорости и т.д. PPS 611 содержит параметры, которые применяются ко всему снимку. Следовательно, каждый снимок в видеопоследовательности может относиться к PPS 611. Следует отметить, что, хотя каждый снимок относится к PPS 611, в некоторых примерах один PPS 611 может содержать данные для нескольких снимков. Например, несколько одинаковых снимков могут быть закодированы согласно аналогичным параметрам. В таком случае один PPS 611 может содержать данные для таких похожих снимков. PPS 611 может указывать инструменты кодирования, доступные для сегментов в соответствующих снимках, параметры квантования, смещения и т.д. Заголовок 615 сегмента содержит параметры, которые специфичны для каждого сегмента в снимке. Следовательно, может быть один заголовок 615 сегмента на каждый сегмент в видеопоследовательности. Заголовок 615 сегмента может содержать информацию о типе сегмента, порядковые номера снимков (POC), списки опорных снимков, веса предсказания, точки входа в клетку, параметры удаления блочности и т.д. Следует отметить, что заголовок 615 сегмента также может называться заголовком группы клеток в некоторых контекстах. Следует отметить, что в некоторых примерах битовый поток 600 может также включать в себя заголовок снимка, который представляет собой синтаксическую структуру, содержащую параметры, которые применяются ко всем сегментам в одном снимке. По этой причине заголовок снимка и заголовок 615 сегмента могут использоваться взаимозаменяемо в некоторых контекстах. Например, некоторые параметры могут перемещаться между заголовком 615 сегмента и заголовком снимка в зависимости от того, являются ли такие параметры общими для всех сегментов в снимке.[0086] Bitstream 600 includes a sequence parameter set (SPS) 610, a plurality of picture parameter sets (PPS) 611, a plurality of segment headers 615, and image data 620. SPS 610 contains sequence data common to all snapshots in the video sequence contained in bitstream 600. Such data may include snapshot size, bit depth, encoding tool parameters, bit rate limits, etc. PPS 611 contains settings that apply to the entire photo. Therefore, each picture in a video sequence may be assigned to a PPS 611. It should be noted that although each picture is assigned to a PPS 611, in some examples one PPS 611 may contain data for multiple pictures. For example, several identical pictures can be encoded according to similar parameters. In this case, one PPS 611 can contain data for such similar pictures. PPS 611 may indicate the encoding tools available for segments in the corresponding snapshots, quantization parameters, offsets, etc. The segment header 615 contains parameters that are specific to each segment in the snapshot. Therefore, there may be one segment header 615 per segment in the video sequence. The segment header 615 may contain segment type information, snapshot sequence numbers (POCs), reference snapshot lists, prediction weights, cell entry points, deblocking parameters, etc. It should be noted that segment header 615 may also be referred to as cell group header in some contexts. It should be noted that in some examples, bitstream 600 may also include a snapshot header, which is a syntactic structure containing parameters that apply to all segments in a single snapshot. For this reason, the snapshot header and segment header 615 may be used interchangeably in some contexts. For example, some parameters may move between the segment header 615 and the snapshot header depending on whether such parameters are common to all segments in the snapshot.

[0087] Данные 620 изображения содержат видеоданные, закодированные согласно интер-предсказанию, интра-предсказанию и/или межуровневому предсказанию, а также соответствующие преобразованные и квантованные остаточные данные. Например, видеопоследовательность включает в себя множество снимков 621. Снимок 621 - это массив дискретных отсчетов яркости и/или массив дискретных отсчетов цветности, которые создают кадр или его поле. Кадр - это полное изображение, которое предназначено для полного или частичного отображения пользователю в соответствующий момент в видеопоследовательности. Снимок 621 содержит один или более сегментов. Сегмент может быть определен как целое число полных клеток или целое число последовательных полных строк CTU (например, внутри клетки) снимка 621, которые содержатся исключительно в одном единичном блоке NAL. Сегменты далее делятся на CTU и/или CTB. CTU - это группа дискретных отсчетов заранее определенного размера, которые могут быть разделены деревом кодирования. CTB является поднабором CTU и содержит компоненты яркости или компоненты цветности CTU. CTU/CTB дополнительно делятся на блоки кодирования на основе деревьев кодирования. Затем блоки кодирования можно кодировать/декодировать согласно механизмам предсказания.[0087] Image data 620 includes video data encoded according to inter-prediction, intra-prediction and/or inter-layer prediction, as well as corresponding transformed and quantized residual data. For example, a video sequence includes a plurality of pictures 621. A picture 621 is an array of luminance samples and/or an array of chrominance samples that create a frame or field thereof. A frame is a complete image that is intended to be displayed in whole or in part to the user at the appropriate moment in the video sequence. Picture 621 contains one or more segments. A segment may be defined as an integer number of complete cells or an integer number of consecutive complete CTU lines (eg, within a cell) of snapshot 621 that are contained solely in one NAL unit block. Segments are further divided into CTU and/or CTB. A CTU is a group of discrete samples of a predetermined size that can be separated by a coding tree. CTB is a subset of CTU and contains the luma components or chrominance components of the CTU. CTU/CTB are further divided into coding blocks based on coding trees. The encoding blocks can then be encoded/decoded according to prediction mechanisms.

[0088] Снимок 621 может быть разделен на множество подснимков 623 и 624. Подснимок 623 и/или 624 представляет собой прямоугольную область из одного или более сегментов в снимке 621. Следовательно, каждый из сегментов и их подразделов может быть назначен подснимку 623 и/или 624. Это позволяет обрабатывать различные области снимка 621 по-разному с точки зрения кодирования в зависимости от того, какой подснимок 623 и/или 624 включен в такие области.[0088] Picture 621 may be divided into a plurality of sub-pictures 623 and 624. Sub-picture 623 and/or 624 is a rectangular area of one or more segments in snapshot 621. Therefore, each of the segments and sub-pictures thereof may be assigned to sub-picture 623 and/or 624. This allows different areas of the picture 621 to be treated differently from an encoding perspective depending on which sub-picture 623 and/or 624 is included in such areas.

[0089] Битовый подпоток 601 может быть извлечен из битового потока 600 в соответствии с процессом 605 извлечения битового подпотока. Процесс 605 извлечения битового подпотока - это заданный механизм, который удаляет единичные блоки NAL из битового потока, которые не являются частью целевого набора, что приводит к выходному битовому подпотоку, который включает в себя единичные блоки NAL, которые включены в целевой набор. Единичный блок NAL содержит сегмент. По существу, процесс 605 извлечения битового подпотока сохраняет целевой набор сегментов и удаляет другие сегменты. Целевой набор может быть выбран на основе границ подснимка. В показанном примере сегменты, которые содержатся в подснимке 623, включены в целевой набор, а сегменты, которые включены в подснимок 624, не включены в целевой набор. По существу, процесс 605 извлечения битового подпотока создает битовый подпоток 601, который по существу аналогичен битовому потоку 600, но содержит подснимок 623, исключая подснимок 624. Процесс 605 извлечения битового подпотока может выполняться кодером и/или связанным средством видеомонтажа, выполненным с возможностью динамического изменения битового потока 600 на основе поведения/запросов пользователя.[0089] The subbitstream 601 may be extracted from the bitstream 600 in accordance with the subbitstream extraction process 605. The subbitstream extraction process 605 is a defined mechanism that removes NAL units from the bitstream that are not part of the target set, resulting in an output subbitstream that includes NAL units that are included in the target set. A single NAL block contains a segment. Essentially, the subbitstream extraction process 605 retains the target set of segments and removes other segments. The target set can be selected based on the sub-image boundaries. In the example shown, the segments that are contained in subphoto 623 are included in the target set, and the segments that are included in subphoto 624 are not included in the target set. Essentially, the sub-bitstream extraction process 605 creates a sub-bitstream 601 that is substantially the same as the bitstream 600 but contains a sub-picture 623 excluding sub-picture 624. The sub-bitstream extraction process 605 may be performed by an encoder and/or associated video editing engine configured to dynamically change 600 bitstream based on user behavior/requests.

[0090] Соответственно, битовый подпоток 601 является извлеченным битовым потоком, который является результатом процесса 605 извлечения битового подпотока, примененного к входному битовому потоку 600. Входной битовый поток 600 содержит набор подснимков. Однако извлеченный битовый поток (например, подпоток 601) содержит только поднабор подснимков входного битового потока 600 для процесса 605 извлечения битового подпотока. В показанном примере набор подснимков, содержащихся во входном битовом потоке 600, включает в себя подснимки 623 и 624, в то время как поднабор подснимков в битовом подпотоке 601 включает в себя подснимок 623, но не подснимок 624. Следует отметить, что может использоваться любое количество подснимков 623-624. Например, битовый поток 600 может включать в себя N подснимков 623-624, а битовый подпоток 601 может содержать N-1 или меньше подснимков 623, где N - любое целочисленное значение.[0090] Accordingly, subbitstream 601 is an extracted bitstream that is the result of a subbitstream extraction process 605 applied to input bitstream 600. Input bitstream 600 contains a set of subpictures. However, the extracted bitstream (eg, substream 601) contains only a subset of subsnapshots of the input bitstream 600 for the subbitstream extraction process 605. In the example shown, the set of subpictures contained in input bitstream 600 includes subpictures 623 and 624, while the subset of subpictures in subbitstream 601 includes subpicture 623 but not subpicture 624. It should be noted that any number may be used sub-images 623-624. For example, bitstream 600 may include N sub-pictures 623-624, and sub-bitstream 601 may contain N-1 or fewer sub-pictures 623, where N is any integer value.

[0091] Процесс 605 извлечения битового подпотока может в некоторых случаях создавать ошибки кодирования. Например, подснимки 623-624 могут быть связаны с информацией о подснимках, такой как идентификаторы подснимков. Идентификатор подснимка однозначно идентифицирует соответствующий подснимок, такой как подснимок 623 или 624. Соответственно, идентификаторы подснимков могут использоваться для указания местоположения подснимков 623-624 относительно снимка 621 и/или для внесения изменений в процесс кодирования на уровне подснимков. В некоторых случаях информация о подснимках может быть логически выведена на основании позиции подснимков 623-624. Соответственно, битовый поток 600 может опускать такую информацию о подснимках, относящуюся к подснимкам 623 и 624, чтобы уменьшить количество данных в битовом потоке 600, чтобы повысить эффективность кодирования. Однако декодер может быть неспособен вывести такую информацию о подснимках, когда подснимка 623 или подснимка 624 нет. По существу, упрощенный процесс 605 извлечения битового подпотока может применяться к соответствующему битовому потоку 600 и создавать несоответствующий битовый подпоток 601. Битовый поток 600/битовый подпоток 601 соответствует, когда битовый поток 600/битовый подпоток 601 соответствует стандарту, например VVC, и, следовательно, может быть правильно декодирован любым декодером, который также соответствует стандарту. По существу, упрощенный процесс 605 извлечения битового подпотока может преобразовывать декодируемый битовый поток 600 в битовый подпоток 601, который не декодируется.[0091] The subbitstream extraction process 605 may in some cases create encoding errors. For example, sub-pictures 623-624 may be associated with sub-picture information, such as sub-picture identifiers. A sub-picture identifier uniquely identifies a corresponding sub-picture, such as sub-picture 623 or 624. Accordingly, sub-picture identifiers can be used to indicate the location of sub-pictures 623-624 relative to picture 621 and/or to make changes to the sub-picture level encoding process. In some cases, sub-picture information may be inferred based on the position of sub-pictures 623-624. Accordingly, bitstream 600 may omit such sub-picture information related to sub-pictures 623 and 624 to reduce the amount of data in bitstream 600 to improve encoding efficiency. However, the decoder may be unable to output such sub-picture information when sub-picture 623 or sub-picture 624 does not exist. As such, the simplified subbitstream extraction process 605 can be applied to the corresponding bitstream 600 and produce a non-conforming subbitstream 601. Bitstream 600/subbitstream 601 conforms when bitstream 600/subbitstream 601 conforms to a standard, such as VVC, and therefore can be correctly decoded by any decoder that also complies with the standard. As such, a simplified subbitstream extraction process 605 can convert a decodable bitstream 600 into a subbitstream 601 that is not decoded.

[0092] Чтобы решить эту проблему, настоящее раскрытие включает в себя улучшенный процесс 605 извлечения битового подпотока. В частности, процесс 605 извлечения битового подпотока кодирует идентификаторы подснимков для подснимка(ов) 623 в битовом подпотоке 601, даже когда такие идентификаторы подснимков опущены из битового потока 600. Например, идентификаторы подснимков могут быть включены в синтаксическую структуру 635 идентификатора подснимка SPS (sps_subpic_id [i]). Синтаксическая структура 635 sps_subpic_id [i] включена в SPS 610 и включает в себя i идентификаторов (ID) подснимков, где i - количество подснимков 623, содержащихся в битовом подпотоке 601. Кроме того, процесс 605 извлечения битового подпотока может также кодировать длину в битах синтаксического элемента (например, синтаксическая структура 635 sps_subpic_id [i]), содержащего один или более идентификаторов подснимков, в извлеченный битовый поток. Например, длина может быть включена в синтаксическую структуру 633 длины идентификаторов подснимков SPS минус один (sps_subpic_id_len_minus1). Синтаксическая структура 633 sps_subpic_id_len_minus1 может содержать длину в битах синтаксической структуры 635 sps_subpic_id [i] минус один. Подход «минус один» кодирует значение на единицу меньше фактического значения, чтобы сэкономить биты. Декодер может получить фактическое значение, добавив единицу. По существу, синтаксическая структура 633 sps_subpic_id_len_minus1 может также называться sps_subpic_id_len_minus1 plus 1. Соответственно, декодер может использовать синтаксическую структуру 633 sps_subpic_id_len_minus1 для определения количества битов, которые связаны с синтаксической структурой 635 sps_subpic_id [i], и, следовательно, может использовать синтаксическую структуру 633 sps_subpic_id_len_minus1 для интерпретации синтаксической структуры sps_subpic_id [i]. Затем декодер может декодировать подснимок 623 на основе синтаксической структуры 633 sps_subpic_id_len_minus1 и синтаксической структуры 635 sps_subpic_id [i].[0092] To solve this problem, the present disclosure includes an improved bitstream extraction process 605. In particular, the subpicture extraction process 605 encodes the subpicture identifiers for subpicture(s) 623 in the subbitstream 601, even when such subpicture identifiers are omitted from the bitstream 600. For example, the subpicture identifiers may be included in the SPS subpicture identifier syntax structure 635 (sps_subpic_id[ i]). The syntax structure 635 sps_subpic_id[i] is included in the SPS 610 and includes i subpicture identifiers (IDs), where i is the number of subpictures 623 contained in the bitstream 601. In addition, the subbitstream extraction process 605 may also encode the bit length of the syntax element (eg syntax structure 635 sps_subpic_id[i]) containing one or more subpicture identifiers into the extracted bitstream. For example, the length may be included in the syntax structure 633 of SPS subpicture identifiers minus one (sps_subpic_id_len_minus1). Syntax structure 633 sps_subpic_id_len_minus1 may contain the length in bits of syntax structure 635 sps_subpic_id[i] minus one. The minus one approach encodes a value one less than the actual value to save bits. The decoder can get the actual value by adding one. As such, the syntax structure 633 sps_subpic_id_len_minus1 may also be referred to as sps_subpic_id_len_minus1 plus 1. Accordingly, the decoder may use the syntax structure 633 sps_subpic_id_len_minus1 to determine the number of bits that are associated with the syntax structure 635 sps_subpic_id[i], and therefore may use the syntax structure 633 sps_subpic_id_len_minus1 for interpretation of the syntactic structure of sps_subpic_id[i]. The decoder may then decode the subpicture 623 based on the sps_subpic_id_len_minus1 syntax structure 633 and the sps_subpic_id[i] syntax structure 635.

[0093] Кроме того, процесс 605 извлечения битового подпотока может кодировать/устанавливать флаг в битовом подпотоке 601, чтобы указать, что информация о подснимках, относящаяся к подснимку 623, присутствует в битовом подпотоке 601. В качестве конкретного примера флаг может быть закодирован как флаг 631 присутствия информации о подснимках (subpic_info_present_flag). По существу, subpic_info_present_flag 631 может быть установлен для указания того, что информация о подснимках, относящаяся к поднабору подснимков, такая как синтаксическая структура 633 sps_subpic_id_len_minus1 и синтаксическая структура 635 sps_subpic_id [i], присутствует в извлеченном битовом потоке (битовом подпотоке 601). Кроме того, декодер может считывать subpic_info_present_flag 631, чтобы определить, что информация о подснимках, относящаяся к поднабору подснимков, такая как синтаксическая структура 633 sps_subpic_id_len_minus1 и синтаксическая структура 635 sps_subpic_id [i], присутствует в извлеченном битовом потоке (битовом подпотоке 601). В качестве конкретного примера кодер/средство видеомонтажа может потребовать, чтобы флаг был установлен в единицу, чтобы указать, что информация подснимка присутствует для закодированной послойно видеопоследовательности (CLVS) и что каждый снимок 621 из CLVS содержит более одного подснимка 623 и 624, когда извлеченный битовый поток (битовый подпоток 601) является результатом процесса 605 извлечения битового подпотока из входного битового потока 600. CLVS - это последовательность кодированных видеоданных, содержащих один или более слоев снимков. Слой - это набор единичных блоков NAL, каждый из которых имеет конкретное значение идентификатора слоя. Снимки 621 могут быть или могут не быть организованы во множество слоев, где все снимки 621 соответствующего слоя имеют схожие характеристики, такие как размер, разрешение, отношение сигнал/шум (SNR) и т.д.[0093] In addition, the sub-bitstream extraction process 605 may encode/set a flag in the sub-bitstream 601 to indicate that sub-picture information related to sub-picture 623 is present in the sub-bitstream 601. As a specific example, the flag may be encoded as a flag 631 presence of information about subpictures (subpic_info_present_flag). As such, subpic_info_present_flag 631 may be set to indicate that subpicture information related to a subset of subpictures, such as sps_subpic_id_len_minus1 syntax structure 633 and sps_subpic_id[i] syntax structure 635, is present in the extracted bit stream (bit substream 601). In addition, the decoder may read subpic_info_present_flag 631 to determine that subpicture information related to a subset of subpictures, such as sps_subpic_id_len_minus1 syntax structure 633 and sps_subpic_id[i] syntax structure 635, is present in the extracted bit stream (bit substream 601). As a specific example, a video encoder/editer may require a flag to be set to one to indicate that sub-picture information is present for a layer-encoded video sequence (CLVS) and that each snapshot 621 of the CLVS contains more than one sub-picture 623 and 624 when the bitmap is extracted stream (bit substream 601) is the result of a process 605 for extracting a sub bit stream from input bit stream 600. CLVS is a sequence of encoded video data containing one or more picture layers. A layer is a collection of unit NAL blocks, each of which has a specific layer ID value. The pictures 621 may or may not be organized into multiple layers, where all the pictures 621 of a corresponding layer have similar characteristics, such as size, resolution, signal-to-noise ratio (SNR), etc.

[0094] Предшествующая информация теперь описывается более подробно ниже. HEVC может использовать обычные сегменты, зависимые сегменты, клетки и параллельную обработку волнового фронта (WPP) в качестве схем разбиения. Эти схемы разбиения могут применяться для согласования размера максимального единичного блока передачи (MTU), параллельной обработки и уменьшения сквозной задержки. Каждый обычный сегмент может быть инкапсулирован в отдельный единичный блок NAL. Зависимость энтропийного кодирования и предсказание в снимке, включающее в себя предсказание внутри дискретных отсчетов, предсказание информации о движении и предсказание режима кодирования, могут быть отключены через границы сегментов. Таким образом, обычный сегмент можно восстановить независимо от других регулярных сегментов в том же снимке. Однако сегменты могут по-прежнему иметь некоторые взаимозависимости из-за операций контурной фильтрации.[0094] The foregoing information is now described in more detail below. HEVC can use regular segments, dependent segments, cells, and wavefront parallel processing (WPP) as partitioning schemes. These partitioning schemes can be used to negotiate maximum transmission unit (MTU) size, parallel processing, and reduce end-to-end delay. Each normal segment can be encapsulated in a separate unit NAL block. Entropy coding dependence and snapshot prediction, including intra-sample prediction, motion information prediction, and coding mode prediction, can be disabled across segment boundaries. Thus, a regular segment can be reconstructed independently of other regular segments in the same snapshot. However, segments may still have some interdependencies due to loop filtering operations.

[0095] Обычное распараллеливание на основе сегментов может не потребовать значительного межпроцессорного или межъядерного взаимодействия. Одно исключение состоит в том, что совместное использование данных между процессорами и/или ядрами может иметь значение для компенсации движения при декодировании изображения, кодированного с предсказанием. Такой процесс может вовлекать больше ресурсов обработки, чем совместное использование данных между процессорами или ядрами из-за предсказания в снимке. Однако по той же причине использование регулярных сегментов может привести к значительным издержкам на кодирование из-за битовых затрат на заголовок сегмента и из-за отсутствия предсказания через границы сегмента. Кроме того, регулярные сегменты также служат механизмом для разбиения битового потока в соответствии с требованиями к размеру MTU из-за независимости регулярных сегментов в снимке и из-за того, что каждый регулярный сегмент инкапсулируется в отдельный единичный блок NAL. Во многих случаях цель распараллеливания и цель согласования размера MTU ставят противоречащие друг другу требования к размещению сегментов в снимке.[0095] Conventional segment-based parallelization may not require significant inter-processor or inter-core communication. One exception is that data sharing between processors and/or cores may be important for motion compensation when decoding a predictively encoded image. Such a process may involve more processing resources than sharing data between processors or cores due to snapshot prediction. However, for the same reason, using regular segments can result in significant encoding overhead due to the bit overhead of the segment header and the lack of prediction across segment boundaries. In addition, regular segments also serve as a mechanism for breaking up the bitstream according to MTU size requirements due to the independence of regular segments in a snapshot and because each regular segment is encapsulated in a separate unit NAL block. In many cases, the parallelization goal and the MTU size negotiation goal place conflicting requirements on the placement of segments in a snapshot.

[0096] Зависимые сегменты имеют короткие заголовки сегментов и позволяют разделить битовый поток по границам древовидных блоков без нарушения предсказания в снимке. Зависимые сегменты обеспечивают фрагментацию обычных сегментов на несколько единичных блоков NAL. Это обеспечивает уменьшенную сквозную задержку, позволяя передать часть обычного сегмента до завершения кодирования всего обычного сегмента.[0096] Dependent segments have short segment headers and allow the bitstream to be divided along tree block boundaries without violating prediction in the snapshot. Dependent segments enable regular segments to be fragmented into multiple unit NAL blocks. This provides reduced end-to-end latency by allowing a portion of a regular segment to be transmitted before encoding of the entire regular segment is completed.

[0097] В WPP снимок разбивается на отдельные строки CTB. Энтропийное декодирование и предсказание могут использовать данные из CTB в других разбиениях. Возможна параллельная обработка за счет параллельного декодирования строк CTB. Начало декодирования строки CTB может быть отложено на один или два CTB, в зависимости от примера, чтобы гарантировать, что данные, относящиеся к CTB выше и справа от рассматриваемого CTB, доступны до декодирования рассматриваемого CTB. Это ступенчатое начало создает видимость волнового фронта. Этот процесс поддерживает распараллеливание с таким количеством процессоров/ядер, сколько на снимке содержится строк CTB. Поскольку предсказание в снимке между соседними строками древовидного блока в снимке разрешено, межпроцессорная/межъядерная связь для обеспечения предсказания в снимке может быть существенной. Разбиение WPP не приводит к созданию дополнительных единичных блоков NAL. Таким образом, WPP нельзя использовать для согласования размера MTU. Однако, если требуется согласование размера MTU, с WPP можно использовать обычные сегменты с определенными издержками на кодирование.[0097] In WPP, the snapshot is split into individual CTB lines. Entropy decoding and prediction can use data from the CTB in other partitions. Parallel processing is possible by decoding CTB strings in parallel. The start of decoding a CTB string may be delayed by one or two CTBs, depending on the example, to ensure that data related to the CTB above and to the right of the CTB in question is available before the CTB in question is decoded. This stepped onset creates the appearance of a wave front. This process supports parallelization with as many processors/cores as there are CTB rows in the snapshot. Since in-snapshot prediction between adjacent rows of a tree block in a snapshot is enabled, inter-processor/inter-core communication to enable in-snapshot prediction can be significant. WPP splitting does not create additional NAL units. Therefore, WPP cannot be used to negotiate the MTU size. However, if MTU size negotiation is required, regular segments can be used with WPP at some coding overhead.

[0098] Клетки определяют горизонтальные и вертикальные границы, которые разделяют снимок на столбцы и строки клеток. Порядок сканирования CTB может быть локальным внутри клетки в порядке растрового сканирования CTB клетки. Соответственно, клетка может быть полностью декодирована перед декодированием верхнего левого CTB следующей клетки в порядке растрового сканирования клеток снимка. Подобно обычным сегментам, клетки разрушают зависимости предсказания в снимке, а также зависимости энтропийного декодирования. Однако клетки не могут быть включены в отдельные единичные блоки NAL. Следовательно, клетки нельзя использовать для согласования размера MTU. Каждая клетка может обрабатываться одним процессором/ядром. Межпроцессорная/межъядерная связь, используемая для предсказания в снимке между блоками обработки, декодирующими соседние клетки, может быть ограничена передачей совместно используемого заголовка сегмента, когда сегмент включает в себя более одной клетки, и связанным с контурной фильтрацией совместным использованием восстановленных дискретных отсчетов и метаданных. Когда в сегмент включено более одной клетки или сегмента WPP, в заголовке сегмента может указываться смещение байта точки входа для каждой клетки или сегмента WPP, кроме первого в сегменте.[0098] Cells define horizontal and vertical boundaries that divide the image into columns and rows of cells. The CTB scan order may be local within the cell in the raster scan order of the cell's CTB. Accordingly, a cell can be fully decoded before decoding the top left CTB of the next cell in the raster scan order of the snapshot cells. Like regular segments, cells break prediction dependencies in the snapshot as well as entropy decoding dependencies. However, cells cannot be included in individual NAL unit blocks. Therefore, cells cannot be used for MTU size negotiation. Each cell can be processed by one processor/core. The inter-processor/inter-core communication used for snapshot prediction between processing units decoding neighboring cells may be limited to the transmission of a shared segment header when the segment includes more than one cell, and the loop filtering-related sharing of reconstructed samples and metadata. When more than one WPP cell or segment is included in a segment, the segment header may indicate the entry point byte offset for each WPP cell or segment other than the first one in the segment.

[0099] Для простоты HEVC использует конкретные ограничения на применение четырех различных схем разбиения снимка. Кодированная видеопоследовательность может не включать в себя как клетки, так и волновые фронты для большинства профилей, указанных в HEVC. Кроме того, для каждого сегмента и/или клетки должны выполняться одно или оба из следующих условий. Все закодированные древовидные блоки в сегменте включаются в одну и ту же клетку. Кроме того, все кодированные древовидные блоки в клетке включаются в один и тот же сегмент. Кроме того, сегмент волнового фронта содержит ровно одну строку CTB. Когда используется WPP, сегмент, начинающийся в строке CTB, должен заканчиваться в той же строке CTB.[0099] For simplicity, HEVC uses specific restrictions on the use of four different snapshot partitioning schemes. The encoded video sequence may not include both cells and wavefronts for most of the profiles specified in HEVC. In addition, for each segment and/or cell, one or both of the following conditions must be met. All encoded tree blocks in a segment are included in the same cell. In addition, all encoded tree blocks in a cell are included in the same segment. In addition, the wavefront segment contains exactly one CTB line. When WPP is used, a segment starting on a CTB line must end on the same CTB line.

[00100] В VVC клетки определяют горизонтальные и вертикальные границы, которые разделяют снимок на столбцы и строки клеток. VVC позволяет дополнительно разделить клетку по горизонтали на фрагменты (кирпичики). Клетка, которая не подвергается дальнейшему разделению, также может считаться фрагментом. Порядок сканирования CTB изменяется на локальный внутри фрагмента (например, в порядке растрового сканирования CTB фрагмента). Текущий фрагмент полностью декодируется перед декодированием верхнего левого CTB следующего фрагмента в порядке растрового сканирования фрагментов снимка.[00100] In VVC, cells define horizontal and vertical boundaries that divide a snapshot into columns and rows of cells. VVC allows you to further divide the cell horizontally into fragments (bricks). A cell that does not undergo further division may also be considered a fragment. The CTB scan order is changed to be local within the fragment (for example, in the raster scan order of the CTB fragment). The current fragment is fully decoded before the upper left CTB of the next fragment is decoded in the order of raster scanning of image fragments.

[00101] Сегменты в VVC могут включать в себя один или более фрагментов. Каждый сегмент инкапсулируется в отдельный единичный блок NAL. Зависимость энтропийного кодирования и предсказание в снимке, включая интра-предсказание, предсказание информации о движении и предсказание режима кодирования, могут быть отключены через границы сегментов. Таким образом, обычный сегмент можно восстановить независимо от других обычных сегментов в том же снимке. VVC включает в себя прямоугольные сегменты и сегменты растрового сканирования. Прямоугольный сегмент может содержать один или более фрагментов, занимающих прямоугольную область в снимке. Сегмент растрового сканирования может содержать один или более фрагментов, которые находятся в порядке растрового сканирования фрагментов в снимке.[00101] Segments in a VVC may include one or more fragments. Each segment is encapsulated in a separate unit NAL block. Entropy encoding dependence and in-snapshot prediction, including intra-prediction, motion information prediction, and encoding mode prediction, can be disabled across segment boundaries. Thus, a regular segment can be reconstructed independently of other regular segments in the same snapshot. VVC includes rectangular segments and raster scan segments. A rectangular segment can contain one or more fragments that occupy a rectangular area in the image. A raster scan segment may contain one or more fragments that are in the raster scan order of the fragments in the image.

[00102] WPP на основе VVC похоже на HEVC WPP за исключением того, что HEVC WPP имеет задержку в два CTU, а VVC WPP имеет задержку в один CTU. Для HEVC WPP новый поток декодирования может начать декодирование первого CTU в назначенной строке CTU после того, как первые два CTU в предыдущей строке CTU уже были декодированы. Для VVC WPP новый поток декодирования может начать декодирование первого CTU в назначенной строке CTU после того, как был декодирован первый CTU в предыдущей строке CTU.[00102] VVC-based WPP is similar to HEVC WPP except that HEVC WPP has a latency of two CTUs and VVC WPP has a latency of one CTU. For HEVC WPP, a new decoding thread may begin decoding the first CTU in the assigned CTU line after the first two CTUs in the previous CTU line have already been decoded. For VVC WPP, a new decoding thread may begin decoding the first CTU in the assigned CTU line after the first CTU in the previous CTU line has been decoded.

[00103] Ниже приведен пример сигнализации клеток (tile), фрагментов (brick) и сегментов (slice) в PPS.[00103] Below is an example of tile, brick, and slice signaling in a PPS.

pic_parameter_set_rbsp () {pic_parameter_set_rbsp() { ДескрипторDescriptor ...... single_tile_in_pic_flag single_tile_in_pic_flag u(1)u(1) если (! single_tile_in_pic_flag) {if (! single_tile_in_pic_flag) { uniform_tile_spacing_flag uniform_tile_spacing_flag u(1)u(1) если (uniform_tile_spacing_flag) { if (uniform_tile_spacing_flag) { tile_cols_width_minus1 tile_cols_width_minus1 ue(v)ue(v) tile_rows_height_minus1 tile_rows_height_minus1 ue(v)ue(v) } иначе { } otherwise { num_tile_columns_minus1 num_tile_columns_minus1 ue(v)ue(v) num_tile_rows_minus1 num_tile_rows_minus1 ue(v)ue(v) для (i=0; i <num_tile_columns_minus1; i ++) for (i=0; i <num_tile_columns_minus1; i ++) tile_column_width_minus1 [i] tile_column_width_minus1 [i] ue(v)ue(v) для (i=0; i <num_tile_rows_minus1; i ++) for (i=0; i <num_tile_rows_minus1; i ++) tile_row_height_minus1 [i] tile_row_height_minus1 [i] ue(v)ue(v) } } brick_splitting_present_flag brick_splitting_present_flag u(1)u(1) for (i=0; brick_splitting_present_flag && i <NumTilesInPic; i ++)
{
for (i=0; brick_splitting_present_flag && i <NumTilesInPic; i++)
{
brick_split_flag [i] brick_split_flag [i] u(1)u(1) если (brick_split_flag [i]) { if (brick_split_flag[i]) { uniform_brick_spacing_flag [i] uniform_brick_spacing_flag [i] u(1)u(1) если (uniform_brick_spacing_flag [i]) if (uniform_brick_spacing_flag[i]) brick_height_minus1 [i] brick_height_minus1 [i] ue(v)ue(v) иначе { otherwise { num_brick_rows_minus1 [i] num_brick_rows_minus1 [i] ue(v)ue(v) для (j=0; j <num_brick_rows_minus1 [i]; j ++) for (j=0; j <num_brick_rows_minus1 [i]; j ++) brick_row_height_minus1 [i] [j] brick_row_height_minus1 [i] [j] ue(v)ue(v) } } } } } } single_brick_per_slice_flag single_brick_per_slice_flag u(1)u(1) если (! single_brick_per_slice_flag) if (!single_brick_per_slice_flag) rect_slice_flag rect_slice_flag u(1)u(1) если (rect_slice_flag && ! single_brick_per_slice_flag) { if (rect_slice_flag && ! single_brick_per_slice_flag) { num_slices_in_pic_minus1 num_slices_in_pic_minus1 ue(v)ue(v) for (i=0; i <= num_slices_in_pic_minus1; i ++) { for (i=0; i <= num_slices_in_pic_minus1; i ++) { если (i&gt; 0) if (i&gt; 0) top_left_brick_idx [i] top_left_brick_idx [i] u(v)u(v) bottom_right_brick_idx_delta [i] bottom_right_brick_idx_delta [i] u(v)u(v) } } } } loop_filter_across_bricks_enabled_flag loop_filter_across_bricks_enabled_flag u(1)u(1) если (loop_filter_across_bricks_enabled_flag) if (loop_filter_across_bricks_enabled_flag) loop_filter_across_slices_enabled_flag loop_filter_across_slices_enabled_flag u(1)u(1) }} если (rect_slice_flag) { if (rect_slice_flag) { signalled_slice_id_flag signaled_slice_id_flag u(1)u(1) если (signalled_slice_id_flag) { if (signalled_slice_id_flag) { signalled_slice_id_length_minus1 signaled_slice_id_length_minus1 ue(v)ue(v) для (i=0; i <= num_slices_in_pic_minus1; i ++) for (i=0; i <= num_slices_in_pic_minus1; i ++) slice_id [i] slice_id[i] u(v)u(v) } } }} ...... }}

[00104] Предыдущие системы имеют определенные проблемы. Например, когда битовый поток сначала кодируется, сегменты в снимках в битовом потоке могут быть разделены на прямоугольные сегменты. В этом случае идентификаторы сегментов могут быть исключены из PPS. В этом случае значение signalled_slice_id_flag может быть установлено равным нулю в PPS битового потока. Однако, когда один или более прямоугольных сегментов из битового потока извлекаются для формирования другого битового потока, идентификаторы сегментов должны присутствовать в PPS в битовом потоке, сгенерированном в результате такого процесса извлечения.[00104] Previous systems have certain problems. For example, when the bitstream is first encoded, the segments in the snapshots in the bitstream may be divided into rectangular segments. In this case, segment IDs may be excluded from the PPS. In this case, the value of signaled_slice_id_flag can be set to zero in the PPS of the bitstream. However, when one or more rectangular segments from a bitstream are extracted to form another bitstream, the segment identifiers must be present in the PPS in the bitstream generated as a result of such extraction process.

[00105] В общем, это раскрытие описывает передачу сигнализированных идентификаторов сегментов для помощи процессу извлечения битового подпотока. Описание методик основано на VVC, но может также применяться к другим спецификациям видеокодеков.[00105] In general, this disclosure describes the transmission of signaled segment identifiers to assist the bit substream extraction process. The description of the techniques is based on VVC, but may also apply to other video codec specifications.

[00106] Ниже приводится пример механизма решения перечисленных выше проблем. Раскрывается способ извлечения одного или более сегментов из снимков битового потока, обозначенного как битовый поток A, и создания нового битового потока B из процесса извлечения. Битовый поток A содержит по меньшей мере один снимок. Снимок содержит множества сегментов. Способ включает в себя анализ (парсинг) набора параметров из битового потока A и перезапись параметра в битовый поток B. Значение signalled_slice_id_flag установлено в единицу в перезаписанном наборе параметров. Когда синтаксический элемент signalled_slice_id_length_minus1 присутствует в наборе параметров битового потока A, значение signalled_slice_id_flag копируется в перезаписанный набор параметров. Когда синтаксический элемент signalled_slice_id_length_minus1 отсутствует в наборе параметров битового потока A, значение signalled_slice_id_flag устанавливается в перезаписанном наборе параметров. Например, для signalled_slice_id_flag может быть установлено значение Ceil(Log2(num_slices_in_pic_minus1+1))-1, где num_slices_in_pic_minus1 равно количеству сегментов в снимке битового потока A минус один. Один или более сегментов извлекаются из битового потока A. Затем генерируется извлеченный битовый поток B.[00106] The following is an example of a mechanism for solving the above problems. A method is disclosed for extracting one or more segments from snapshots of a bitstream, designated bitstream A, and creating a new bitstream B from the extraction process. Bitstream A contains at least one snapshot. The image contains many segments. The method includes parsing a set of parameters from bitstream A and rewriting the parameter into bitstream B. The value of signaled_slice_id_flag is set to one in the rewritten set of parameters. When the signaled_slice_id_length_minus1 syntax element is present in the A bitstream parameter set, the signaled_slice_id_flag value is copied to the overwritten parameter set. When the signaled_slice_id_length_minus1 syntax element is not present in the A bitstream parameter set, the signaled_slice_id_flag value is set in the overwritten parameter set. For example, the signaled_slice_id_flag could be set to Ceil(Log2(num_slices_in_pic_minus1+1))-1, where num_slices_in_pic_minus1 equals the number of segments in the bitstream snapshot A minus one. One or more segments are extracted from bitstream A. The extracted bitstream B is then generated.

[00107] Пример семантики PPS следующий. Signalled_slice_id_flag, установленный в единицу, может указывать, что сигнализируется идентификатор сегмента для каждого сегмента. Signalled_slice_id_flag, установленный в ноль, может указывать, что идентификаторы сегментов не сигнализируются. Когда rect_slice_flag равен нулю, значение signalled_slice_id_flag может быть логически выведено равным нулю. Для битового потока, который является результатом извлечения битового подпотока, и результат содержит поднабор сегментов, изначально включенных в снимки, значение signalled_slice_id_flag должно быть установлено равным единице для PPS. Signalled_slice_id_length_minus1 плюс один может указывать количество битов, используемых для представления синтаксического элемента slice_id[i], если он присутствует, и синтаксического элемента slice_address в заголовках сегментов. Значение signalled_slice_id_length_minus1 может находиться в диапазоне от нуля до пятнадцати включительно. Если отсутствует, значение signalled_slice_id_length_minus1 может быть логически выведено как равное Ceil(Log2(num_slices_in_pic_minus1+1))-1. Для битового потока, который является результатом извлечения битового подпотока, и результат содержит поднабор сегментов, изначально включенных в снимки, значение signalled_slice_id_length_minus1 для PPS должно оставаться неизменным.[00107] An example of PPS semantics is as follows. Signalled_slice_id_flag set to one may indicate that the slice id for each slice is signaled. Signalled_slice_id_flag set to zero may indicate that slice IDs are not signaled. When rect_slice_flag is zero, the value of signaled_slice_id_flag can be inferred to be zero. For a bitstream that is the result of extracting a subbitstream, and the result contains a subset of the segments originally included in the snapshots, the signaled_slice_id_flag value must be set to one for PPS. Signalled_slice_id_length_minus1 plus one may indicate the number of bits used to represent the slice_id[i] syntax element, if present, and the slice_address syntax element in segment headers. The value of signaled_slice_id_length_minus1 can range from zero to fifteen, inclusive. If missing, signaled_slice_id_length_minus1 may be inferred to be equal to Ceil(Log2(num_slices_in_pic_minus1+1))-1. For a bitstream that is the result of extracting a subbitstream, and the result contains a subset of the segments originally included in the snapshots, the signaled_slice_id_length_minus1 value for PPS shall remain unchanged.

[00108] Фиг.7 является принципиальной схемой примерного устройства 700 видеокодирования. Устройство 700 видеокодирования подходит для реализации раскрытых примеров/вариантов осуществления, как описано в данном документе. Устройство 700 видеокодирования содержит входные порты 720, выходные порты 750 и/или блоки 710 приемопередатчиков (Tx/Rx), включающие в себя передатчики и/или приемники. Устройство 700 видеокодирования также включает в себя процессор 730, включающий в себя логический блок и/или центральный блок обработки (CPU) для обработки данных и память 732 для хранения данных. Устройство 700 видеокодирования может также содержать электрические, оптико-электрические (OE) компоненты, электрическо-оптические (EO) компоненты и/или компоненты беспроводной связи, подключенные к выходным портам 750 и/или входным портам 720 для обмена данными через электрические, оптические или беспроводные сети связи. Устройство 700 видеокодирования может также включать в себя устройства 760 ввода и/или вывода (I/O) для передачи данных пользователю и от пользователя. Устройства 760 ввода-вывода могут включать в себя устройства вывода, такие как дисплей для отображения видеоданных, громкоговорители для вывода аудиоданных и т.д. Устройства 760 ввода-вывода могут также включать в себя устройства ввода, такие как клавиатура, мышь, трекбол и т.д., и/или соответствующие интерфейсы для взаимодействия с такими устройствами вывода.[00108] FIG. 7 is a schematic diagram of an example video encoding apparatus 700. Video encoding apparatus 700 is suitable for implementing the disclosed examples/embodiments as described herein. Video encoding device 700 includes input ports 720, output ports 750, and/or transceiver (Tx/Rx) units 710, including transmitters and/or receivers. The video encoding device 700 also includes a processor 730 including a logic unit and/or a central processing unit (CPU) for processing data and a memory 732 for storing data. Video encoding device 700 may also include electrical, optical-electrical (OE) components, electrical-optical (EO) components, and/or wireless communication components connected to output ports 750 and/or input ports 720 for exchanging data via electrical, optical, or wireless communication networks. The video encoding device 700 may also include input and/or output (I/O) devices 760 for transmitting data to and from the user. The input/output devices 760 may include output devices such as a display for displaying video data, speakers for outputting audio data, etc. I/O devices 760 may also include input devices such as a keyboard, mouse, trackball, etc., and/or corresponding interfaces for interacting with such output devices.

[00109] Процессор 730 реализуется аппаратным обеспечением и программным обеспечением. Процессор 730 может быть реализован как одна или более микросхем CPU, ядер (например, как многоядерный процессор), программируемых вентильных матриц (FPGA), специализированных интегральных схем (ASIC) и процессоров цифровых сигналов (DSP). Процессор 730 связан с входными портами 720, Tx/Rx 710, выходными портами 750 и памятью 732. Процессор 730 содержит модуль 714 кодирования. Модуль 714 кодирования реализует раскрытые варианты осуществления, описанные в данном документе, такие как способы 100, 800 и/или 900, которые могут использовать битовый поток 600 и/или битовый подпоток 601, включающий в себя видеопоток 500 снимков и/или видеопотоки подснимков 501-503. Модуль 714 кодирования также может реализовывать любой другой способ/механизм, описанный в данном документе. Кроме того, модуль 714 кодирования может реализовывать систему 200 кодека, кодер 300 и/или декодер 400. Например, модуль 714 кодирования может использоваться для извлечения битового подпотока из битового потока, включения информации о подснимках в битовый подпоток во время процесса извлечения и/или включения флага в битовый подпоток, чтобы указать, что информация о подснимках включается в битовый подпоток. Следовательно, модуль 714 кодирования предписывает устройству 700 видеокодирования предоставлять дополнительные функциональные возможности и/или эффективность кодирования при кодировании видеоданных. Таким образом, модуль 714 кодирования улучшает функциональные возможности устройства 700 видеокодирования, а также решает проблемы, которые присущи искусству видеокодирования. Кроме того, модуль 714 кодирования выполняет преобразование устройства 700 видеокодирования в другое состояние. В качестве альтернативы, модуль 714 кодирования может быть реализован как инструкции, хранящиеся в памяти 732 и выполняемые процессором 730 (например, как компьютерный программный продукт, хранящийся на долговременном носителе).[00109] The processor 730 is implemented in hardware and software. The processor 730 may be implemented as one or more CPU chips, cores (eg, as a multi-core processor), field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). Processor 730 is coupled to input ports 720, Tx/Rx 710, output ports 750, and memory 732. Processor 730 includes an encoding module 714. Encoding module 714 implements disclosed embodiments described herein, such as methods 100, 800, and/or 900, which may use a bit stream 600 and/or a sub-bit stream 601 including a picture video stream 500 and/or sub-picture video streams 501- 503. Encoding module 714 may also implement any other method/mechanism described herein. In addition, encoding module 714 may implement a codec system 200, encoder 300, and/or decoder 400. For example, encoding module 714 may be used to extract a sub-bit stream from a bit stream, incorporating sub-picture information into the sub-bit stream during the extraction and/or inclusion process. flag to the bitstream to indicate that sub-picture information is included in the bitstream. Therefore, the encoding module 714 causes the video encoding device 700 to provide additional functionality and/or encoding efficiency when encoding video data. Thus, the encoding module 714 improves the functionality of the video encoding apparatus 700 and also solves problems that are inherent in the art of video encoding. In addition, the encoding unit 714 converts the video encoding device 700 to another state. Alternatively, encoding module 714 may be implemented as instructions stored in memory 732 and executed by processor 730 (eg, as a computer program product stored on a non-transitory medium).

[00110] Память 732 содержит один или более типов памяти, таких как диски, ленточные накопители, твердотельные накопители, постоянное запоминающее устройство (ROM), запоминающее устройство произвольного доступа (RAM), флэш-память, троичное запоминающее устройство с адресацией по содержимому (TCAM), статическое запоминающее устройство произвольного доступа (SRAM) и т.д. Память 732 может использоваться как запоминающее устройство при переполнении данных, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы.[00110] Memory 732 includes one or more types of memory such as disks, tape drives, solid state drives, read only memory (ROM), random access memory (RAM), flash memory, ternary content addressable storage (TCAM) ), static random access memory (SRAM), etc. The memory 732 may be used as a storage device when data is full, for storing programs when such programs are selected for execution, and for storing instructions and data that are read during program execution.

[00111] Фиг.8 является блок-схемой примерного способа 800 кодирования видеопоследовательности в битовый поток, например битовый поток 600, и извлечения битового подпотока, такого как битовый подпоток 601, при уменьшении ошибок с идентификаторами. Способ 800 может использоваться кодером, например системой 200 кодека, кодером 300 и/или устройством 700 видеокодирования, при выполнении способа 100 для кодирования видеопотока 500 снимков и/или видеопотоков 501-503 подснимков.[00111] FIG. 8 is a flow diagram of an exemplary method 800 of encoding a video sequence into a bitstream, such as bitstream 600, and extracting a subbitstream, such as bitstream 601, while reducing errors with identifiers. Method 800 may be used by an encoder, such as codec system 200, encoder 300, and/or video encoder 700, when performing method 100 to encode picture video stream 500 and/or sub-picture video streams 501-503.

[00112] Способ 800 может начинаться, когда кодер принимает видеопоследовательность, включающую в себя множество снимков, и решает кодировать эту видеопоследовательность в битовый поток, например, на основе ввода пользователя. На этапе 801 кодер кодирует входной битовый поток, такой как видеопоток 500 снимков и/или битовый поток 600, содержащий набор подснимков. Например, битовый поток может содержать видеоданные VR и/или видеоданные телеконференции. Набор подснимков может содержать множество подснимков. Кроме того, подснимки могут быть связаны с идентификаторами подснимков.[00112] Method 800 may begin when an encoder receives a video sequence including a plurality of pictures and decides to encode the video sequence into a bitstream, for example, based on user input. At step 801, the encoder encodes an input bitstream, such as a video snapshot stream 500 and/or a bitstream 600 containing a set of sub-pictures. For example, the bitstream may contain VR video data and/or teleconference video data. A sub-picture set can contain multiple sub-pictures. Additionally, sub-pictures can be associated with sub-picture IDs.

[00113] На этапе 803 кодер и/или связанное с ним средство видеомонтажа выполняет процесс извлечения битового подпотока в отношении входного битового потока, чтобы создать извлеченный битовый поток, такой как видеопотоки 501-503 подснимков и/или битовый подпоток 601. Извлеченный битовый поток содержит только поднабор подснимков входного битового потока. В частности, извлеченный битовый поток содержит только подснимки, включенные в набор подснимков во входном битовом потоке. Кроме того, извлеченный битовый поток исключает один или более подснимков из набора подснимков во входном битовом потоке. По существу, входной битовый поток может содержать CLVS снимков, а извлеченный битовый поток содержит CLVS подснимков снимков.[00113] At step 803, the encoder and/or associated video editing engine performs a sub-bitstream extraction process on the input bitstream to create an extracted bitstream, such as sub-picture video streams 501-503 and/or sub-bitstream 601. The extracted bitstream contains only a subset of subsnapshots of the input bitstream. In particular, the extracted bitstream contains only the sub-pictures included in the set of sub-pictures in the input bitstream. In addition, the extracted bitstream excludes one or more sub-pictures from the set of sub-pictures in the input bitstream. Essentially, the input bitstream may contain a CLVS of snapshots, and the extracted bitstream contains a CLVS of sub-snapshots of the snapshots.

[00114] На этапе 805 кодер кодирует в извлеченный битовый поток один или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке. Например, такие идентификаторы подснимков могут быть исключены из входного битового потока. Соответственно, кодер может кодировать такие идентификаторы подснимков в извлеченный битовый поток для поддержки декодирования подснимков, содержащихся в извлеченном битовом потоке. Например, идентификаторы подснимков могут содержаться/закодированы в синтаксической структуре sps_subpic_id [i] в извлеченном битовом потоке.[00114] At step 805, the encoder encodes into the extracted bitstream one or more sub-picture identifiers (IDs) for a subset of sub-pictures in the extracted bitstream. For example, such sub-picture identifiers may be excluded from the input bitstream. Accordingly, the encoder may encode such sub-picture identifiers into the extracted bitstream to support decoding of the sub-pictures contained in the extracted bitstream. For example, subpicture identifiers may be contained/encoded in the syntax structure sps_subpic_id[i] in the extracted bitstream.

[00115] На этапе 807 кодер кодирует длину в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков, в извлеченный битовый поток. Например, длина идентификаторов подснимков может быть исключена из входного битового потока. Соответственно, кодер может кодировать длину идентификаторов подснимков в извлеченный битовый поток, чтобы поддерживать декодирование подснимков, содержащихся в извлеченном битовом потоке. Например, длина может содержаться/закодироваться в синтаксической структуре sps_subpic_id_len_minus1 plus 1 в извлеченном битовом потоке.[00115] At step 807, the encoder encodes the bit length of a syntax element containing one or more sub-picture IDs into the extracted bitstream. For example, the length of sub-picture identifiers may be excluded from the input bitstream. Accordingly, the encoder may encode the length of the sub-picture identifiers into the extracted bitstream to support decoding of the sub-pictures contained in the extracted bitstream. For example, the length may be contained/encoded in the syntax structure sps_subpic_id_len_minus1 plus 1 in the extracted bitstream.

[00116] На этапе 809 кодер может установить флаг в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке. Флаг может указывать декодеру, что идентификаторы подснимков и/или длина идентификаторов (ID) подснимков присутствуют в извлеченном битовом потоке. Например, флаг может быть subpic_info_present_flag. В конкретном примере требуется, чтобы флаг был установлен в единицу, чтобы указать, что информация о подснимках присутствует для CLVS (например, содержится во входном битовом потоке и/или извлеченном битовом потоке) и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока. В некоторых примерах флаг, идентификаторы подснимков и длина кодируются в SPS в извлеченном битовом потоке.[00116] At step 809, the encoder may set a flag in the extracted bitstream to indicate that sub-picture information related to a subset of sub-pictures is present in the extracted bitstream. The flag may indicate to the decoder that sub-picture identifiers and/or sub-picture ID lengths are present in the extracted bitstream. For example, the flag could be subpic_info_present_flag. The specific example requires the flag to be set to one to indicate that sub-picture information is present for the CLVS (e.g., contained in the input bitstream and/or extracted bitstream) and that each snapshot from the CLVS contains more than one sub-picture when extracted a bitstream is the result of the process of extracting a subbitstream from an input bitstream. In some examples, the flag, sub-picture IDs, and length are encoded in SPS in the extracted bitstream.

[00117] На этапе 811 кодер сохраняет битовый поток для передачи в декодер. Затем в некоторых примерах битовый поток может быть передан в декодер. Например, битовый поток может быть передан в декодер по запросу декодера, например, на основании запроса пользователя.[00117] At step 811, the encoder stores a bit stream for transmission to the decoder. The bit stream may then be passed to a decoder in some examples. For example, the bitstream may be transmitted to the decoder upon request of the decoder, for example based on a user request.

[00118] Фиг.9 является блок-схемой примерного способа 900 декодирования видеопоследовательности из битового подпотока, такого как битовый подпоток 601, извлеченного из битового потока, такого как битовый поток 600. Способ 900 может использоваться декодером, например системой 200 кодека, декодером 400 и/или устройством 700 видеокодирования, при выполнении способа 100 для декодирования видеопотока 500 снимков и/или видеопотоков 501-503 подснимков.[00118] FIG. 9 is a flow diagram of an exemplary method 900 for decoding a video sequence from a bit substream, such as bit substream 601, extracted from a bit stream, such as bit stream 600. The method 900 may be used by a decoder, such as a codec system 200, a decoder 400, and /or video encoding device 700, when performing method 100 for decoding picture video stream 500 and/or sub-picture video streams 501-503.

[00119] Способ 900 может начинаться, когда декодер начинает принимать битовый подпоток, извлеченный из битового потока, например, в результате способа 800. На этапе 901 декодер принимает извлеченный битовый поток. Извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков. Извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока. В частности, извлеченный битовый поток содержит только подснимки, включенные в набор подснимков во входном битовом потоке. Кроме того, извлеченный битовый поток исключает один или более подснимков из набора подснимков во входном битовом потоке. По существу, входной битовый поток может содержать CLVS снимков, а извлеченный битовый поток может содержать CLVS подснимков снимков. Принятый извлеченный битовый поток также может называться битовым подпотоком. Например, извлеченный битовый поток может содержать подснимок(и), включая видеоданные VR и/или видеоданные телеконференции.[00119] Method 900 may begin when the decoder begins to receive a subbit stream extracted from the bit stream, for example, as a result of method 800. At step 901, the decoder receives the extracted bit stream. The extracted bitstream is the result of the process of extracting a subbitstream from an input bitstream containing a set of subpictures. The extracted bitstream contains only a subset of subsnapshots of the input bitstream before the subbitstream extraction process. In particular, the extracted bitstream contains only the sub-pictures included in the set of sub-pictures in the input bitstream. In addition, the extracted bitstream excludes one or more sub-pictures from the set of sub-pictures in the input bitstream. As such, the input bitstream may contain a CLVS of snapshots, and the extracted bitstream may contain a CLVS of sub-snapshots of the snapshots. The received extracted bitstream may also be called a subbitstream. For example, the extracted bitstream may contain sub-picture(s) including VR video data and/or teleconference video data.

[00120] На этапе 903 декодер определяет, что флаг из извлеченного битового потока установлен, чтобы указать, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке. Флаг может указывать, что идентификаторы подснимков и/или длина идентификаторов (ID) подснимков присутствуют в извлеченном битовом потоке. Например, флаг может быть subpic_info_present_flag. В конкретном примере требуется, чтобы флаг был установлен в единицу, чтобы указать, что информация о подснимках присутствует для CLVS (например, содержится во входном битовом потоке и/или извлеченном битовом потоке) и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока.[00120] At step 903, the decoder determines that a flag from the extracted bitstream is set to indicate that sub-picture information related to a subset of sub-pictures is present in the extracted bitstream. The flag may indicate that sub-picture identifiers and/or sub-picture ID lengths are present in the extracted bitstream. For example, the flag could be subpic_info_present_flag. The specific example requires the flag to be set to one to indicate that sub-picture information is present for the CLVS (e.g., contained in the input bitstream and/or extracted bitstream) and that each snapshot from the CLVS contains more than one sub-picture when extracted a bitstream is the result of the process of extracting a subbitstream from an input bitstream.

[00121] На этапе 905 декодер получает длину в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков. Например, длина идентификаторов подснимков может быть исключена из входного битового потока, но включена в извлеченный битовый поток. Например, длина может содержаться/закодироваться в синтаксической структуре sps_subpic_id_len_minus1 plus 1 в принятом извлеченном битовом потоке.[00121] At step 905, the decoder obtains the bit length of a syntax element containing one or more sub-picture IDs. For example, the length of the sub-picture identifiers may be excluded from the input bitstream but included in the extracted bitstream. For example, the length may be contained/encoded in the syntax structure sps_subpic_id_len_minus1 plus 1 in the received extracted bitstream.

[00122] На этапе 907 декодер получает один или более идентификаторов (ID) подснимков для поднабора подснимков на основе флага и/или на основе длины. Например, декодер может использовать этот флаг для определения наличия идентификаторов (ID) подснимков. Затем декодер может использовать длину для определения границ данных идентификаторов подснимков в битовом потоке. Например, идентификаторы подснимков могут быть исключены из входного битового потока, но включены в извлеченный битовый поток. Например, идентификаторы подснимков могут содержаться/закодированы в синтаксической структуре sps_subpic_id [i] в извлеченном битовом потоке. В некоторых примерах флаг, идентификаторы подснимков и длина получаются из SPS в извлеченном битовом потоке.[00122] At step 907, the decoder obtains one or more sub-picture identifiers (IDs) for a subset of sub-pictures based on a flag and/or based on a length. For example, a decoder may use this flag to determine the presence of sub-picture IDs. The decoder can then use the length to determine the boundaries of the sub-picture identifier data in the bitstream. For example, sub-picture identifiers may be excluded from the input bitstream but included in the extracted bitstream. For example, subpicture identifiers may be contained/encoded in the syntax structure sps_subpic_id[i] in the extracted bitstream. In some examples, the flag, sub-picture IDs, and length are obtained from the SPS in the extracted bitstream.

[00123] На этапе 909 декодер может декодировать поднабор подснимков в извлеченном битовом потоке на основе идентификаторов подснимков, полученных на этапе 907. Затем декодер может переслать поднабор подснимков для отображения как часть декодированной видеопоследовательности на этапе 911.[00123] At step 909, the decoder may decode a subset of sub-pictures in the extracted bitstream based on the sub-picture identifiers obtained at step 907. The decoder may then forward the subset of sub-pictures for display as part of the decoded video sequence at step 911.

[00124] Фиг.10 является принципиальной схемой примерной системы 1000 для кодирования видеопоследовательности изображений в битовом потоке, таком как битовый поток 600, и извлечения битового подпотока, такого как битовый подпоток 601, при уменьшении ошибок с идентификаторами. Соответственно, система 1000 может использоваться для кодирования видеопотока 500 снимков и/или видеопотоков 501-503 подснимков. Система 1000 может быть реализована с помощью кодера и декодера, такого как система 200 кодека, кодер 300, декодер 400 и/или устройство 700 видеокодирования. Кроме того, система 1000 может использоваться при реализации способов 100, 800 и/или 900.[00124] FIG. 10 is a schematic diagram of an exemplary system 1000 for encoding a video image sequence into a bitstream, such as bitstream 600, and extracting a subbitstream, such as bitstream 601, while reducing errors with identifiers. Accordingly, system 1000 may be used to encode picture video stream 500 and/or sub-picture video streams 501-503. The system 1000 may be implemented by an encoder and decoder, such as a codec system 200, an encoder 300, a decoder 400, and/or a video encoder 700. Additionally, system 1000 may be used to implement methods 100, 800, and/or 900.

[00125] Система 1000 включает в себя видеокодер 1002. Видеокодер 1002 содержит первый модуль 1001 кодирования для кодирования входного битового потока, содержащего набор подснимков. Видеокодер 1002 дополнительно содержит модуль 1004 извлечения битового подпотока для выполнения процесса извлечения битового подпотока в отношении входного битового потока для создания извлеченного битового потока, содержащего только поднабор подснимков входного битового потока. Видеокодер 1002 дополнительно содержит второй модуль 1003 кодирования для кодирования в извлеченный битовый поток одного или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке. Видеокодер 1002 дополнительно содержит модуль 1005 установки для установки флага в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке. Видеокодер 1002 дополнительно содержит модуль 1007 хранения для хранения битового потока для передачи в декодер. Видеокодер 1002 дополнительно содержит модуль 1009 передачи для передачи битового потока в видеодекодер 1010. Видеокодер 1002 может быть дополнительно выполнен с возможностью выполнения любого из этапов способа 800.[00125] System 1000 includes a video encoder 1002. Video encoder 1002 includes a first encoding module 1001 for encoding an input bitstream containing a set of sub-pictures. Video encoder 1002 further includes a subbitstream extractor 1004 for performing a subbitstream extraction process on an input bitstream to create an extracted bitstream containing only a subset of subsnapshots of the input bitstream. Video encoder 1002 further includes a second encoding module 1003 for encoding into the extracted bitstream one or more sub-picture IDs for a subset of sub-pictures in the extracted bitstream. Video encoder 1002 further includes a setter 1005 for setting a flag in the extracted bitstream to indicate that sub-picture information related to a subset of sub-pictures is present in the extracted bitstream. The video encoder 1002 further includes a storage unit 1007 for storing a bit stream for transmission to the decoder. Video encoder 1002 further includes a transmit module 1009 for transmitting a bit stream to video decoder 1010. Video encoder 1002 may be further configured to perform any of the steps of method 800.

[00126] Система 1000 также включает в себя видеодекодер 1010. Видеодекодер 1010 содержит модуль 1011 приема для приема извлеченного битового потока, который является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков, причем извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока. Видеодекодер 1010 дополнительно содержит модуль 1013 определения для определения того, что флаг из извлеченного битового потока установлен для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке. Видеодекодер 1010 дополнительно содержит модуль 1015 получения для получения одного или более идентификаторов (ID) подснимков для поднабора подснимков на основе флага. Видеодекодер 1010 дополнительно содержит модуль 1017 декодирования для декодирования поднабора подснимков на основе идентификаторов (ID) подснимков. Видеодекодер 1010 дополнительно содержит модуль 1019 пересылки для пересылки поднабора подснимков для отображения в качестве части декодированной видеопоследовательности. Видеодекодер 1010 может быть дополнительно выполнен с возможностью выполнения любого из этапов способа 900.[00126] System 1000 also includes a video decoder 1010. Video decoder 1010 includes a receiving module 1011 for receiving an extracted bitstream that is the result of a process of extracting a subbitstream from an input bitstream containing a set of sub-pictures, wherein the extracted bitstream contains only a subset of sub-pictures of the input bitstream stream before the bit substream extraction process. Video decoder 1010 further includes a determination module 1013 for determining that a flag from the extracted bitstream is set to indicate that sub-picture information related to a subset of sub-pictures is present in the extracted bitstream. Video decoder 1010 further includes a receiving module 1015 for obtaining one or more sub-picture IDs for a subset of sub-pictures based on the flag. Video decoder 1010 further includes a decoding module 1017 for decoding a subset of sub-pictures based on sub-picture IDs. Video decoder 1010 further includes a forwarder 1019 for forwarding a subset of sub-pictures for display as part of the decoded video sequence. Video decoder 1010 may be further configured to perform any of the steps of method 900.

[00127] Первый компонент напрямую связан со вторым компонентом, когда нет промежуточных компонентов, за исключением линии, трассировки или другой среды между первым компонентом и вторым компонентом. Первый компонент косвенно связан со вторым компонентом, когда есть промежуточные компоненты, отличные от линии, следа или другой среды между первым компонентом и вторым компонентом. Термин «связанный» и его варианты включают как напрямую связанные, так и косвенно связанные. Использование термина «примерно» означает диапазон, включающий ± 10% от следующего числа, если не указано иное.[00127] The first component is directly coupled to the second component when there are no intermediate components other than a line, trace, or other medium between the first component and the second component. The first component is indirectly related to the second component when there are intermediate components other than a line, trace, or other medium between the first component and the second component. The term “related” and its variations include both directly related and indirectly related. The use of the term “about” means a range including ±10% of the following figure unless otherwise noted.

[00128] Также следует понимать, что этапы примерных способов, изложенных в данном документе, не обязательно должны выполняться в описанном порядке, и порядок этапов таких способов следует понимать как просто примерный. Аналогичным образом, в такие способы могут быть включены дополнительные этапы, а некоторые этапы могут быть опущены или объединены в способах, согласующихся с различными вариантами осуществления настоящего раскрытия.[00128] It should also be understood that the steps of the exemplary methods set forth herein are not necessarily performed in the order described, and the order of the steps of such methods is to be understood as merely exemplary. 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.

[00129] Хотя в настоящем раскрытии представлено несколько вариантов осуществления, можно понять, что раскрытые системы и способы могут быть воплощены во многих других конкретных формах, не выходя за рамки сущности или объема настоящего раскрытия. Настоящие примеры следует рассматривать как иллюстративные, а не как ограничительные, и цель не ограничиваться приведенными здесь подробностями. Например, различные элементы или компоненты могут быть объединены или интегрированы в другую систему, или определенные функции могут быть опущены или не реализованы.[00129] Although the present disclosure presents several embodiments, it will 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. These examples should be considered illustrative and not restrictive, and it is not intended to be limited by the details provided herein. For example, various elements or components may be combined or integrated into another system, or certain functions may be omitted or not implemented.

[00130] Кроме того, методики, системы, подсистемы и способы, описанные и проиллюстрированные в различных вариантах осуществления как дискретные или отдельные, могут быть объединены или интегрированы с другими системами, компонентами, технологиями или способами без отклонения от объема настоящего раскрытия. Другие примеры изменений, замен и преобразований могут быть установлены специалистом в данной области техники и могут быть выполнены без отклонения от сущности и объема, раскрытых в данном документе.[00130] In addition, the techniques, 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 examples of changes, substitutions and transformations may be ascertained by one skilled in the art and may be made without departing from the spirit and scope disclosed herein.

Claims (40)

1. Способ декодирования видеопоследовательности из битового потока, реализуемый в декодере, при этом способ содержит этапы, на которых:1. A method for decoding a video sequence from a bit stream, implemented in a decoder, the method comprising the stages of: принимают посредством приемника декодера извлеченный битовый поток, который является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков, причем извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока;receiving, by the decoder receiver, an extracted bitstream that results from a process of extracting a subbitstream from an input bitstream containing a set of sub-pictures, wherein the extracted bitstream contains only a subset of sub-pictures of the input bitstream prior to the process of extracting the subbitstream; определяют посредством процессора декодера то, что флаг из извлеченного битового потока установлен указывать, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке;determining, by the decoder processor, that a flag from the extracted bitstream is set to indicate that sub-picture information related to a subset of sub-pictures is present in the extracted bitstream; получают посредством процессора один или более идентификаторов (ID) подснимков для поднабора подснимков на основе этого флага; иobtaining, by the processor, one or more sub-picture IDs for a subset of sub-pictures based on this flag; And декодируют посредством процессора поднабор подснимков на основе идентификаторов (ID) подснимков.decoding, by the processor, a subset of sub-pictures based on sub-picture IDs. 2. Способ по п.1, дополнительно содержащий этап, на котором получают посредством процессора длину в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков.2. The method of claim 1, further comprising obtaining, by the processor, the bit length of a syntax element comprising one or more sub-picture IDs. 3. Способ по п.1 или 2, в котором флаг, идентификаторы подснимков и длина получены из набора параметров последовательности (SPS) в извлеченном битовом потоке.3. The method of claim 1 or 2, wherein the flag, sub-picture identifiers and length are obtained from a sequence parameter set (SPS) in the extracted bitstream. 4. Способ по любому из пп.1-3, в котором флаг является флагом присутствия информации о подснимках (subpic_info_present_flag).4. The method according to any one of claims 1-3, in which the flag is a flag for the presence of information about subpictures (subpic_info_present_flag). 5. Способ по любому из пп.1-4, в котором идентификаторы подснимков содержатся в синтаксической структуре идентификатора подснимка SPS (sps_subpic_id[i]).5. The method according to any one of claims 1 to 4, wherein the subpicture identifiers are contained in the syntactic structure of the SPS subpicture identifier (sps_subpic_id[i]). 6. Способ по любому из пп.1-5, в котором длина содержится в синтаксической структуре длины идентификаторов подснимков SPS минус один плюс один (sps_subpic_id_len_minus1 plus 1). 6. The method according to any one of claims 1 to 5, wherein the length is contained in the syntactic structure of the length of SPS subpicture identifiers minus one plus one (sps_subpic_id_len_minus1 plus 1). 7. Способ по любому из пп.1-6, в котором требуется, чтобы флаг был установлен в единицу для указания того, что информация о подснимках присутствует для закодированной послойно видеопоследовательности (CLVS) и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока.7. The method of any one of claims 1 to 6, wherein the flag is required to be set to one to indicate that sub-picture information is present for a coded layer-by-layer video sequence (CLVS) and that each picture from the CLVS contains more than one sub-picture when the extracted bitstream is the result of the process of extracting a subbitstream from the input bitstream. 8. Способ кодирования видеопоследовательности в битовый поток, реализуемый в кодере, при этом способ содержит этапы, на которых:8. A method for encoding a video sequence into a bit stream implemented in an encoder, wherein the method contains the stages of: кодируют посредством процессора кодера входной битовый поток, содержащий набор подснимков;encoding, by an encoder processor, an input bit stream containing a set of sub-pictures; выполняют посредством процессора процесс извлечения битового подпотока в отношении входного битового потока для создания извлеченного битового потока, содержащего только поднабор подснимков входного битового потока;performing, by the processor, a sub-bitstream extraction process with respect to the input bitstream to create an extracted bitstream containing only a subset of sub-snapshots of the input bitstream; кодируют в извлеченный битовый поток посредством процессора один или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке;encoding into the extracted bit stream, by the processor, one or more sub-picture identifiers (IDs) for a subset of sub-pictures in the extracted bit stream; устанавливают посредством процессора флаг в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке; иsetting, by the processor, a flag in the extracted bit stream to indicate that sub-picture information related to a subset of sub-pictures is present in the extracted bit stream; And сохраняют посредством памяти, соединенной с процессором, битовый поток для передачи в декодер.storing, by means of a memory connected to the processor, a bit stream for transmission to the decoder. 9. Способ по п.8, дополнительно содержащий этап, на котором кодируют посредством процессора длину в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков, в извлеченный битовый поток.9. The method of claim 8, further comprising encoding, by the processor, the bit length of a syntax element comprising one or more sub-picture identifiers (IDs) into the extracted bit stream. 10. Способ по п.8 или 9, в котором флаг, идентификаторы подснимков и длина закодированы в набор параметров последовательности (SPS) в извлеченном битовом потоке.10. The method of claim 8 or 9, wherein the flag, sub-picture identifiers and length are encoded into a sequence parameter set (SPS) in the extracted bitstream. 11. Способ по любому из пп.8-10, в котором флаг является флагом присутствия информации о подснимках (subpic_info_present_flag).11. The method according to any one of claims 8-10, in which the flag is a subpicture information presence flag (subpic_info_present_flag). 12. Способ по любому из пп.8-11, в котором идентификаторы подснимков содержатся в синтаксической структуре идентификатора подснимка SPS (sps_subpic_id[i]).12. The method according to any one of claims 8 to 11, wherein the subpicture identifiers are contained in the syntactic structure of the SPS subpicture identifier (sps_subpic_id[i]). 13. Способ по любому из пп.8-12, в котором длина содержится в синтаксической структуре длины идентификаторов подснимков SPS минус один плюс один (sps_subpic_id_len_minus1 plus 1). 13. The method according to any one of claims 8 to 12, wherein the length is contained in the syntactic structure of the length of SPS subpicture identifiers minus one plus one (sps_subpic_id_len_minus1 plus 1). 14. Способ по любому из пп.8-13, в котором требуется, чтобы флаг был установлен в единицу для указания того, что информация о подснимках присутствует для закодированной послойно видеопоследовательности (CLVS) и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока.14. The method of any one of claims 8 to 13, wherein the flag is required to be set to one to indicate that sub-picture information is present for a coded layer-by-layer video sequence (CLVS) and that each picture from the CLVS contains more than one sub-picture when the extracted bitstream is the result of the process of extracting a subbitstream from the input bitstream. 15. Устройство видеокодирования, содержащее:15. Video encoding device containing: процессор, приемник, соединенный с процессором, память, соединенную с процессором, и передатчик, соединенный с процессором, при этом процессор, приемник, память и передатчик выполнены с возможностью осуществлять способ по любому из пп.1-14.a processor, a receiver coupled to the processor, a memory coupled to the processor, and a transmitter coupled to the processor, wherein the processor, receiver, memory, and transmitter are configured to implement the method of any one of claims 1 to 14. 16. Долговременный машиночитаемый носитель, содержащий компьютерный программный продукт для использования устройством видеокодирования, причем компьютерный программный продукт содержит машиноисполняемые инструкции, хранящиеся на долговременном машиночитаемом носителе, которые при их исполнении процессором предписывают устройству видеокодирования выполнять способ по любому из пп.1-14.16. A non-transitory computer readable medium comprising a computer program product for use by a video encoding device, the computer program product comprising computer executable instructions stored on the non-transitory computer readable medium which, when executed by a processor, cause the video encoding device to perform the method of any one of claims 1 to 14. 17. Декодер, содержащий:17. Decoder containing: средство приема для приема извлеченного битового потока, который является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков, при этом извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока;receiving means for receiving an extracted bit stream that results from a process of extracting a sub-bit stream from an input bit stream containing a set of sub-pictures, wherein the extracted bit stream contains only a subset of sub-pictures of the input bit stream prior to the process of extracting the sub-bit stream; средство определения для определения того, что флаг из извлеченного битового потока установлен для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке;determination means for determining that a flag from the extracted bit stream is set to indicate that sub-picture information related to a subset of sub-pictures is present in the extracted bit stream; средство получения для получения одного или более идентификаторов (ID) подснимков для поднабора подснимков на основе флага;obtaining means for obtaining one or more sub-picture IDs for a subset of sub-pictures based on the flag; средство декодирования для декодирования поднабора подснимков на основе идентификаторов (ID) подснимков; иdecoding means for decoding a subset of sub-pictures based on sub-picture IDs; And средство пересылки для пересылки поднабора подснимков для отображения в качестве части декодированной видеопоследовательности.forwarder means for forwarding a subset of sub-pictures for display as part of the decoded video sequence. 18. Декодер по п.17, при этом декодер дополнительно выполнен с возможностью осуществлять способ по любому из пп.1-7.18. The decoder according to claim 17, wherein the decoder is further configured to implement the method according to any one of claims 1 to 7. 19. Кодер, содержащий:19. Encoder containing: первое средство кодирования для кодирования входного битового потока, содержащего набор подснимков;first encoding means for encoding an input bit stream containing a set of sub-pictures; средство извлечения битового подпотока для выполнения процесса извлечения битового подпотока в отношении входного битового потока для создания извлеченного битового потока, содержащего только поднабор подснимков входного битового потока;subbitstream extractor means for performing a subbitstream extraction process on the input bitstream to create an extracted bitstream containing only a subset of subsnapshots of the input bitstream; второе средство кодирования для кодирования в извлеченный битовый поток одного или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке;second encoding means for encoding into the extracted bit stream one or more sub-picture IDs for a subset of sub-pictures in the extracted bit stream; средство установки для установки флага в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке; иsetting means for setting a flag in the extracted bit stream to indicate that sub-picture information related to a subset of sub-pictures is present in the extracted bit stream; And средство хранения для хранения битового потока для передачи в декодер.storage means for storing the bit stream for transmission to the decoder. 20. Кодер по п.19, при этом кодер дополнительно выполнен с возможностью осуществлять способ по любому из пп.8-14.20. The encoder according to claim 19, wherein the encoder is additionally configured to implement the method according to any of claims 8-14.
RU2022101538A 2019-07-05 2020-06-15 Extraction of video coding bit stream using identifier signaling RU2819291C2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US62/870,892 2019-07-05

Related Child Applications (1)

Application Number Title Priority Date Filing Date
RU2024112264A Division RU2024112264A (en) 2019-07-05 2020-06-15 VIDEO CODING BITSTREAM EXTRACTION USING ID SIGNALING

Publications (2)

Publication Number Publication Date
RU2022101538A RU2022101538A (en) 2023-08-08
RU2819291C2 true RU2819291C2 (en) 2024-05-16

Family

ID=

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2400941C1 (en) * 2007-01-12 2010-09-27 Мицубиси Электрик Корпорейшн Device for coding of dynamic images, device for decoding of dynamic images, method for coding of dynamic images and method for decoding of dynamic images
WO2015102959A1 (en) * 2014-01-02 2015-07-09 Vid Scale, Inc. Sub-bitstream extraction process for hevc extensions
US9414085B2 (en) * 2012-01-20 2016-08-09 Telefonaktiebolaget Lm Ericsson (Publ) Sub-bitstream extraction
RU2612577C2 (en) * 2012-07-02 2017-03-09 Нокиа Текнолоджиз Ой Method and apparatus for encoding video
US9918091B2 (en) * 2014-06-20 2018-03-13 Qualcomm Incorporated Systems and methods for assigning a minimum value to a syntax structure in a parameter set
WO2018221368A1 (en) * 2017-05-31 2018-12-06 シャープ株式会社 Moving image decoding device, and moving image encoding device
US10284867B2 (en) * 2014-12-18 2019-05-07 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2400941C1 (en) * 2007-01-12 2010-09-27 Мицубиси Электрик Корпорейшн Device for coding of dynamic images, device for decoding of dynamic images, method for coding of dynamic images and method for decoding of dynamic images
US9414085B2 (en) * 2012-01-20 2016-08-09 Telefonaktiebolaget Lm Ericsson (Publ) Sub-bitstream extraction
RU2612577C2 (en) * 2012-07-02 2017-03-09 Нокиа Текнолоджиз Ой Method and apparatus for encoding video
WO2015102959A1 (en) * 2014-01-02 2015-07-09 Vid Scale, Inc. Sub-bitstream extraction process for hevc extensions
US9918091B2 (en) * 2014-06-20 2018-03-13 Qualcomm Incorporated Systems and methods for assigning a minimum value to a syntax structure in a parameter set
US10284867B2 (en) * 2014-12-18 2019-05-07 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding
WO2018221368A1 (en) * 2017-05-31 2018-12-06 シャープ株式会社 Moving image decoding device, and moving image encoding device

Similar Documents

Publication Publication Date Title
US11968400B2 (en) Video coding bitstream extraction with identifier signaling
AU2022204212B2 (en) Filter flags for subpicture deblocking
US11889087B2 (en) Tile group assignment for raster scan and rectangular tile groups in video coding
US20230344999A1 (en) Explicit Address Signaling In Video Coding
KR20220063262A (en) Instruction of one slice per subpicture in subpicture-based video coding
RU2819291C2 (en) Extraction of video coding bit stream using identifier signaling
KR20220053676A (en) Signaling of subpicture ID in subpicture based video coding
RU2792176C2 (en) Video encoder, video decoder, and corresponding methods
RU2819201C1 (en) Information on synchronization of images and decoding units for temporal scalability
RU2821048C1 (en) Hrd parameters for layer-based conformity testing
RU2820076C1 (en) Hrd compliance tests for ols
RU2806278C2 (en) Device and method of video encoding
NZ789468A (en) Filter flags for subpicture deblocking