RU2819291C2 - Extraction of video coding bit stream using identifier signaling - Google Patents
Extraction of video coding bit stream using identifier signaling Download PDFInfo
- 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
Links
- 238000000605 extraction Methods 0.000 title claims description 37
- 230000011664 signaling Effects 0.000 title description 3
- 238000000034 method Methods 0.000 claims abstract description 105
- 230000008569 process Effects 0.000 claims abstract description 35
- 230000005540 biological transmission Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 abstract description 21
- 230000000694 effects Effects 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 230000033001 locomotion Effects 0.000 description 85
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 30
- 238000013139 quantization Methods 0.000 description 24
- 239000013598 vector Substances 0.000 description 20
- 238000010586 diagram Methods 0.000 description 17
- 238000007906 compression Methods 0.000 description 15
- 230000006835 compression Effects 0.000 description 14
- 239000012634 fragment Substances 0.000 description 11
- 239000010410 layer Substances 0.000 description 11
- 238000004458 analytical method Methods 0.000 description 9
- 238000000638 solvent extraction Methods 0.000 description 9
- 238000001914 filtration Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 5
- 238000011017 operating method Methods 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 230000002123 temporal effect Effects 0.000 description 5
- 230000003044 adaptive effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 241000023320 Luma <angiosperm> Species 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 239000011449 brick Substances 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000004886 head movement Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000002023 wood Substances 0.000 description 1
Images
Abstract
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
[0049] На этапе 101 видеосигнал вводится в кодер. Например, видеосигнал может быть несжатым видеофайлом, хранящимся в памяти. В качестве другого примера видеофайл может быть захвачен устройством видеозахвата, например видеокамерой, и закодирован для поддержки потоковой передачи видео в реальном времени. Видеофайл может включать в себя как аудио составляющую, так и видео составляющую. Видео составляющая содержит серию кадров изображений, которые при последовательном просмотре создают визуальное впечатление движения. Кадры содержат пиксели, которые выражаются в единицах света, называемых здесь компонентами яркости (или дискретными отсчетами яркости), и цветом, который упоминается как компоненты цветности (или дискретные отсчеты цвета). В некоторых примерах кадры могут также содержать значения глубины для поддержки трехмерного просмотра.[0049] At
[0050] На этапе 103 видео разбивается на блоки. Разбиение включает в себя разделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, при высокоэффективном видеокодировании (HEVC) (также известном как H.265 и MPEG-H Часть 2) кадр сначала можно разделить на единичные блоки дерева кодирования (CTU), которые представляют собой блоки заранее заданного размера (например, шестьдесят четыре пикселя на шестьдесят четыре пикселя). Единичные блоки CTU содержат дискретные отсчеты яркости и цветности. Деревья кодирования могут использоваться для разделения CTU на блоки, а затем рекурсивно разделять блоки до тех пор, пока не будут достигнуты конфигурации, поддерживающие дальнейшее кодирование. Например, компоненты яркости кадра могут делиться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения яркости. Кроме того, компоненты цветности кадра могут делиться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения цвета. Соответственно, механизмы разделения меняются в зависимости от содержимого видеокадров.[0050] At
[0051] На этапе 105 используются различные механизмы сжатия для сжатия блоков изображения, разделенных на этапе 103. Например, может использоваться интер-предсказание и/или интра-предсказание. Интре-предсказание предназначено для использования того факта, что объекты в общей сцене имеют тенденцию появляться в последовательных кадрах. Соответственно, блок, изображающий объект в опорном кадре, не нужно повторно описывать в соседних кадрах. В частности, объект, такой как таблица, может оставаться в постоянной позиции на протяжении нескольких кадров. Следовательно, таблица описывается один раз, и соседние кадры могут обращаться к опорному кадру. Механизмы сопоставления с образцом могут использоваться для сопоставления объектов в нескольких кадрах. Кроме того, движущиеся объекты могут быть представлены в нескольких кадрах, например, из-за движения объекта или движения камеры. В качестве конкретного примера видео может показывать автомобиль, который движется по экрану в нескольких кадрах. Векторы движения могут использоваться для описания такого движения. Вектор движения - это двумерный вектор, который обеспечивает смещение от координат объекта в кадре до координат объекта в опорном кадре. По существу, интер- предсказание может кодировать блок изображения в текущем кадре как набор векторов движения, указывающих смещение от соответствующего блока в опорном кадре.[0051] At
[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
[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
[0055] Декодер принимает битовый поток и начинает процесс декодирования на этапе 111. В частности, декодер использует схему энтропийного декодирования для преобразования битового потока в соответствующий синтаксис и видеоданные. Декодер использует синтаксические данные из битового потока для определения разбиений для кадров на этапе 111. Разбиение должно соответствовать результатам разбиения блока на этапе 103. Теперь описывается энтропийное кодирование/декодирование, используемое на этапе 111. Кодер осуществляет многократный выбор вариантов в процессе сжатия, таких как выбор схем разбиения на блоки из нескольких возможных вариантов на основе пространственного позиционирования значений во входном изображении(ях). Для сигнализации конкретного выбора может использоваться большое количество бинарных элементов (бинов). В данном контексте бинарный элемент - это двоичное значение, которое обрабатывается как переменная (например, битовое значение, которое может варьироваться в зависимости от контекста). Энтропийное кодирование позволяет кодеру отбросить любые варианты, которые явно не подходят для конкретного случая, оставив набор допустимых вариантов. Затем каждому допустимому варианту присваивается кодовое слово. Длина кодовых слов основана на количестве допустимых вариантов (например, один бинарный элемент для двух вариантов, два бинарных элемента для трех-четырех вариантов и т.д.) Затем кодер кодирует кодовое слово для выбранного варианта. Эта схема уменьшает размер кодовых слов, поскольку кодовые слова настолько велики, насколько желательно, чтобы однозначно указать выбор из небольшого поднабора допустимых вариантов, в отличие от однозначного указания выбора из потенциально большого набора всех возможных вариантов. Затем декодер декодирует выбор, определяя набор допустимых вариантов аналогично кодеру. Определив набор допустимых вариантов, декодер может считать кодовое слово и определить выбор, сделанный кодером.[0055] The decoder receives the bitstream and begins the decoding process at
[0056] На этапе 113 декодер выполняет блочное декодирование. В частности, декодер использует обратное преобразование для генерации остаточных блоков. Затем декодер использует остаточные блоки и соответствующие блоки предсказания для восстановления блоков изображения в соответствии с разбиением. Блоки предсказания могут включать в себя как блоки интра-предсказания, так и блоки интер-предсказания, сгенерированные в кодере на этапе 105. Блоки восстановленного изображения затем размещаются в кадрах восстановленного видеосигнала в соответствии с данными разбиения, определенными на этапе 111. Синтаксис для этапа 113 также может передаваться в битовом потоке посредством энтропийного кодирования, как описано выше.[0056] At
[0057] На этапе 115 выполняется фильтрация кадров восстановленного видеосигнала аналогично этапу 107 в кодере. Например, фильтры подавления шума, фильтры устранения блочности, адаптивные контурные фильтры и фильтры SAO могут применяться к кадрам для удаления артефактов блочности. После фильтрации кадров видеосигнал может выводиться на дисплей на этапе 117 для просмотра конечным пользователем.[0057] At
[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)
[0059] Разделенный видеосигнал 201 представляет собой захваченную видеопоследовательность, которая была разделена на блоки пикселей с помощью дерева кодирования. Дерево кодирования использует различные режимы разделения для разделения блока пикселей на более мелкие блоки пикселей. Затем эти блоки можно разделить на более мелкие блоки. Блоки могут называться узлами в дереве кодирования. Более крупные родительские узлы разделяются на более мелкие дочерние узлы. Количество раз, когда узел делится на подразделения, называется глубиной дерева узлов/кодирования. В некоторых случаях разделенные блоки могут быть включены в единичные блоки кодирования (CU). Например, CU может быть частью CTU, которая содержит блок яркости, блок(-и) красной цветоразности (Cr) и блок(-и) синей цветоразности (Cb) вместе с соответствующими инструкциями синтаксиса для CU. Режимы разделения могут включать в себя двоичное дерево (BT), троичное дерево (TT) и квадратное дерево (QT), используемые для разделения узла на два, три или четыре дочерних узла, соответственно, различной формы в зависимости от применяемых режимов разделения. Разделенный видеосигнал 201 пересылается в компонент 211 общего управления кодером, компонент 213 масштабирования и квантования преобразования, компонент 215 оценки интра-режима, компонент 227 анализа управления фильтрами и компонент 221 оценки движения для сжатия.[0059] The divided
[0060] Компонент 211 общего управления кодером выполнен с возможностью принятия решений, связанных с кодированием изображений видеопоследовательности в битовый поток в соответствии с ограничениями применения. Например, компонент 211 общего управления кодером управляет оптимизацией скорости передачи/размера битового потока по сравнению с качеством восстановления. Такие решения могут быть приняты на основе доступности дискового пространства/полосы пропускания и запросов разрешения изображения. Компонент 211 общего управления кодером также управляет использованием буфера с учетом скорости передачи, чтобы уменьшить проблемы опустошения и переполнения буфера. Чтобы управлять этими проблемами, компонент 211 общего управления кодером управляет разбиением, предсказанием и фильтрацией с помощью других компонентов. Например, компонент 211 общего управления кодером может динамически увеличивать сложность сжатия для увеличения разрешения и увеличения использования полосы пропускания или уменьшения сложности сжатия для уменьшения разрешения и использования полосы пропускания. Следовательно, компонент 211 общего управления кодером управляет другими компонентами системы 200 кодека, чтобы сбалансировать качество восстановления видеосигнала с проблемами скорости передачи данных. Компонент 211 общего управления кодером создает данные управления, которые управляют работой других компонентов. Данные управления также направляются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке, чтобы сигнализировать параметры для декодирования в декодере.[0060] The general
[0061] Разделенный видеосигнал 201 также отправляется в компонент 221 оценки движения и компонент 219 компенсации движения для интер-предсказания. Кадр или сегмент разделенного видеосигнала 201 может быть разделен на несколько видеоблоков. Компонент 221 оценки движения и компонент 219 компенсации движения выполняют кодирование с интер-предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадрах для обеспечения временного предсказания. Система 200 кодека может выполнять несколько проходов кодирования, например, чтобы выбрать соответствующий режим кодирования для каждого блока видеоданных.[0061] The divided
[0062] Компонент 221 оценки движения и компонент 219 компенсации движения могут быть сильно интегрированы, но проиллюстрированы отдельно для концептуальных целей. Оценка движения, выполняемая компонентом 221 оценки движения, представляет собой процесс генерации векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение кодированного объекта относительно блока предсказания. Блок предсказания - это блок, который, как установлено, близко соответствует блоку, который должен быть кодирован, с точки зрения разности пикселей. Блок предсказания также может называться опорным блоком. Такая разность пикселей может определяться суммой абсолютной разности (SAD), суммой квадратов разности (SSD) или другими показателями разности. HEVC использует несколько закодированных объектов, включая CTU, блоки дерева кодирования (CTB) и CU. Например, CTU можно разделить на CTB, которые затем можно разделить на CB для включения в CU. CU может быть закодирован как единичный блок предсказания (PU), содержащий данные предсказания, и/или единичный блок преобразования (TU), содержащий преобразованные остаточные данные для CU. Компонент 221 оценки движения генерирует векторы движения, PU и TU, используя анализ искажения скорости как часть процесса оптимизации искажения скорости. Например, компонент 221 оценки движения может определять несколько опорных блоков, множество векторов движения и т.д. для текущего блока/кадра и может выбирать опорные блоки, векторы движения и т.д., имеющие наилучшие характеристики скорость-искажение. Наилучшие характеристики соотношения скорость-искажение уравновешивают как качество восстановления видео (например, количество потерь данных при сжатии), так и эффективность кодирования (например, размер окончательного кодирования).[0062] The
[0063] В некоторых примерах система 200 кодека может вычислять значения для положений суб-целочисленных пикселей опорных снимков, сохраненных в компоненте 223 буфера декодированных снимков. Например, система 200 видеокодека может интерполировать значения положений четверти пикселя, положений одной восьмой пикселя или других положений дробных пикселей опорного снимка. Следовательно, компонент 221 оценки движения может выполнять поиск движения относительно положений полных пикселей и положений дробных пикселей и выводить вектор движения с точностью до дробных пикселей. Компонент 221 оценки движения вычисляет вектор движения для PU видеоблока в сегменте с интер-кодированием путем сравнения положения PU с положением блока предсказания опорного снимка. Компонент 221 оценки движения выводит вычисленный вектор движения как данные движения для форматирования заголовка и компонент 231 CABAC для кодирования и движения в компонент 219 компенсации движения.[0063] In some examples,
[0064] Компенсация движения, выполняемая компонентом 219 компенсации движения, может включать в себя выборку или генерацию блока предсказания на основе вектора движения, определенного компонентом 221 оценки движения. Опять же, в некоторых примерах компонент 221 оценки движения и компонент 219 компенсации движения могут быть функционально интегрированы. После приема вектора движения для PU текущего видеоблока компонент 219 компенсации движения может определить местонахождение блока предсказания, на который указывает вектор движения. Затем формируется остаточный видеоблок путем вычитания значений пикселей блока предсказания из значений пикселей текущего кодируемого видеоблока, формируя значения разности пикселей. В общем, компонент 221 оценки движения выполняет оценку движения относительно компонентов яркости, а компонент 219 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости как для компонентов цветности, так и для компонентов яркости. Блок предсказания и остаточный блок направляются в компонент 213 масштабирования и квантования преобразования.[0064] The motion compensation performed by the
[0065] Разделенный видеосигнал 201 также отправляется компоненту 215 оценки интра-режима и компоненту 217 интра-предсказания. Как и в случае компонента 221 оценки движения и компонента 219 компенсации движения, компонент 215 оценки интра-режима и компонент 217 интра-предсказания могут быть сильно интегрированы, но проиллюстрированы отдельно для концептуальных целей. Компонент 215 оценки интра-режима и компонент 217 интра-предсказания предсказывают текущий блок относительно блоков в текущем кадре в качестве альтернативы интер-предсказанию, выполняемому компонентом 221 оценки движения и компонентом 219 компенсации движения между кадрами, как описано выше. В частности, компонент 215 оценки интра-режима определяет режим интра-предсказания для использования для кодирования текущего блока. В некоторых примерах компонент 215 оценки интра-режима выбирает соответствующий режим интра-предсказания для кодирования текущего блока из множества проверенных режимов интра-предсказания. Выбранные режимы интра-предсказания затем направляются в компонент 231 форматирования заголовка и CABAC для кодирования.[0065] The divided
[0066] Например, компонент 215 оценки интра-режима вычисляет значения скоростного искажения, используя анализ скоростного искажения для различных тестируемых режимов интра-предсказания, и выбирает режим интра-предсказания, имеющий лучшие характеристики скоростного искажения среди тестированных режимов. Анализ соотношения скорости к искажению обычно определяет величину искажения (или ошибки) между закодированным блоком и исходным не кодированным блоком, который был закодирован для создания закодированного блока, а также скорость передачи данных (например, количество битов), используемую для создания закодированного блока. Компонент 215 оценки интра-режима вычисляет отношения из искажений и скоростей для различных кодированных блоков, чтобы определить, какой режим интра-предсказания показывает наилучшее значение искажения скорости для блока. Кроме того, компонент 215 оценки интра-режима может быть выполнен с возможностью кодирования блоков глубины карты глубины с использованием режима моделирования глубины (DMM) на основе оптимизации скорости-искажения (RDO).[0066] For example,
[0067] Компонент 217 интра-предсказания может генерировать остаточный блок из блока предсказания на основе выбранных режимов интра-предсказания, определенных компонентом 215 оценки интра-режима, когда он реализован в кодере, или считывать остаточный блок из битового потока, когда реализован в декодере. Остаточный блок включает в себя разность в значениях между блоком предсказания и исходным блоком, представленную в виде матрицы. Остаточный блок затем пересылается в компонент 213 масштабирования и квантования преобразования. Компонент 215 оценки интра-режима и компонент 217 интра-предсказания могут работать как с компонентами яркости, так и с компонентами цветности.[0067] The
[0068] Компонент 213 масштабирования и квантования преобразования выполнен с возможностью дополнительного сжатия остаточного блока. Компонент 213 масштабирования и квантования преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT), дискретное синусоидальное преобразование (DST) или концептуально аналогичное преобразование, к остаточному блоку, создавая видеоблок, содержащий значения коэффициентов остаточного преобразования. Также можно использовать вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. Преобразование может преобразовывать остаточную информацию из области значений пикселей в область преобразования, такую как частотная область. Компонент 213 масштабирования и квантования преобразования также выполнен с возможностью масштабирования преобразованной остаточной информации, например, на основе частоты. Такое масштабирование включает в себя применение масштабного коэффициента к остаточной информации, так что разная частотная информация квантуется с разной степенью детализации, что может повлиять на окончательное визуальное качество восстановленного видео. Компонент 213 масштабирования и квантования преобразования также выполнен с возможностью квантования коэффициентов преобразования для дальнейшего снижения скорости передачи битов. Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена путем регулировки параметра квантования. В некоторых примерах компонент 213 масштабирования и квантования преобразования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Квантованные коэффициенты преобразования направляются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке.[0068] The transform scaling and
[0069] Компонент 229 масштабирования и обратного преобразования применяет обратную операцию компонента 213 масштабирования и квантования преобразования для поддержки оценки движения. Компонент 229 масштабирования и обратного преобразования применяет обратное масштабирование, преобразование и/или квантование для восстановления остаточного блока в области пикселей, например, для последующего использования в качестве опорного блока, который может стать блоком предсказания для другого текущего блока. Компонент 221 оценки движения и/или компонент 219 компенсации движения может вычислять опорный блок, добавляя остаточный блок обратно к соответствующему блоку предсказания для использования при оценке движения более позднего блока/кадра. Фильтры применяются к восстановленным опорным блокам для уменьшения артефактов, возникающих во время масштабирования, квантования и преобразования. В противном случае такие артефакты могут вызвать неточное предсказание (и создать дополнительные артефакты) при предсказании последующих блоков.[0069] The scaling and
[0070] Компонент 227 анализа управления фильтрами и компонент 225 внутриконтурных фильтров применяют фильтры к остаточным блокам и/или к восстановленным блокам изображения. Например, преобразованный остаточный блок из компонента 229 масштабирования и обратного преобразования может быть объединен с соответствующим блоком предсказания из компонента 217 интра-предсказания и/или компонента 219 компенсации движения для восстановления исходного блока изображения. Затем фильтры могут быть применены к восстановленному блоку изображения. В некоторых примерах вместо этого фильтры могут применяться к остаточным блокам. Как и в случае с другими компонентами на Фиг.2, компонент 227 анализа управления фильтрами и компонент 225 внутриконтурных фильтров сильно интегрированы и могут быть реализованы вместе, но изображены отдельно для концептуальных целей. Фильтры, применяемые к восстановленным опорным блокам, применяются к конкретным пространственным областям и включают несколько параметров для настройки того, как такие фильтры применяются. Компонент 227 анализа управления фильтрами анализирует восстановленные опорные блоки, чтобы определить, где такие фильтры должны быть применены, и устанавливает соответствующие параметры. Такие данные пересылаются в компонент 231 форматирования заголовка и CABAC в качестве данных управления фильтром для кодирования. Компонент 225 внутриконтурных фильтров применяет такие фильтры на основе данных управления фильтром. Фильтры могут включать в себя фильтр удаления блочности, фильтр подавления шума, фильтр SAO и адаптивный контурный фильтр. Такие фильтры могут применяться в пространственной/пиксельной области (например, в восстановленном блоке пикселей) или в частотной области, в зависимости от примера.[0070] The filter
[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
[0072] Компонент 231 форматирования заголовка и CABAC принимает данные от различных компонентов системы 200 кодека и кодирует такие данные в кодированный битовый поток для передачи в декодер. В частности, компонент 231 форматирования заголовка и CABAC генерирует различные заголовки для кодирования данных управления, таких как общие данные управления и данные управления фильтром. Кроме того, данные предсказания, включая данные интра-предсказания и движения, а также остаточные данные в форме квантованных данных коэффициентов преобразования, все кодируются в битовом потоке. Конечный битовый поток включает в себя всю информацию, требуемую декодером для восстановления исходного разделенного видеосигнала 201. Такая информация может также включать в себя таблицы индексов режима интра-предсказания (также называемые таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, указания наиболее вероятных режимов интра-предсказания, указание информации о разделах и т.д. Такие данные могут быть закодированы с использованием энтропийного кодирования. Например, информация может быть закодирована с использованием контекстно-адаптивного кодирования с переменной длиной (CAVLC), CABAC, основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с вероятностным интервалом разделения (PIPE) или другого метода энтропийного кодирования. После энтропийного кодирования закодированный битовый поток может быть передан на другое устройство (например, видеодекодер) или заархивирован для последующей передачи или поиска.[0072] Header formatting and
[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
[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
[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
[0076] Фиг.4 - это блок-схема, иллюстрирующая примерный видеодекодер 400. Видеодекодер 400 может использоваться для реализации функций декодирования системы 200 кодека и/или реализации этапов 111, 113, 115 и/или 117 рабочего способа 100. способа 400. Декодер 400 принимает битовый поток, например, от кодера 300, и формирует восстановленный выходной видеосигнал на основе битового потока для отображения конечному пользователю.[0076] FIG. 4 is a block diagram illustrating an
[0077] Битовый поток принимается компонентом 433 энтропийного декодирования. Компонент 433 энтропийного декодирования выполнен с возможностью реализации схемы энтропийного декодирования, такой как CAVLC, CABAC, SBAC, PIPE-кодирование или другие методики энтропийного кодирования. Например, компонент 433 энтропийного декодирования может использовать информацию заголовка, чтобы предоставить контекст для интерпретации дополнительных данных, закодированных как кодовые слова в битовом потоке. Декодированная информация включает в себя любую желаемую информацию для декодирования видеосигнала, такую как общие данные управления, данные управления фильтром, информацию о разделах, данные движения, данные предсказания и квантованные коэффициенты преобразования из остаточных блоков. Квантованные коэффициенты преобразования направляются в компонент 429 обратного преобразования и квантования для восстановления в остаточные блоки. Компонент 429 обратного преобразования и квантования может быть аналогичен компоненту 329 обратного преобразования и квантования.[0077] The bit stream is received by
[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
[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
[0080] Видеопоток 500 снимков включает в себя множество снимков, представленных во времени. Видеопоток 500 снимков, как показано на Фиг.5, сконфигурирован для использования в приложении виртуальной реальности (VR). VR работает путем кодирования сферы видеоконтента, который может отображаться так, как если бы пользователь находился в центре сферы. Каждый снимок включает в себя всю сферу. Между тем, пользователю отображается только часть снимка, известная как область просмотра. Например, пользователь может использовать головной дисплей (HMD), который выбирает и отображает область просмотра сферы на основе движения головы пользователя. Это создает впечатление физического присутствия в виртуальном пространстве, как показано на видео. Для достижения этого результата каждый снимок видеопоследовательности включает в себя всю сферу видеоданных в соответствующий момент времени. Однако пользователю отображается только небольшая часть (например, одно окно просмотра) снимка. Остальная часть снимка отбрасывается в декодере без визуализации. Весь снимок может быть передан так, чтобы можно было динамически выбирать и отображать другое окно просмотра в ответ на движение головы пользователя.[0080] The
[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
[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
[0083] В случае, если пользователь переключается с просмотра видеопотока 501 подснимков на видеопоток 502 подснимков, декодер запрашивает передачу нового текущего видеопотока 502 подснимков с более высоким качеством. Затем кодер может соответствующим образом изменить механизм объединения.[0083] In the event that the user switches from viewing
[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
[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
[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]
[0087] Данные 620 изображения содержат видеоданные, закодированные согласно интер-предсказанию, интра-предсказанию и/или межуровневому предсказанию, а также соответствующие преобразованные и квантованные остаточные данные. Например, видеопоследовательность включает в себя множество снимков 621. Снимок 621 - это массив дискретных отсчетов яркости и/или массив дискретных отсчетов цветности, которые создают кадр или его поле. Кадр - это полное изображение, которое предназначено для полного или частичного отображения пользователю в соответствующий момент в видеопоследовательности. Снимок 621 содержит один или более сегментов. Сегмент может быть определен как целое число полных клеток или целое число последовательных полных строк CTU (например, внутри клетки) снимка 621, которые содержатся исключительно в одном единичном блоке NAL. Сегменты далее делятся на CTU и/или CTB. CTU - это группа дискретных отсчетов заранее определенного размера, которые могут быть разделены деревом кодирования. CTB является поднабором CTU и содержит компоненты яркости или компоненты цветности CTU. CTU/CTB дополнительно делятся на блоки кодирования на основе деревьев кодирования. Затем блоки кодирования можно кодировать/декодировать согласно механизмам предсказания.[0087]
[0088] Снимок 621 может быть разделен на множество подснимков 623 и 624. Подснимок 623 и/или 624 представляет собой прямоугольную область из одного или более сегментов в снимке 621. Следовательно, каждый из сегментов и их подразделов может быть назначен подснимку 623 и/или 624. Это позволяет обрабатывать различные области снимка 621 по-разному с точки зрения кодирования в зависимости от того, какой подснимок 623 и/или 624 включен в такие области.[0088]
[0089] Битовый подпоток 601 может быть извлечен из битового потока 600 в соответствии с процессом 605 извлечения битового подпотока. Процесс 605 извлечения битового подпотока - это заданный механизм, который удаляет единичные блоки NAL из битового потока, которые не являются частью целевого набора, что приводит к выходному битовому подпотоку, который включает в себя единичные блоки NAL, которые включены в целевой набор. Единичный блок NAL содержит сегмент. По существу, процесс 605 извлечения битового подпотока сохраняет целевой набор сегментов и удаляет другие сегменты. Целевой набор может быть выбран на основе границ подснимка. В показанном примере сегменты, которые содержатся в подснимке 623, включены в целевой набор, а сегменты, которые включены в подснимок 624, не включены в целевой набор. По существу, процесс 605 извлечения битового подпотока создает битовый подпоток 601, который по существу аналогичен битовому потоку 600, но содержит подснимок 623, исключая подснимок 624. Процесс 605 извлечения битового подпотока может выполняться кодером и/или связанным средством видеомонтажа, выполненным с возможностью динамического изменения битового потока 600 на основе поведения/запросов пользователя.[0089] The
[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,
[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
[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
[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
[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.
{ for (i=0; brick_splitting_present_flag && i <NumTilesInPic; i++)
{
[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
[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
[00110] Память 732 содержит один или более типов памяти, таких как диски, ленточные накопители, твердотельные накопители, постоянное запоминающее устройство (ROM), запоминающее устройство произвольного доступа (RAM), флэш-память, троичное запоминающее устройство с адресацией по содержимому (TCAM), статическое запоминающее устройство произвольного доступа (SRAM) и т.д. Память 732 может использоваться как запоминающее устройство при переполнении данных, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы.[00110]
[00111] Фиг.8 является блок-схемой примерного способа 800 кодирования видеопоследовательности в битовый поток, например битовый поток 600, и извлечения битового подпотока, такого как битовый подпоток 601, при уменьшении ошибок с идентификаторами. Способ 800 может использоваться кодером, например системой 200 кодека, кодером 300 и/или устройством 700 видеокодирования, при выполнении способа 100 для кодирования видеопотока 500 снимков и/или видеопотоков 501-503 подснимков.[00111] FIG. 8 is a flow diagram of an
[00112] Способ 800 может начинаться, когда кодер принимает видеопоследовательность, включающую в себя множество снимков, и решает кодировать эту видеопоследовательность в битовый поток, например, на основе ввода пользователя. На этапе 801 кодер кодирует входной битовый поток, такой как видеопоток 500 снимков и/или битовый поток 600, содержащий набор подснимков. Например, битовый поток может содержать видеоданные VR и/или видеоданные телеконференции. Набор подснимков может содержать множество подснимков. Кроме того, подснимки могут быть связаны с идентификаторами подснимков.[00112]
[00113] На этапе 803 кодер и/или связанное с ним средство видеомонтажа выполняет процесс извлечения битового подпотока в отношении входного битового потока, чтобы создать извлеченный битовый поток, такой как видеопотоки 501-503 подснимков и/или битовый подпоток 601. Извлеченный битовый поток содержит только поднабор подснимков входного битового потока. В частности, извлеченный битовый поток содержит только подснимки, включенные в набор подснимков во входном битовом потоке. Кроме того, извлеченный битовый поток исключает один или более подснимков из набора подснимков во входном битовом потоке. По существу, входной битовый поток может содержать CLVS снимков, а извлеченный битовый поток содержит CLVS подснимков снимков.[00113] At
[00114] На этапе 805 кодер кодирует в извлеченный битовый поток один или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке. Например, такие идентификаторы подснимков могут быть исключены из входного битового потока. Соответственно, кодер может кодировать такие идентификаторы подснимков в извлеченный битовый поток для поддержки декодирования подснимков, содержащихся в извлеченном битовом потоке. Например, идентификаторы подснимков могут содержаться/закодированы в синтаксической структуре sps_subpic_id [i] в извлеченном битовом потоке.[00114] At
[00115] На этапе 807 кодер кодирует длину в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков, в извлеченный битовый поток. Например, длина идентификаторов подснимков может быть исключена из входного битового потока. Соответственно, кодер может кодировать длину идентификаторов подснимков в извлеченный битовый поток, чтобы поддерживать декодирование подснимков, содержащихся в извлеченном битовом потоке. Например, длина может содержаться/закодироваться в синтаксической структуре sps_subpic_id_len_minus1 plus 1 в извлеченном битовом потоке.[00115] At
[00116] На этапе 809 кодер может установить флаг в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке. Флаг может указывать декодеру, что идентификаторы подснимков и/или длина идентификаторов (ID) подснимков присутствуют в извлеченном битовом потоке. Например, флаг может быть subpic_info_present_flag. В конкретном примере требуется, чтобы флаг был установлен в единицу, чтобы указать, что информация о подснимках присутствует для CLVS (например, содержится во входном битовом потоке и/или извлеченном битовом потоке) и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока. В некоторых примерах флаг, идентификаторы подснимков и длина кодируются в SPS в извлеченном битовом потоке.[00116] At
[00117] На этапе 811 кодер сохраняет битовый поток для передачи в декодер. Затем в некоторых примерах битовый поток может быть передан в декодер. Например, битовый поток может быть передан в декодер по запросу декодера, например, на основании запроса пользователя.[00117] At
[00118] Фиг.9 является блок-схемой примерного способа 900 декодирования видеопоследовательности из битового подпотока, такого как битовый подпоток 601, извлеченного из битового потока, такого как битовый поток 600. Способ 900 может использоваться декодером, например системой 200 кодека, декодером 400 и/или устройством 700 видеокодирования, при выполнении способа 100 для декодирования видеопотока 500 снимков и/или видеопотоков 501-503 подснимков.[00118] FIG. 9 is a flow diagram of an
[00119] Способ 900 может начинаться, когда декодер начинает принимать битовый подпоток, извлеченный из битового потока, например, в результате способа 800. На этапе 901 декодер принимает извлеченный битовый поток. Извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков. Извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока. В частности, извлеченный битовый поток содержит только подснимки, включенные в набор подснимков во входном битовом потоке. Кроме того, извлеченный битовый поток исключает один или более подснимков из набора подснимков во входном битовом потоке. По существу, входной битовый поток может содержать CLVS снимков, а извлеченный битовый поток может содержать CLVS подснимков снимков. Принятый извлеченный битовый поток также может называться битовым подпотоком. Например, извлеченный битовый поток может содержать подснимок(и), включая видеоданные VR и/или видеоданные телеконференции.[00119]
[00120] На этапе 903 декодер определяет, что флаг из извлеченного битового потока установлен, чтобы указать, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке. Флаг может указывать, что идентификаторы подснимков и/или длина идентификаторов (ID) подснимков присутствуют в извлеченном битовом потоке. Например, флаг может быть subpic_info_present_flag. В конкретном примере требуется, чтобы флаг был установлен в единицу, чтобы указать, что информация о подснимках присутствует для CLVS (например, содержится во входном битовом потоке и/или извлеченном битовом потоке) и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока.[00120] At
[00121] На этапе 905 декодер получает длину в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков. Например, длина идентификаторов подснимков может быть исключена из входного битового потока, но включена в извлеченный битовый поток. Например, длина может содержаться/закодироваться в синтаксической структуре sps_subpic_id_len_minus1 plus 1 в принятом извлеченном битовом потоке.[00121] At
[00122] На этапе 907 декодер получает один или более идентификаторов (ID) подснимков для поднабора подснимков на основе флага и/или на основе длины. Например, декодер может использовать этот флаг для определения наличия идентификаторов (ID) подснимков. Затем декодер может использовать длину для определения границ данных идентификаторов подснимков в битовом потоке. Например, идентификаторы подснимков могут быть исключены из входного битового потока, но включены в извлеченный битовый поток. Например, идентификаторы подснимков могут содержаться/закодированы в синтаксической структуре sps_subpic_id [i] в извлеченном битовом потоке. В некоторых примерах флаг, идентификаторы подснимков и длина получаются из SPS в извлеченном битовом потоке.[00122] At
[00123] На этапе 909 декодер может декодировать поднабор подснимков в извлеченном битовом потоке на основе идентификаторов подснимков, полученных на этапе 907. Затем декодер может переслать поднабор подснимков для отображения как часть декодированной видеопоследовательности на этапе 911.[00123] At
[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
[00125] Система 1000 включает в себя видеокодер 1002. Видеокодер 1002 содержит первый модуль 1001 кодирования для кодирования входного битового потока, содержащего набор подснимков. Видеокодер 1002 дополнительно содержит модуль 1004 извлечения битового подпотока для выполнения процесса извлечения битового подпотока в отношении входного битового потока для создания извлеченного битового потока, содержащего только поднабор подснимков входного битового потока. Видеокодер 1002 дополнительно содержит второй модуль 1003 кодирования для кодирования в извлеченный битовый поток одного или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке. Видеокодер 1002 дополнительно содержит модуль 1005 установки для установки флага в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке. Видеокодер 1002 дополнительно содержит модуль 1007 хранения для хранения битового потока для передачи в декодер. Видеокодер 1002 дополнительно содержит модуль 1009 передачи для передачи битового потока в видеодекодер 1010. Видеокодер 1002 может быть дополнительно выполнен с возможностью выполнения любого из этапов способа 800.[00125]
[00126] Система 1000 также включает в себя видеодекодер 1010. Видеодекодер 1010 содержит модуль 1011 приема для приема извлеченного битового потока, который является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков, причем извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока. Видеодекодер 1010 дополнительно содержит модуль 1013 определения для определения того, что флаг из извлеченного битового потока установлен для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке. Видеодекодер 1010 дополнительно содержит модуль 1015 получения для получения одного или более идентификаторов (ID) подснимков для поднабора подснимков на основе флага. Видеодекодер 1010 дополнительно содержит модуль 1017 декодирования для декодирования поднабора подснимков на основе идентификаторов (ID) подснимков. Видеодекодер 1010 дополнительно содержит модуль 1019 пересылки для пересылки поднабора подснимков для отображения в качестве части декодированной видеопоследовательности. Видеодекодер 1010 может быть дополнительно выполнен с возможностью выполнения любого из этапов способа 900.[00126]
[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)
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)
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)
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 |