RU2791938C1 - Transmission of interlayer prediction in video bit stream - Google Patents
Transmission of interlayer prediction in video bit stream Download PDFInfo
- Publication number
- RU2791938C1 RU2791938C1 RU2021127184A RU2021127184A RU2791938C1 RU 2791938 C1 RU2791938 C1 RU 2791938C1 RU 2021127184 A RU2021127184 A RU 2021127184A RU 2021127184 A RU2021127184 A RU 2021127184A RU 2791938 C1 RU2791938 C1 RU 2791938C1
- Authority
- RU
- Russia
- Prior art keywords
- layer
- vps
- parsing
- dependent
- image
- Prior art date
Links
Images
Abstract
Description
ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННУЮ ЗАЯВКУCROSS-REFERENCE TO RELATED APPLICATION
[1] Данная заявка испрашивает приоритет предварительной заявки на патент США№62/903,652, поданной 20 сентября 2019 г., и заявки на патент США №17/019,713, поданной 14 сентября 2020 г., которые полностью включены в настоящий документ.[1] This application claims priority of U.S. Provisional Application No. 62/903,652, filed September 20, 2019, and U.S. Patent Application No. 17/019,713, filed September 14, 2020, which are incorporated herein in their entirety.
УРОВЕНЬ ТЕХНИКИBACKGROUND OF THE INVENTION
1. Область техники, к которой относится изобретение1. Technical field to which the invention belongs
[2] Раскрытый объект изобретения относится к кодированию и декодированию видео, а более конкретно, к передаче межслойного предсказания в битовом потоке видео.[2] The disclosed subject matter of the invention relates to video encoding and decoding, and more specifically, to the transmission of interlayer prediction in a video bitstream.
2. Описание уровня техники2. Description of the prior art
[3] Кодирование и декодирование видео с использованием межкадрового предсказания с компенсацией движения известно уже несколько десятилетий. Несжатое цифровое видео может состоять из серии изображений, причем каждое изображение имеет пространственный размер, например, 1920×1080 отсчетов яркости и связанных отсчетов цветности. Серия изображений может иметь фиксированную или переменную частоту изображений (неофициально также известную как частота кадров), например, 60 изображений в секунду или 60 Гц. Несжатое видео имеет значительные требования к битрейту. Например, для видео 1080р60 4:2:0 с частотой 8 бит на отсчет (разрешение отсчета яркости 1920×1080 при частоте кадров 60 Гц) требуется полоса пропускания, близкая к 1,5 Гбит/с. Час такого видео требует более 600 ГБ дискового пространства.[3] Video encoding and decoding using motion-compensated inter-picture prediction has been known for decades. Uncompressed digital video may consist of a series of images, each image having a spatial size of, for example, 1920×1080 luma samples and associated chrominance samples. A series of images can have a fixed or variable image rate (informally also known as frame rate), such as 60 images per second or 60 Hz. Uncompressed video has significant bitrate requirements. For example, 1080p60 4:2:0 video at 8 bits per sample (1920x1080 brightness sample resolution at 60Hz frame rate) requires bandwidth close to 1.5Gbps. An hour of such video requires more than 600 GB of disk space.
[4] Одной из целей кодирования и декодирования видео может быть уменьшение избыточности входного видеосигнала посредством сжатия. Сжатие может помочь снизить вышеупомянутые требования к полосе пропускания или пространству для хранения, в некоторых случаях на два порядка или более. Могут использоваться как сжатие без потерь, так и сжатие с потерями, а также их комбинация. Сжатие без потерь относится к методам, при которых точная копия исходного сигнала может быть восстановлена из сжатого исходного сигнала. При использовании сжатия с потерями восстановленный сигнал может не быть идентичным исходному сигналу, но искажение между исходным и восстановленным сигналами достаточно мало, чтобы сделать восстановленный сигнал полезным для предполагаемого приложения. В случае видео широко применяется сжатие с потерями. Допустимая степень искажения зависит от приложения; например, пользователи определенных потребительских приложений потоковой передачи могут допускать более высокие искажения, чем пользователи приложений распределения телевидения. Достижимая степень сжатия может отражать следующее: более высокое разрешаемое/допустимое искажение может привести к более высокой степени сжатия.[4] One of the goals of video encoding and decoding may be to reduce the redundancy of the input video signal through compression. Compression can help reduce the aforementioned bandwidth or storage requirements, in some cases by two orders of magnitude or more. Both lossless and lossy compression, as well as a combination of both, can be used. Lossless compression refers to techniques where an exact copy of the original signal can be reconstructed from the compressed original signal. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signals is small enough to make the reconstructed signal useful for the intended application. In the case of video, lossy compression is widely used. The amount of distortion allowed depends on the application; for example, users of certain consumer streaming applications may tolerate higher distortion than users of television distribution applications. The achievable compression ratio may reflect the following: higher distortion resolution/tolerance may result in a higher compression ratio.
[5] Видеокодер и видеодекодер могут использовать методы из нескольких широких категорий, включая, например, компенсацию движения, преобразование, квантование и энтропийное кодирование, некоторые из которых будут представлены ниже.[5] The video encoder and video decoder may use techniques from several broad categories including, for example, motion compensation, transformation, quantization, and entropy coding, some of which will be presented below.
[6] Исторически видеокодеры и видеодекодеры имели тенденцию работать с заданным размером изображения, который в большинстве случаев был определен и оставался постоянным для кодированной видеопоследовательности (CVS), группы изображений (GOP) или аналогичного временного кадра с несколькими изображениями. Например, известно, что в MPEG-2 конструкция системы изменяет горизонтальное разрешение (и, следовательно, размер изображения) в зависимости от таких факторов, как активность сцены, но только для I-изображений, следовательно, обычно для GOP. Передискретизация опорных изображений для использования различных разрешений в CVS известна, например, из Рекомендаций МСЭ-Т Н.263, Приложение Р. Однако здесь размер изображения не изменяется, только опорные изображения подвергаются передискретизации, в результате чего потенциально могут использоваться только части холста изображения (в случае понижающей дискретизации) или только части захватываемой сцены (в случае повышающей дискретизации). Кроме того, Приложение Q Н.263 разрешает передискретизацию отдельного макроблока с коэффициентом два (в каждом измерении), в сторону повышения или понижения. Опять же, размер изображения остается прежним. Размер макроблока фиксирован в Н.263, и поэтому его не нужно передавать.[6] Historically, video encoders and video decoders tended to work with a given picture size, which in most cases was defined and held constant for a coded video sequence (CVS), group of pictures (GOP), or similar multi-picture time frame. For example, in MPEG-2, the system design is known to change the horizontal resolution (and hence the image size) depending on factors such as scene activity, but only for I-pictures, hence typically for GOP. The resampling of reference pictures to use different resolutions in CVS is known, for example, from ITU-T Rec. H.263, Annex P. However, here the image size is not changed, only the reference pictures are resampled, with the result that only parts of the image canvas can potentially be used (in in the case of downsampling) or only part of the captured scene (in the case of upsampling). In addition, H.263 Annex Q allows resampling of an individual macroblock by a factor of two (in each dimension), up or down. Again, the image size remains the same. The macroblock size is fixed in H.263 and therefore does not need to be transmitted.
[7] Изменение размера изображения в предсказанных изображениях стало более распространенным явлением в современном кодировании видео. Например, VP9 позволяет выполнять передискретизацию опорного изображения (RPR) и изменять разрешение для всего изображения. Аналогичным образом, некоторые предложения, сделанные в отношении VVC (включая, например, Hendry, et. al., «Оп adaptive resolution change (ARC) for VVC», документ JVT JVET-M0135-v1, 9-19 января 2019 г., полностью включенный в настоящий документ) позволяют выполнять передискретизацию целых опорных изображений с другим, более высоким или более низким, разрешением. В этом документе предлагается кодировать различные кандидаты разрешения в наборе параметров последовательности и ссылаться на них с помощью элементов синтаксиса для каждого изображения в наборе параметров изображения.[7] Image resizing in predicted images has become more common in modern video coding. For example, VP9 allows you to perform reference picture resampling (RPR) and resampling the entire picture. Likewise, some of the proposals made in relation to VVC (including, for example, Hendry, et. al., "On adaptive resolution change (ARC) for VVC", JVT document JVET-M0135-v1, January 9-19, 2019, incorporated herein in its entirety) allow resampling of entire reference pictures with a different, higher or lower resolution. This document proposes to encode different resolution candidates in a sequence parameter set and refer to them using the syntax elements for each image in the image parameter set.
РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯDISCLOSURE OF THE INVENTION
[8] Для решения одной или нескольких различных технических проблем в этом раскрытии описаны новые синтаксисы и их использование, предназначенные для передачи масштабирования в битовом потоке видео. Таким образом, может быть достигнута повышенная эффективность (де)кодирования.[8] In order to address one or more of the various technical issues, this disclosure describes new syntaxes and their uses for conveying scaling in a video bitstream. Thus, improved (de)coding efficiency can be achieved.
[9] Согласно представленным вариантам осуществления, с помощью передискретизации опорного изображения (RPR) или адаптивного изменения разрешения (ARC) дополнительная нагрузка для поддержки масштабируемости может быть достигнута посредством модификации синтаксиса высокого уровня (HLS). В технических аспектах межслойное предсказание используется в масштабируемой системе для повышения эффективности кодирования слоев улучшения. Помимо пространственных и временных предсказаний с компенсацией движения, которые доступны в однослойном кодеке, межслойное предсказание использует передискретизированные видеоданные восстановленного опорного изображения из опорного слоя для предсказания текущего слоя улучшения. Затем процесс передискретизации для межслойного предсказания выполняется на уровне блоков путем модификации существующего процесса интерполяции для компенсации движения. Это означает, что для поддержки масштабируемости не требуется дополнительного процесса передискретизации. В данном раскрытии описаны элементы синтаксиса высокого уровня для поддержки пространственной/качественной масштабируемости с использованием RPR.[9] According to the present embodiments, with Reference Picture Resampling (RPR) or Adaptive Resolution Resampling (ARC), additional overhead to support scalability can be achieved by modifying High Level Syntax (HLS). In technical aspects, interlayer prediction is used in a scalable system to increase the coding efficiency of enhancement layers. In addition to motion compensated spatial and temporal predictions that are available in a single layer codec, interlayer prediction uses resampled video data of a reconstructed reference picture from a reference layer to predict the current enhancement layer. Then, the resampling process for interlayer prediction is performed at the block level by modifying the existing interpolation process for motion compensation. This means that no additional resampling process is required to support scalability. This disclosure describes high level syntax elements for supporting spatial/qualitative scalability using RPR.
[10] Включены способ и устройство, содержащие память, конфигурированную для хранения компьютерного программного кода, и процессор или процессоры, конфигурированные для доступа к компьютерному программному коду и работы в соответствии с инструкциями компьютерного программного кода. Код компьютерной программы включает в себя парсинговый код, конфигурированный для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного набора параметров видео (VPS), содержащего по меньшей мере один элемент синтаксиса, указывающий, является ли по меньшей мере один слой в масштабируемом битовом потоке одним из зависимого слоя масштабируемого битового потока и независимого слоя масштабируемого битового потока, определяющий код, конфигурированный для побуждения по меньшей мере одного процессора определять количество зависимых слоев, включая зависимый слой, масштабируемого битового потока на основе множества флагов, включенных в VPS, первый декодирующий код, конфигурированный для побуждения по меньшей мере одного процессора декодировать изображение в зависимом слое путем парсинга и интерпретации списка межслойных опорных изображений (ILRP), второй декодирующий код, конфигурированный для побуждения по меньшей мере одного процессора декодировать изображение в независимом слое без парсинга и интерпретации списка ILRP.[10] Included is a method and apparatus comprising a memory configured to store computer program code and a processor or processors configured to access the computer program code and operate in accordance with instructions from the computer program code. The computer program code includes a parsing code configured to cause at least one processor to parse at least one video parameter set (VPS) containing at least one syntax element indicating whether at least one layer is in bitmap scalable stream by one of a dependent scalable bitstream layer and an independent scalable bitstream layer defining a code configured to cause at least one processor to determine the number of dependent layers, including a dependent layer, of a scalable bitstream based on a plurality of flags included in the VPS, the first decoding code , configured to cause at least one processor to decode an image in a dependent layer by parsing and interpreting an interlayer reference picture list (ILRP), a second decoding code configured to cause at least one processor to decode an image in independent layer without parsing and interpreting the ILRP list.
[11] Согласно вариантам осуществления, второй декодирующий код дополнительно конфигурирован для побуждения по меньшей мере одного процессора декодировать изображение в независимом слое путем парсинга и интерпретации списка опорных изображений, который не включает в себя какое-либо декодированное изображение другого слоя.[11] According to embodiments, the second decoding code is further configured to cause at least one processor to decode an image in an independent layer by parsing and interpreting a reference picture list that does not include any decoded picture of another layer.
[12] Согласно вариантам осуществления, список межслойных опорных изображений включает в себя декодированное изображение другого слоя.[12] According to embodiments, the list of interlayer reference pictures includes a decoded picture of another layer.
[13] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, указывает ли другой элемент синтаксиса максимальное количество слоев.[13] According to embodiments, the parsing code is further configured to cause at least one processor to parse at least one VPS by determining whether another syntax element specifies the maximum number of layers.
[14] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, содержит ли VPS флаг, указывающий, является ли другой слой в масштабируемом битовом потоке опорным слоем для по меньшей мере одного слоя.[14] According to embodiments, the parsing code is further configured to cause at least one processor to parse at least one VPS by determining whether the VPS contains a flag indicating whether another layer in the scalable bitstream is a reference layer for at least one layer.
[15] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, указывает ли флаг другой слой в качестве опорного слоя для по меньшей мере одного слоя, путем задания индекса другого слоя и индекса по меньшей мере одного слоя, причем парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, содержит ли VPS другой элемент синтаксиса, указывающий значение, меньшее, чем определенное количество зависимых слоев.[15] According to embodiments, the parsing code is further configured to cause at least one processor to parse at least one VPS by determining whether a flag indicates another layer as a reference layer for at least one layer, by setting an index of another layer, and an index of at least one layer, wherein the parsing code is further configured to cause at least one processor to parse at least one VPS by determining if the VPS contains another syntax element indicating a value less than a certain number of dependent layers.
[16] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, указывает ли флаг другой слой как не являющийся опорным слоем для по меньшей мере одного слоя, путем задания индекса другого слоя и индекса по меньшей мере одного слоя, причем парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, содержит ли VPS другой элемент синтаксиса, указывающий значение, меньшее, чем определенное количество зависимых слоев.[16] According to embodiments, the parsing code is further configured to cause at least one processor to parse at least one VPS by determining whether a flag indicates another layer as not being a reference layer for at least one layer by setting the index of the other layer and an index of at least one layer, wherein the parsing code is further configured to cause at least one processor to parse at least one VPS by determining if the VPS contains another syntax element indicating a value less than a certain number of dependent layers.
[17] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, содержит ли VPS флаг, указывающий, нужно ли декодировать множество слоев, включая по меньшей мере один слой, путем интерпретации списка ILRP.[17] According to embodiments, the parsing code is further configured to cause at least one processor to parse at least one VPS by determining whether the VPS contains a flag indicating whether to decode a plurality of layers, including at least one layer, by interpreting ILRP list.
[18] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, содержит ли VPS флаг, указывающий, нужно ли декодировать множество слоев, включая по меньшей мере один слой, без интерпретации списка ILRP.[18] According to embodiments, the parsing code is further configured to cause at least one processor to parse at least one VPS by determining whether the VPS contains a flag indicating whether a plurality of layers, including at least one layer, needs to be decoded, without interpreting ILRP list.
[19] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS и дополнительно содержит определение, содержит ли VPS флаг, указывающий, нужно ли декодировать множество слоев, включая по меньшей мере один слой, путем интерпретации списка ILRP.[19] According to embodiments, the parsing code is further configured to cause at least one processor to parse at least one VPS and further comprises determining whether the VPS contains a flag indicating whether to decode a plurality of layers, including at least one layer, by interpreting the ILRP list.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS
[20] Дополнительные признаки, сущность и различные преимущества раскрытого объекта изобретения будут более очевидны из следующего подробного описания и прилагаемых чертежей, на которых изображено следующее.[20] Additional features, essence and various advantages of the disclosed subject matter will be more apparent from the following detailed description and the accompanying drawings, which depict the following.
[21] На фиг. 1 показана схематическая иллюстрация упрощенной блок-схемы системы связи в соответствии с вариантом осуществления.[21] FIG. 1 is a schematic illustration of a simplified block diagram of a communication system in accordance with an embodiment.
[22] На фиг. 2 показана схематическая иллюстрация упрощенной блок-схемы системы связи в соответствии с вариантами осуществления.[22] FIG. 2 is a schematic illustration of a simplified block diagram of a communication system in accordance with embodiments.
[23] На фиг. 3 показана схематическая иллюстрация упрощенной блок-схемы декодера в соответствии с вариантами осуществления.[23] FIG. 3 is a schematic illustration of a simplified block diagram of a decoder in accordance with embodiments.
[24] На фиг. 4 показана схематическая иллюстрация упрощенной блок-схемы кодера в соответствии с вариантами осуществления.[24] FIG. 4 is a schematic illustration of a simplified block diagram of an encoder in accordance with embodiments.
[25] На фиг. 5А показана схематическая иллюстрация вариантов для передачи параметров ARC/RPR в соответствии с предшествующим уровнем техники.[25] FIG. 5A is a schematic illustration of options for transmitting ARC/RPR parameters in accordance with the prior art.
[26] На фиг. 5В показана схематическая иллюстрация вариантов для передачи параметров ARC/RPR в соответствии с предшествующим уровнем техники.[26] FIG. 5B is a schematic illustration of options for transmitting ARC/RPR parameters in accordance with the prior art.
[27] На фиг. 5С показана схематическая иллюстрация вариантов для передачи параметров ARC/RPR в соответствии с вариантами осуществления.[27] FIG. 5C is a schematic illustration of options for transmitting ARC/RPR parameters in accordance with embodiments.
[28] На фиг. 5D показана схематическая иллюстрация вариантов передачи параметров ARC/RPR в соответствии с вариантами осуществления.[28] FIG. 5D is a schematic illustration of options for transmitting ARC/RPR parameters in accordance with embodiments.
[29] На фиг. 5Е показана схематическая иллюстрация вариантов для передачи параметров ARC/RPR в соответствии с вариантами осуществления.[29] FIG. 5E is a schematic illustration of options for transmitting ARC/RPR parameters in accordance with embodiments.
[30] На фиг. 6 показана схематическая иллюстрация передачи разрешений изображения в соответствии с вариантами осуществления.[30] FIG. 6 is a schematic illustration of image permission transmission in accordance with embodiments.
[31] На фиг. 7 показана схематическая иллюстрация передачи размера изображения и окна соответствия в SPS в соответствии с вариантами осуществления.[31] FIG. 7 is a schematic illustration of image size transmission and matching window in SPS according to embodiments.
[32] На фиг. 8 показана схематическая иллюстрация передачи наличия межслойного предсказания в SPS в соответствии с вариантами осуществления.[32] FIG. 8 shows a schematic illustration of the transmission of the presence of interlayer prediction in SPS in accordance with embodiments.
[33] На фиг. 9 показана схематическая иллюстрация передачи индекса межслойного предсказания в заголовке слайса в соответствии с вариантами осуществления.[33] FIG. 9 is a schematic illustration of the transmission of an interlayer prediction index in a slice header, in accordance with embodiments.
[34] На фиг. 10 показана схематическая иллюстрация компьютерной системы в соответствии с вариантами осуществления.[34] FIG. 10 is a schematic illustration of a computer system in accordance with embodiments.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯIMPLEMENTATION OF THE INVENTION
[35] Предлагаемые признаки, обсуждаемые ниже, могут быть использованы по отдельности или скомбинированы в любом порядке. Кроме того, варианты осуществления могут быть реализованы схемами обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном примере один или более процессоров выполняют программу, которая хранится на невременном машиночитаемом носителе.[35] The proposed features discussed below may be used alone or combined in any order. In addition, embodiments may be implemented by processing circuits (eg, one or more processors or one or more integrated circuits). In one example, one or more processors execute a program that is stored on a non-transitory computer-readable medium.
[36] На фиг. 1 проиллюстрирована упрощенная блок-схема системы (100) связи согласно варианту осуществления настоящего раскрытия. Система (100) может включать в себя по меньшей мере два терминала (110 и 120), соединенных между собой через сеть (150). Для однонаправленной передачи данных первый терминал (110) может кодировать видеоданные в локальном местоположении для передачи другому терминалу (120) через сеть (150). Второй терминал (120) может принимать кодированные видеоданные другого терминала из сети (150), декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и т.п.[36] FIG. 1 illustrates a simplified block diagram of a communication system (100) according to an embodiment of the present disclosure. System (100) may include at least two terminals (110 and 120) interconnected via network (150). For unidirectional data transmission, the first terminal (110) may encode video data at the local location for transmission to another terminal (120) via the network (150). The second terminal (120) may receive the encoded video data of another terminal from the network (150), decode the encoded data, and display the recovered video data. Unidirectional data transfer may be common in media serving applications and the like.
[37] На фиг. 1 показана вторая пара терминалов (130, 140), обеспечивающая поддержку двунаправленной передачи кодированного видео, которая может происходить, например, во время видеоконференц-связи. Для двунаправленной передачи данных каждый терминал (130, 140) может кодировать видеоданные, захваченные в локальном местоположении, для передачи другому терминалу через сеть (150). Каждый терминал (130, 140) также может принимать кодированные видеоданные, переданные другим терминалом, может декодировать кодированные данные и может отображать восстановленные видеоданные на локальном устройстве отображения.[37] FIG. 1 shows a second pair of terminals (130, 140) providing support for bidirectional encoded video transmission, such as may occur during a video conference. For bi-directional data transmission, each terminal (130, 140) may encode video data captured at a local location for transmission to another terminal over a network (150). Each terminal (130, 140) may also receive the encoded video data transmitted by the other terminal, may decode the encoded data, and may display the recovered video data on a local display device.
[38] На фиг. 1 терминалы (110, 120, 130, 140) могут быть изображены как серверы, персональные компьютеры и смартфоны, но принципы настоящего раскрытия не могут быть ограничены этим. Варианты осуществления настоящего раскрытия находят применение в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференц-связи. Сеть (150) представляет собой любое количество сетей, которые передают кодированные видеоданные между терминалами (110, 120, 130, 140), включая, например, сети проводной и/или беспроводной связи. Сеть (150) связи может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Репрезентативные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего обсуждения архитектура и топология сети (150) могут быть несущественными для работы настоящего раскрытия, если это не объясняется в данном документе ниже.[38] FIG. 1, terminals (110, 120, 130, 140) may be depicted as servers, personal computers, and smartphones, but the principles of the present disclosure cannot be limited to this. Embodiments of the present disclosure find application in laptop computers, tablet computers, media players, and/or specialized video conferencing equipment. Network (150) is any number of networks that transmit encoded video data between terminals (110, 120, 130, 140), including, for example, wired and/or wireless networks. The communication network (150) may communicate on circuit-switched and/or packet-switched channels. Representative networks include telecommunications networks, local area networks, wide area networks and/or the Internet. For the purposes of this discussion, the architecture and topology of the network (150) may not be essential to the operation of this disclosure, unless explained herein below.
[39] На фиг. 2 проиллюстрировано, в качестве примера применения для раскрытого объекта изобретения, размещение видеокодера и видеодекодера в потоковой среде. Раскрытый объект изобретения может быть в равной степени применим к другим приложениям с поддержкой видео, включая, например, видеоконференц-связь, цифровое телевидение, хранение сжатого видео на цифровых носителях, включая CD, DVD, карту памяти и т.п., и так далее.[39] FIG. 2 illustrates, as an example of application for the disclosed subject matter, the placement of a video encoder and a video decoder in a streaming environment. The disclosed subject matter may be equally applicable to other video-enabled applications including, for example, videoconferencing, digital television, storage of compressed video on digital media including CD, DVD, memory card, etc., and so on. .
[40] Система потоковой передачи может включать в себя подсистему (213) захвата, которая может включать в себя источник (201) видео, например цифровую камеру, создающую, например, поток (202) отсчетов несжатого видео. Данный поток (202) отсчетов, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными битовыми потоками видео, может быть обработан кодером (203), подключенным к камере (201). Кодер (203) может включать в себя аппаратное обеспечение, программное обеспечение или их комбинацию для включения или реализации аспектов раскрытого объекта изобретения, как более подробно описано ниже. Кодированный битовый поток (204) видео, изображенный тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком отсчетов, может храниться на сервере (205) потоковой передачи для будущего использования. Один или более клиентов (206, 208) потоковой передачи могут получить доступ к серверу (205) потоковой передачи для извлечения копий (207, 209) кодированного битового потока (204) видео. Клиент (206) может включать в себя видеодекодер (210), который декодирует входящую копию кодированного битового потока (207) видео и создает исходящий поток (211) отсчетов видео, который может отображаться на дисплее (212) или другом устройстве визуализации (не изображено). В некоторых потоковых системах битовые потоки (204, 207, 209) видео могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видео. Примеры этих стандартов включают Рекомендацию МСЭ-Т Н.265. В стадии разработки находится стандарт кодирования видео, неофициально известный как универсальное кодирование видео или VVC. Раскрытый объект может использоваться в контексте VVC.[40] The streaming system may include a capture subsystem (213), which may include a video source (201), such as a digital camera, producing, for example, a stream (202) of uncompressed video samples. This stream (202) of samples, depicted with a thick line to emphasize the large amount of data compared to the encoded video bitstreams, can be processed by an encoder (203) connected to the camera (201). The encoder (203) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video bitstream (204), drawn with a thin line to emphasize the smaller amount of data compared to the sample stream, may be stored on the streaming server (205) for future use. One or more streaming clients (206, 208) can access the streaming server (205) to extract copies (207, 209) of the encoded video bitstream (204). The client (206) may include a video decoder (210) that decodes an incoming copy of the encoded video bitstream (207) and creates an outgoing stream (211) of video samples that can be displayed on a display (212) or other visualization device (not shown) . In some streaming systems, video bitstreams (204, 207, 209) may be encoded according to certain video coding/compression standards. Examples of these standards include ITU-T Rec. H.265. A video coding standard is under development, informally known as Universal Video Coding or VVC. The expanded object can be used in a VVC context.
[41] Фиг. 3 может быть функциональной блок-схемой видеодекодера (210) согласно варианту осуществления настоящего раскрытия.[41] FIG. 3 may be a functional block diagram of a video decoder (210) according to an embodiment of the present disclosure.
[42] Приемник (310) может принимать одну или более кодированных видеопоследовательностей, которые должны быть декодированы видеодекодером (210); в том же или другом варианте осуществления - по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (312), который может быть аппаратным/программным соединением с устройством хранения, в котором хранятся кодированные видеоданные. Приемник (310) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или потоками вспомогательных данных, которые могут быть отправлены их соответствующим использующим объектам (не изображены). Приемник (310) может отделять кодированную видеопоследовательность от других данных. Для борьбы с дрожанием в сети между приемником (310) и энтропийным декодером/парсером (320) (далее «парсер») может быть подключена буферная память (315). Когда приемник (310) принимает данные от устройства хранения/пересылки с достаточной полосой пропускания и управляемостью или из изосинхронной сети, буферная память (315) может не понадобиться или может быть небольшой. Для использования в пакетных сетях наилучшего качества, таких как Интернет, может потребоваться буфер (315), который может быть сравнительно большим и может быть предпочтительно адаптивного размера.[42] The receiver (310) may receive one or more encoded video sequences to be decoded by the video decoder (210); in the same or another embodiment, one coded video sequence at a time, where the decoding of each coded video sequence is independent of other coded video sequences. An encoded video sequence may be received from a channel (312), which may be a hardware/software connection to a storage device that stores the encoded video data. The receiver (310) may receive encoded video data with other data, such as encoded audio data and/or ancillary data streams, which may be sent to their respective using entities (not shown). The receiver (310) may separate the encoded video sequence from other data. To combat network jitter, a buffer memory (315) can be connected between the receiver (310) and the entropy decoder/parser (320) (hereinafter "parser"). When the receiver (310) receives data from a storage/transfer device with sufficient bandwidth and controllability, or from an isosynchronous network, buffer memory (315) may not be needed or may be small. For use in best quality packet networks such as the Internet, a buffer (315) may be required, which may be relatively large and may preferably be of an adaptive size.
[43] Видеодекодер (210) может включать в себя парсер (320) для восстановления символов (321) из энтропийно кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой декодера (210), и потенциально информацию для управления устройством визуализации, таким как дисплей (212), который не является неотъемлемой частью декодера, но может быть подключен к нему, как это было показано на фиг. 2. Управляющая информация для устройства (устройств) визуализации может быть в форме фрагментов набора параметров информации дополнительного улучшения (сообщения SEI) или информации о пригодности видео (VUI) (не изображены). Парсер (320) может выполнять парсинг/энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом кодирования видео и может следовать принципам, хорошо известным специалистам в уровне техники, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Парсер (320) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и так далее. Энтропийный декодер/парсер также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.[43] The video decoder (210) may include a parser (320) for recovering the symbols (321) from the entropy coded video sequence. The categories of these symbols include information used to control the operation of the decoder (210) and potentially information to control a visualization device such as a display (212) which is not an integral part of the decoder but can be connected to it as shown. in fig. 2. The control information for the rendering device(s) may be in the form of parameter set fragments of incremental enhancement information (SEI messages) or video usability information (VUI) (not shown). The parser (320) may parse/entropy decode the received encoded video sequence. Encoding of the encoded video sequence may be in accordance with a video coding technology or standard, and may follow principles well known to those skilled in the art, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, and so on. The parser (320) may extract from the encoded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. Subgroups may include groups of pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), and so on. The entropy decoder/parser may also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, and so on.
[44] Парсер (320) может выполнять операцию энтропийного декодирования/парсинга видеопоследовательности, принятой из буфера (315), чтобы создавать символы (321).[44] The parser (320) may perform an entropy decoding/parsing operation of the video sequence received from the buffer (315) to create symbols (321).
[45] Восстановление символов (321) может включать в себя множество различных модулей в зависимости от типа кодированного видеоизображения или его частей (таких как: внешнее и внутреннее изображение, внешний и внутренний блок) и других факторов. Какие модули задействованы и как, можно контролировать с помощью управляющей информации подгруппы, парсинг которой был выполнен из кодированной видеопоследовательности с помощью парсера (320). Поток такой управляющей информации подгруппы между парсером (320) и множеством модулей ниже не показан для ясности.[45] Symbol recovery (321) may include many different modules depending on the type of encoded video image or parts thereof (such as: external and internal image, external and internal block) and other factors. Which modules are involved and how can be controlled by the subgroup control information parsed from the encoded video sequence by the parser (320). The flow of such subgroup control information between the parser (320) and the plurality of modules is not shown below for clarity.
[46] Помимо уже упомянутых функциональных блоков, декодер 210 может быть концептуально подразделен на ряд функциональных модулей, как описано ниже. В практическом осуществлении, работающем в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут быть по меньшей мере частично интегрированы друг в друга. Однако для целей описания раскрытого объекта изобретения уместно концептуальное подразделение на функциональные модули, приведенные ниже.[46] In addition to the functional blocks already mentioned, the
[47] Первым модулем является модуль (351) масштабирования/обратного преобразования. Модуль (351) масштабирования/обратного преобразования принимает квантованный коэффициент преобразования, а также управляющую информацию, включая то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и так далее, в виде символа(ов) (321) от парсера (320). Он может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (355).[47] The first module is the scaling/inverse transform module (351). The scaling/inverse transform module (351) receives the quantized transform coefficient, as well as control information, including which transform to use, block size, quantization factor, quantization scaling matrices, and so on, in the form of symbol(s) (321) from the parser ( 320). It can output blocks containing sample values that can be entered into the aggregator (355).
[48] В некоторых случаях выходные отсчеты модуля (351) масштабирования/обратного преобразования могут относиться к блоку с интракодированием; то есть к блоку, который не использует информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена модулем (352) внутрикадрового предсказания. В некоторых случаях модуль (352) внутрикадрового предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из текущего (частично восстановленного) изображения (358). Агрегатор (355), в некоторых случаях, добавляет для каждого отсчета информацию предсказания, сгенерированную модулем (352) интрапредсказания, к информации выходных отсчетов, предоставляемой модулем (351) масштабирования/обратного преобразования.[48] In some cases, the output samples of the scaling/inverse transform module (351) may refer to an intra-coded block; that is, to a block that does not use prediction information from previously restored images, but can use prediction information from previously restored portions of the current image. Such prediction information may be provided by the intra prediction module (352). In some cases, the intra-prediction module (352) generates a block of the same size and shape as the reconstructed block using the already reconstructed surrounding information extracted from the current (partially reconstructed) image (358). The aggregator (355), in some cases, adds for each sample the prediction information generated by the intra-prediction module (352) to the output sample information provided by the scaling/inverse transform module (351).
[49] В других случаях выходные отсчеты модуля (351) масштабирования/обратного преобразования могут относиться к блоку с интеркодированием и потенциально с компенсацией движения. В таком случае модуль (353) предсказания с компенсацией движения может обращаться к памяти (357) опорных изображений, чтобы извлекать отсчеты, используемые для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (321), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (355) к выходу модуля масштабирования/обратного преобразования (в данном случае они называются остаточными отсчетами или остаточным сигналом), чтобы генерировать информацию о выходных отсчетах. Адреса в памяти опорных изображений, откуда модуль предсказания с компенсацией движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными модулю предсказания с компенсацией движения в форме символов (321), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти опорных изображений, когда используются точные векторы движения суботсчетов, механизмы предсказания вектора движения и так далее.[49] In other cases, the output samples of the scaling/inverse transform module (351) may refer to a block with intercoding and potentially with motion compensation. In such a case, the motion compensation prediction module (353) may access the reference picture memory (357) to retrieve samples used for prediction. After compensating for the movement of the selected samples in accordance with the symbols (321) associated with the block, these samples can be added by the aggregator (355) to the output of the scaler/demap module (in this case, they are called residual samples or residual signal) to generate information about output counts. Reference picture memory addresses from where the motion compensation prediction module selects prediction samples may be driven by motion vectors available to the motion compensation prediction module in the form of symbols (321), which may have X, Y and reference picture components, for example. Motion compensation may also include interpolation of sample values retrieved from reference picture memory when accurate sub-sample motion vectors are used, motion vector prediction mechanisms, and so on.
[50] Выходные отсчеты агрегатора (355) могут подвергаться различным методам петлевой фильтрации в модуле (356) петлевого фильтра. Технологии сжатия видео могут включать в себя технологии внутрипетлевой фильтрации, которые управляются параметрами, включенными в битовый поток кодированного видео и предоставляются модулю (356) петлевой фильтрации как символы (321) из парсера (320), но также могут реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные и отфильтрованные посредством петлевой фильтрации значения отсчетов.[50] The output samples of the aggregator (355) may be subjected to various loop filtering methods in the loop filter module (356). The video compression technologies may include in-loop filtering technologies that are controlled by parameters included in the encoded video bitstream and provided to the loop filtering module (356) as symbols (321) from the parser (320), but may also respond to metainformation received during decoding the previous (in the order of decoding) parts of the encoded image or encoded video sequence, as well as responding to previously restored and filtered by loop filtering sample values.
[51] Выходной сигнал модуля (356) петлевого фильтра может быть потоком отсчетов, который может быть выведен на устройство (212) визуализации, а также сохранен в памяти (357) опорных изображений для использования в будущем межкадровом предсказании.[51] The output of the loop filter module (356) may be a stream of samples that can be output to the renderer (212) and also stored in the reference picture memory (357) for use in future inter-picture prediction.
[52] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. После того, как кодированное изображение полностью восстановлено и кодированное изображение было идентифицировано как опорное изображение (например, парсером (320)), текущее опорное изображение (358) может стать частью буфера (357) опорных изображений, и свежая память текущих изображений может быть перераспределена перед началом восстановления следующего кодированного изображения.[52] Certain encoded pictures after full recovery can be used as reference pictures for future prediction. Once the encoded picture has been completely reconstructed and the encoded picture has been identified as a reference picture (eg, by the parser (320)), the current reference picture (358) may become part of the reference picture buffer (357), and fresh current picture memory may be reallocated before the beginning of the reconstruction of the next encoded picture.
[53] Видеодекодер 320 может выполнять операции декодирования согласно заранее определенной технологии сжатия видео, которая может быть записана в стандарте, таком как Рекомендация МСЭ-Т Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что она соответствует синтаксису технологии или стандарта сжатия видео, как указано в документе или стандарте технологии сжатия видео и, в частности, в их документе профилей. Также для соответствия может быть необходимым, чтобы сложность кодированной видеопоследовательности находилась в пределах, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту дискретизации восстановления (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и так далее. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического эталонного декодера (HRD) и метаданных для управления буфером HRD, передаваемых в кодированной видеопоследовательности.[53] Video decoder 320 may perform decoding operations according to a predetermined video compression technology that may be written in a standard such as ITU-T Rec. H.265. The encoded video sequence may conform to the syntax given by the video compression technology or standard used, in the sense that it conforms to the syntax of the video compression technology or standard as specified in the video compression technology document or standard, and in particular their profile document. It may also be necessary for compliance that the complexity of the encoded video sequence be within limits defined by the level of technology or video compression standard. In some cases, levels limit the maximum image size, the maximum frame rate, the maximum recovery sampling rate (measured in megasamples per second, for example), the maximum reference image size, and so on. The limits set by the layers may, in some cases, be further constrained by hypothetical reference decoder (HRD) specifications and metadata for managing the HRD buffer transmitted in the encoded video sequence.
[54] В варианте осуществления приемник (310) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (320) для правильного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут быть в форме, например, временных, пространственных слоев или слоев улучшения отношения сигнал/шум (SNR), избыточных слайсов, избыточных изображений, кодов прямого исправления ошибок и так далее.[54] In an embodiment, the receiver (310) may receive additional (redundant) data with encoded video. Additional data may be included as part of the encoded video sequence(s). The additional data may be used by the video decoder (320) to correctly decode the data and/or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant images, forward error correction codes, and so on.
[55] Фиг. 4 может быть функциональной блок-схемой видеокодера (203) согласно варианту осуществления настоящего раскрытия.[55] FIG. 4 may be a functional block diagram of a video encoder (203) according to an embodiment of the present disclosure.
[56] Кодер (203) может принимать отсчеты видео от источника (201) видео (который не является частью кодера), который может захватывать видеоизображение(я) для кодирования кодером (203).[56] The encoder (203) may receive video samples from a video source (201) (which is not part of the encoder) that may capture video image(s) for encoding by the encoder (203).
[57] Источник (201) видео может предоставить исходную видеопоследовательность для кодирования кодером (203) в форме цифрового потока отсчетов видео, который может иметь любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB, …) и любую подходящую структуру отсчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе обслуживания мультимедиа источник (201) видео может быть запоминающим устройством, хранящим предварительно подготовленное видео. В системе видеоконференц-связи источник (203) видео может быть камерой, которая захватывает информацию о локальном изображении в виде видеопоследовательности. Видеоданные могут быть предоставлены как множество отдельных изображений, которые при последовательном просмотре передают движение. Сами изображения могут быть организованы как пространственный массив пикселей, в котором каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры отсчетов, цветового пространства и т.д. Специалист в данной области техники может легко понять взаимосвязь между пикселями и отсчетами. Описание ниже ориентировано на отсчеты.[57] The video source (201) may provide the source video sequence for encoding by the encoder (203) in the form of a digital stream of video samples, which may have any suitable bit depth (eg: 8 bit, 10 bit, 12 bit, ...), any color space (eg, BT.601 Y CrCB, RGB, ...) and any suitable sample structure (eg, Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source (201) may be a storage device storing pre-prepared video. In a videoconferencing system, the video source (203) may be a camera that captures local image information as a video sequence. The video data may be provided as a plurality of individual images that, when viewed sequentially, convey motion. The images themselves can be organized as a spatial array of pixels, in which each pixel can contain one or more samples depending on the sample structure used, color space, and so on. One skilled in the art can easily understand the relationship between pixels and samples. The description below is based on readings.
[58] Согласно варианту осуществления видеокодер (203) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (443) в реальном времени или с любыми другими временными ограничениями, как того требует приложение. Обеспечение соответствующей скорости кодирования - одна из функций контроллера (450). Контроллер управляет другими функциональными модулями, как описано ниже, и функционально связан с этими модулями. Связь не изображена для ясности. Параметры, устанавливаемые контроллером, могут включать в себя параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда методов оптимизации скорость-искажение, …), размеру изображения, макету группы изображений (GOP), максимальному диапазону поиска вектора движения и так далее. Специалист в данной области техники может легко определить другие функции контроллера (450), поскольку они могут относиться к видеокодеру (203), оптимизированному для определенной конструкции системы.[58] According to an embodiment, the video encoder (203) may encode and compress images of the source video sequence into the encoded video sequence (443) in real time or with any other time constraints as required by the application. Providing an appropriate coding rate is one of the functions of the controller (450). The controller controls other functional modules, as described below, and is functionally associated with these modules. The connection is not shown for clarity. The parameters set by the controller may include parameters related to speed control (picture skip, quantizer, speed-distortion optimization methods lambda value, ...), image size, group of pictures (GOP) layout, maximum motion vector search range, and so on. . A person skilled in the art can easily determine other functions of the controller (450) as they may relate to a video encoder (203) optimized for a particular system design.
[59] Некоторые видеокодеры работают в том, что специалист в данной области легко распознает как «петля кодирования». В качестве упрощенного описания петля кодирования может состоять из кодирующей части кодера (430) (далее «кодер источника») (ответственной за создание символов на основе входного изображения, которое должно быть кодировано, и опорного изображения(й)), и (локального) декодера (433), встроенного в кодер (203), который восстанавливает символы для создания данных отсчетов, которые (удаленный) декодер также может создать (поскольку любое сжатие между символами и кодированным битовым потоком видео не имеет потерь в технологиях сжатия видео, рассматриваемых в раскрытом объекте). Этот восстановленный поток отсчетов вводится в память (434) опорных изображений. Поскольку декодирование потока символов приводит к результатам с точностью до бита, независимо от местоположения декодера (локально или удаленно), содержимое буфера опорных изображений также является точным до бита между локальным кодером и удаленным кодером. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые декодер «видел» бы при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) хорошо известен специалисту в данной области техники.[59] Some video encoders operate in what one of ordinary skill in the art would readily recognize as a "coding loop". As a simplified description, an encoding loop may consist of an encoder coding part (430) (hereinafter "source encoder") (responsible for creating symbols based on the input picture to be encoded and the reference picture(s)), and a (local) decoder (433) built into the encoder (203) that decompresses the symbols to create sample data that the (remote) decoder can also create (because any compression between the symbols and the encoded video bitstream is lossless in the video compression technologies discussed in the disclosed subject matter). ). This reconstructed sample stream is entered into the reference picture memory (434). Because decoding a stream of symbols results in bit-accurate results, regardless of the location of the decoder (local or remote), the contents of the reference picture buffer are also bit-accurate between the local encoder and the remote encoder. In other words, the prediction portion of the encoder "sees" as reference picture samples exactly the same sample values that the decoder would "see" using prediction during decoding. This fundamental principle of reference picture synchronism (and the resulting drift if synchronism cannot be maintained due to, for example, channel errors) is well known to those skilled in the art.
[60] Работа «локального» декодера (433) может быть такой же, как у «удаленного» декодера (210), который уже был подробно описан выше со ссылкой на фиг. 3. Кратко ссылаясь также на фиг. 3, однако, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (445) и парсером (320) может осуществляться без потерь, части энтропийного декодирования декодера (210), включая канал (312), приемник (310), буфер (315) и парсер (320), не могут быть полностью реализованы в локальном декодере (433).[60] The operation of the "local" decoder (433) may be the same as that of the "remote" decoder (210), which has already been described in detail above with reference to FIG. 3. Briefly referring also to FIG. 3, however, since the symbols are available and encoding/decoding of the symbols into the encoded video sequence by the entropy encoder (445) and parser (320) can be lossless, the entropy decoding parts of the decoder (210), including the channel (312), the receiver (310), buffer (315) and parser (320) cannot be fully implemented in the local decoder (433).
[61] На этом этапе можно сделать наблюдение, что любая технология декодирования, кроме парсингового/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать по существу в идентичной функциональной форме в соответствующем кодере. По этой причине раскрытый объект изобретения фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.[61] At this point, it can be observed that any decoding technology other than parsing/entropy decoding that is present in a decoder must also necessarily be present in substantially identical functional form in the corresponding encoder. For this reason, the disclosed subject matter focuses on the operation of the decoder. The description of encoding technologies can be abbreviated as they are the inverse of fully described decoding technologies. Only in some areas a more detailed description is required, which is given below.
[62] В качестве части своей работы кодер (430) источника может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входной кадр с предсказанием со ссылкой на один или более ранее кодированных кадров из видеопоследовательности, которые были обозначены как «опорные кадры». Таким образом, механизм (432) кодирования кодирует различия между блоками пикселей входного кадра и блоками пикселей опорного кадра(ов), которые могут быть выбраны в качестве эталона(ов) предсказания для входного кадра.[62] As part of its operation, the source encoder (430) may perform motion-compensated predictive encoding that predictively encodes the input frame with reference to one or more previously encoded frames from the video sequence, which have been designated "reference frames". Thus, the coding engine (432) encodes the differences between the pixel blocks of the input frame and the pixel blocks of the reference frame(s) that can be selected as the prediction reference(s) for the input frame.
[63] Локальный видеодекодер (433) может декодировать кодированные видеоданные кадров, которые могут быть обозначены как опорные кадры, на основе символов, созданных кодером (430) источника. Операции механизма (432) кодирования могут быть предпочтительно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг. 4), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (433) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных кадрах, и может вызывать сохранение восстановленных опорных кадров в кэше (434) опорных изображений. Таким образом, кодер (203) может локально хранить копии восстановленных опорных кадров, которые имеют общий контент, в качестве восстановленных опорных кадров, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).[63] The local video decoder (433) may decode the encoded video data of the frames, which may be designated as reference frames, based on the symbols generated by the source encoder (430). The operations of the encoding engine (432) may preferably be lossy processes. When the encoded video data can be decoded in a video decoder (not shown in FIG. 4), the reconstructed video sequence can typically be a copy of the original video sequence with some errors. The local video decoder (433) replicates the decoding processes that may be performed by the video decoder on the reference frames and may cause the recovered reference frames to be stored in the reference picture cache (434). Thus, the encoder (203) can locally store copies of the reconstructed reference frames that share content as the reconstructed reference frames to be received by the far-end video decoder (in the absence of transmission errors).
[64] Предиктор (435) может выполнять поиски с предсказанием для механизма (432) кодирования. То есть, для нового изображения, которое должно быть кодировано, предиктор (435) может искать в памяти (434) опорных изображений данные отсчетов (в качестве кандидатов блоков опорных пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и так далее, которые могут служить подходящим эталоном предсказания для новых изображений. Предиктор (435) может работать на основе блока отсчетов "блок-за-пикселем", чтобы найти соответствующие эталоны предсказания. В некоторых случаях, как определено результатами поиска, полученными предиктором (435), входное изображение может иметь эталоны предсказания, взятые из множества опорных изображений, сохраненных в памяти (434) опорных изображений.[64] The predictor (435) may perform predictive searches for the encoding engine (432). That is, for a new picture to be encoded, the predictor (435) may search the reference picture memory (434) for sample data (as reference pixel block candidates) or certain metadata such as reference picture motion vectors, block shapes, and so on. further, which can serve as a suitable prediction reference for new images. The predictor (435) may operate on a block-by-pixel basis to find appropriate prediction references. In some cases, as determined by the search results obtained by the predictor (435), the input image may have prediction references taken from a plurality of reference pictures stored in the reference picture memory (434).
[65] Контроллер (450) может управлять операциями кодирования видеокодера (430), включая, например, установку параметров и параметров подгруппы, используемых для кодирования видеоданных.[65] The controller (450) may control the encoding operations of the video encoder (430), including, for example, setting parameters and subgroup parameters used to encode video data.
[66] Выходные сигналы всех вышеупомянутых функциональных модулей могут подвергаться энтропийному кодированию в энтропийном кодере (445). Энтропийный кодер переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия без потерь символов согласно технологиям, известным специалистам в данной области техники, как, например, кодирование Хаффмана, кодирование переменной длины, арифметическое кодирование и так далее.[66] The output signals of all the above functional modules can be entropy encoded in an entropy encoder (445). The entropy encoder translates symbols generated by various functional modules into an encoded video sequence by lossless symbol compression according to techniques known to those skilled in the art, such as Huffman coding, variable length coding, arithmetic coding, and so on.
[67] Передатчик (440) может буферизовать кодированную видеопоследовательность(и), созданную энтропийным кодером (445), чтобы подготовить ее к передаче через канал (460) связи, который может быть аппаратным/программным соединением с запоминающим устройством, которое будет хранить кодированные видеоданные. Передатчик (440) может обеспечивать слияние кодированных видеоданных из видеокодера (430) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).[67] The transmitter (440) may buffer the encoded video sequence(s) generated by the entropy encoder (445) to prepare it for transmission over a communication channel (460), which may be a hardware/software connection to a storage device that will store the encoded video data. . The transmitter (440) may merge the encoded video data from the video encoder (430) with other data to be transmitted, such as encoded audio data and/or ancillary data streams (sources not shown).
[68] Контроллер (450) может управлять работой кодера (203). Во время кодирования контроллер (450) может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на методы кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть отнесены к одному из следующих типов кадров.[68] The controller (450) may control the operation of the encoder (203). During encoding, the controller (450) may assign to each encoded picture a certain type of encoded picture, which may affect the encoding methods that can be applied to the corresponding picture. For example, images can often be classified as one of the following frame types.
[69] Внутреннее изображение (I-изображение) может быть таким, которое можно кодировать и декодировать без использования какого-либо другого кадра в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают различные типы внутренних изображений, включая, например, изображения с независимым обновлением декодера. Специалисту в области техники известны эти варианты I-изображений и их соответствующие применения и особенности.[69] An intra-picture (I-picture) may be one that can be encoded and decoded without using any other frame in the sequence as a prediction source. Some video codecs allow various types of internal images, including, for example, images with independent decoder update. The person skilled in the art will be aware of these variants of I-images and their respective uses and features.
[70] Изображение с предсказанием (Р-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интрапредсказания или интерпредсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.[70] A predictive picture (P-picture) may be one that can be encoded and decoded using intra-prediction or inter-prediction using at most one motion vector and a reference index to predict sample values of each block.
[71] Изображение с двунаправленным предсказанием (В-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интрапредсказания или интерпредсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Точно так же изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.[71] A bidirectional predictive picture (B-picture) may be one that can be encoded and decoded using intra-prediction or inter-prediction using at most two motion vectors and reference indices to predict sample values of each block. Similarly, multi-prediction images may use more than two reference images and associated metadata to reconstruct a single block.
[72] Исходные изображения обычно могут быть пространственно разделены на множество блоков отсчетов (например, блоки из 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и закодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки из I-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или интрапредсказание). Пиксельные блоки Р-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.[72] Source images can typically be spatially divided into multiple blocks of samples (eg, blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and encoded on a block-by-block basis. The blocks may be predictively encoded with reference to other (already encoded) blocks, as determined by the coding assignment applied to the corresponding block images. For example, blocks of I-pictures may be predictively encoded or they may be predictively encoded with reference to already encoded blocks of the same picture (spatial prediction or intra prediction). P-picture pixel blocks may be encoded without prediction, by spatial prediction, or by temporal prediction with reference to one previously encoded reference picture. Blocks of B-pictures may be encoded without prediction, by spatial prediction, or by temporal prediction with reference to one or two previously encoded reference pictures.
[73] Видеокодер (203) может выполнять операции кодирования в соответствии с заранее определенной технологией или стандартом кодирования видео, такой как Рекомендация МСЭ-Т Н.265. В своей работе видеокодер (203) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.[73] The video encoder (203) may perform encoding operations in accordance with a predetermined video coding technology or standard, such as ITU-T Rec. H.265. In operation, the video encoder (203) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. The encoded video data may therefore follow the syntax given by the video coding technology or standard used.
[74] В варианте осуществления передатчик (440) может передавать дополнительные данные с кодированным видео. Видеокодер (430) может включать в себя такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные слои/слои улучшения SNR, другие формы избыточных данных, такие как избыточные изображения и слайсы, сообщения информации дополнительного улучшения (SEI), фрагменты набора параметров информации о пригодности видео (VUI) и так далее.[74] In an embodiment, transmitter (440) may transmit additional data with encoded video. Video encoder (430) may include such data as part of an encoded video sequence. The additional data may comprise temporal/spatial/SNR enhancement layers, other forms of redundant data such as redundant images and slices, incremental enhancement information (SEI) messages, video usability information (VUI) parameter set fragments, and so on.
[75] Перед более подробным описанием определенных аспектов раскрытого объекта изобретения необходимо ввести несколько терминов, на которые будет делаться ссылка в оставшейся части этого описания.[75] Before a more detailed description of certain aspects of the disclosed subject matter, it is necessary to introduce a few terms that will be referred to in the remainder of this description.
[76] Суб-изображение далее относится, в некоторых случаях, к прямоугольной компоновке отсчетов, блоков, макроблоков, единиц кодирования или подобных объектов, которые семантически сгруппированы и которые могут быть независимо кодированы с измененным разрешением. Одно или более суб-изображений могут использоваться для изображения. Одно или более кодированных суб-изображений могут образовывать кодированное изображение. Одно или более суб-изображений могут быть собраны в изображение, и одно или более суб-изображений могут быть извлечены из изображения. В определенных средах одно или более кодированных суб-изображений могут быть собраны в сжатой области без перекодирования до уровня отсчетов в кодированное изображение, и в тех же или некоторых других случаях одно или более кодированных суб-изображений могут быть извлечены из кодированного изображения в сжатой области.[76] A sub-image further refers, in some cases, to a rectangular arrangement of samples, blocks, macroblocks, coding units, or the like, which are semantically grouped and which can be independently encoded with a changed resolution. One or more sub-images may be used for an image. One or more encoded sub-pictures may form an encoded picture. One or more sub-images may be assembled into an image, and one or more sub-images may be extracted from the image. In certain environments, one or more encoded sub-images may be collected in the compressed region without recoding to the sample level in the encoded image, and in the same or some other cases, one or more encoded sub-images may be extracted from the encoded image in the compressed region.
[77] В дальнейшем передискретизация опорного изображения (RPR) или адаптивное изменение разрешения (ARC) относится к механизмам, которые позволяют изменять разрешение изображения или суб-изображения в кодированной видеопоследовательности, например, посредством передискретизации опорного изображения. В дальнейшем параметры RPR/ARC относятся к управляющей информации, необходимой для выполнения адаптивного изменения разрешения, которая может включать в себя, например, параметры фильтра, коэффициенты масштабирования, разрешения выходных и/или опорных изображений, различные флаги управления и так далее.[77] Hereinafter, reference picture resampling (RPR) or adaptive resolution change (ARC) refers to mechanisms that allow changing the resolution of an image or sub-picture in a coded video sequence, for example, by reference picture resampling. Hereinafter, RPR/ARC parameters refer to control information necessary to perform adaptive resolution change, which may include, for example, filter parameters, scaling factors, output and/or reference picture resolutions, various control flags, and so on.
[78] Приведенное выше описание сосредоточено на кодировании и декодировании одного семантически независимого кодированного видеоизображения. Перед описанием последствий кодирования/декодирования множества суб-изображений с независимыми параметрами RPR/ARC и их подразумеваемой дополнительной сложности должны быть описаны варианты передачи параметров RPR/ARC.[78] The above description focuses on encoding and decoding a single semantically independent encoded video image. Before describing the consequences of encoding/decoding multiple sub-pictures with independent RPR/ARC parameters and their implied additional complexity, RPR/ARC parameter transmission options must be described.
[79] На фиг. 5 показано несколько новых вариантов передачи параметров RPR/ARC. Как отмечено для каждого из вариантов, они имеют определенные преимущества и определенные недостатки с точки зрения эффективности кодирования, сложности и архитектуры. Стандарт или технология кодирования видео могут выбрать один или более из этих вариантов или вариантов, известных из предшествующего уровня техники, для передачи параметров RPR/ARC. Варианты могут не быть взаимоисключающими и, возможно, могут быть взаимозаменяемыми в зависимости от потребностей приложения, используемых стандартов или выбора кодера.[79] FIG. Figure 5 shows several new options for passing RPR/ARC parameters. As noted for each of the options, they have certain advantages and certain disadvantages in terms of coding efficiency, complexity and architecture. A video coding standard or technology may choose one or more of these or prior art options for transmitting the RPR/ARC parameters. The options may not be mutually exclusive and may possibly be interchangeable depending on the needs of the application, the standards used, or the choice of encoder.
[80] Классы параметров RPR/ARC могут включать в себя:[80] RPR/ARC parameter classes may include:
- коэффициенты повышающей/понижающей дискретизации, отдельные или объединенные в измерениях X и Y,- upsampling/downsampling coefficients, separate or combined in the X and Y dimensions,
- коэффициенты повышающей/понижающей дискретизации с добавлением временного измерения, указывающие на увеличение/уменьшение размера с постоянной скоростью для заданного количества изображений,- upsampling/downsampling ratios with the addition of a temporal dimension, indicating an increase/decrease in size at a constant rate for a given number of images,
- любой из двух вышеупомянутых вариантов может включать в себя кодирование одного или более предположительно коротких элементов синтаксиса, которые могут указывать на таблицу, содержащую коэффициент(ы),- either of the above two options may involve encoding one or more supposedly short syntax elements that may point to a table containing the coefficient(s),
- разрешение в измерениях X или Y, в единицах отсчетов, блоках, макроблоках, CU или любой другой подходящей степени детализации, входного изображения, выходного изображения, опорного изображения, кодированного изображения, скомбинированного или отдельного (если имеется более одного разрешения (такое как, например, одно для входного изображения, одно для опорного изображения), тогда в некоторых случаях один набор значений может быть выведен из другого набора значений. Это может быть передано, например, с помощью флагов. Более подробный пример см. ниже,- the resolution in X or Y dimensions, in units of samples, blocks, macroblocks, CU or any other suitable granularity, of the input image, output image, reference image, coded image, combined or single (if there is more than one resolution (such as for example , one for the input image, one for the reference image), then in some cases one set of values can be derived from another set of values. This can be passed, for example, using flags. See below for a more detailed example,
- координаты «деформации», подобные тем, которые используются в Приложении Р Н.263, опять же с подходящей степенью детализации, как описано выше. (Приложение Р Н.263 определяет один эффективный способ кодирования таких координат деформации, но, возможно, также разрабатываются другие, потенциально более эффективные способы. Например, согласно вариантам осуществления, реверсивное кодирование Хаффмана с переменной длиной координат деформации согласно Приложению Р заменяется двоичным кодированием подходящей длины, где длина двоичного кодового слова может быть, например, получена из максимального размера изображения, возможно, умноженного на определенный коэффициент и смещенного на определенное значение, чтобы учесть «деформацию» за пределами границ максимального размера изображения), и/или- "strain" coordinates like those used in H.263 Annex P, again with the appropriate granularity as described above. (Annex P H.263 defines one efficient way to encode such warp coordinates, but other potentially more efficient ways may also be developed. , where the length of the binary codeword can be, for example, obtained from the maximum image size, possibly multiplied by a certain factor and offset by a certain value to account for "warping" beyond the bounds of the maximum image size), and/or
- параметры фильтра с повышающей или понижающей дискретизацией (в простейшем случае может быть только один фильтр для повышающей и/или понижающей дискретизации. Однако в некоторых случаях может быть предпочтительным обеспечить большую гибкость в конструкции фильтра, и для этого может потребоваться передача параметров фильтра. Такие параметры могут быть выбраны с помощью индекса в списке возможных конструкций фильтров, фильтр может быть полностью определен (например, с помощью списка коэффициентов фильтра с использованием подходящих методов энтропийного кодирования), фильтр может быть неявно выбран с помощью соответствующих соотношений повышающей/понижающей дискретизации, которые, в свою очередь, передаются в соответствии с любым из механизмов, упомянутых выше, и так далее).- upsampling or downsampling filter parameters (in the simplest case, there can be only one upsampling and/or downsampling filter. However, in some cases it may be desirable to provide more flexibility in the design of the filter, and this may require passing filter parameters. Such parameters may be selected by an index into a list of possible filter designs, the filter may be fully specified (e.g., by a list of filter coefficients using appropriate entropy coding techniques), the filter may be implicitly selected by appropriate upsampling/downsampling relationships that, in are in turn transmitted according to any of the mechanisms mentioned above, and so on).
[81] Ниже описание предполагает кодирование конечного набора коэффициентов повышающей/понижающей дискретизации (тот же коэффициент, который должен использоваться в измерениях X и Y), указанных с помощью кодового слова. Это кодовое слово может быть преимущественно закодировано с переменной длиной, например, с использованием экспоненциального кода Голомба, общего для определенных элементов синтаксиса в спецификациях кодирования видео, таких как Н.264 и Н.265. Одно подходящее сопоставление значений с коэффициентами повышающей/понижающей дискретизации может, например, соответствовать следующей таблице 1.[81] The following description assumes encoding a finite set of upsampling/downsampling coefficients (the same coefficient to be used in the X and Y dimensions) indicated by a codeword. This codeword may advantageously be encoded with a variable length, for example, using the Exponential Golomb code common to certain syntax elements in video coding specifications such as H.264 and H.265. One suitable mapping of values to upsampling/downsampling coefficients may, for example, correspond to the following Table 1.
[82] Многие аналогичные сопоставления могут быть разработаны в соответствии с потребностями приложения и возможностями механизмов повышения и понижения дискретизации, доступных в технологии или стандарте сжатия видео. Таблица может быть расширена до большего количества значений. Значения также могут быть представлены механизмами энтропийного кодирования, отличными от Экспоненциальных кодов Голомба, например, с использованием двоичного кодирования. Это может иметь определенные преимущества, когда коэффициенты передискретизации представляли интерес за пределами самих механизмов обработки видео (прежде всего кодера и декодера), например, посредством MANE. Следует отметить, что для (предположительно) наиболее распространенного случая, когда изменение разрешения не требуется, может быть выбран экспоненциальный код Голомба, который является коротким; в таблице выше только один бит. Это может иметь преимущество в эффективности кодирования по сравнению с использованием двоичных кодов для наиболее распространенного случая.[82] Many similar mappings can be developed according to the needs of the application and the capabilities of the upsampling and downsampling mechanisms available in the video compression technology or standard. The table can be expanded to more values. Values may also be represented by entropy encoding mechanisms other than Exponential Golomb codes, such as using binary encoding. This may have certain advantages when the oversampling factors were of interest outside of the video processing engines themselves (primarily the encoder and decoder), for example via MANE. It should be noted that for the (presumably) most common case where no resolution change is required, exponential Golomb code, which is short, can be chosen; there is only one bit in the table above. This may have an advantage in coding efficiency over using binary codes for the most common case.
[83] Количество записей в таблице, а также их семантика могут быть полностью или частично настраиваемыми. Например, основная структура таблицы может быть передана в «высоком» наборе параметров, таком как последовательность или набор параметров декодера. В качестве альтернативы или в дополнение, одна или более таких таблиц могут быть определены в технологии или стандарте кодирования видео и могут быть выбраны, например, с помощью декодера или набора параметров последовательности.[83] The number of entries in the table, as well as their semantics, can be completely or partially customizable. For example, the basic table structure may be conveyed in a "high" parameter set, such as a sequence or a decoder parameter set. Alternatively, or in addition, one or more such tables may be defined in a video coding technology or standard and may be selected, for example, by a decoder or sequence parameter set.
[84] Далее описано, как коэффициент повышающей/понижающей дискретизации (информация ARC), кодированный, как описано выше, может быть включен в технологию кодирования видео или стандартный синтаксис. Подобные соображения могут применяться к одному или нескольким кодовым словам, управляющим фильтрами повышающей/понижающей дискретизации. Ниже приведено обсуждение, когда для фильтра или других структур данных требуются сравнительно большие объемы данных.[84] The following describes how the upsampling/downsampling ratio (ARC information) encoded as described above can be included in a video coding technology or a standard syntax. Similar considerations may apply to one or more codewords driving the upsampling/downsampling filters. The following is a discussion of when relatively large amounts of data are required for a filter or other data structures.
[85] Как показано в примере на фиг. 5А, иллюстрация (500А) показывает, что Приложение Р Н.263 включает в себя информацию (502) ARC в форме четырех координат деформации в заголовке изображения (501), в частности, в расширении заголовка Н.263 PLUSPTYPE (503). Это может быть разумным выбором структуры, когда а) имеется доступный заголовок изображения и б) ожидаются частые изменения информации ARC. Однако служебные данные при использовании передачи в стиле Н.263 могут быть довольно высокими, и коэффициенты масштабирования могут не относиться к границам изображения, поскольку заголовок изображения может иметь временный характер. Кроме того, как показано в примере на фиг. 5В, иллюстрация (500В) показывает, что JVET-M0135 включает в себя информацию (504) PPS, опорную информацию (505) ARC, информацию (507) SPS и информацию (506) таблицы целевого разрешения.[85] As shown in the example of FIG. 5A, illustration (500A) shows that H.263 Annex P includes ARC information (502) in the form of four warp coordinates in the picture header (501), specifically in the H.263 PLUSPTYPE header extension (503). This may be a reasonable design choice when a) there is an image header available and b) frequent changes to the ARC information are expected. However, the overhead when using H.263 style transmission can be quite high, and the scaling factors may not be related to the image borders, since the image header may be temporary. In addition, as shown in the example of FIG. 5B, illustration (500B) shows that JVET-M0135 includes PPS information (504), ARC reference information (505), SPS information (507), and target permission table information (506).
[86] Согласно примерным вариантам осуществления, фиг. 5С иллюстрирует пример (500С), в котором показана информация (508) заголовка группы тайлов и информация (509) ARC; фиг. 5В иллюстрирует пример (500D), в котором показана информация (514) заголовка группы тайлов, опорная информация (513) ARC, информация (516) SPS и информация (515) ARC, а фиг. 5Е иллюстрирует пример (500Е) в котором показана информация (511) набора(ов) параметров адаптации (APS) и информация (512) ARC.[86] According to exemplary embodiments, FIG. 5C illustrates an example (500C) showing tile group header information (508) and ARC information (509); fig. 5B illustrates an example (500D) showing tile group header information (514), ARC reference information (513), SPS information (516), and ARC information (515), and FIG. 5E illustrates an example (500E) in which adaptation parameter set(s) (APS) information (511) and ARC information (512) are shown.
[87] На фиг. 6 показан пример (600) таблицы, в которой используется адаптивное разрешение, в этом примере кодировано выходное разрешение в единицах отсчетов (613). Номер позиции 613 относится как к output_pic_width_in_luma_samples, так и к output_pic_height_in_luma_samples, которые вместе могут определять разрешение выходного изображения. В другом месте технологии или стандарта кодирования видео могут быть определены определенные ограничения для любого значения. Например, определение уровня может ограничивать количество общих выходных отсчетов, которые могут быть произведением значений этих двух элементов синтаксиса. Также, определенные технологии или стандарты кодирования видео, или внешние технологии или стандарты, такие как, например, системные стандарты, могут ограничивать диапазон нумерации (например, одно или оба измерения должны делиться на степень 2) или соотношение ширины и высоты (например, ширина и высота должны быть в таком соотношении, как 4:3 или 16:9). Такие ограничения могут быть введены для облегчения аппаратных реализаций или по другим причинам, как будет понятно специалисту в данной области техники с учетом настоящего раскрытия.[87] FIG. 6 shows an example (600) of a table that uses adaptive resolution, in this example the output resolution is encoded in units of samples (613).
[88] В некоторых приложениях может быть целесообразно, чтобы кодер инструктировал декодер использовать определенный размер опорного изображения вместо того, чтобы неявно предполагать, что этот размер является размером выходного изображения. В этом примере элемент синтаксиса reference_pic_size_present_flag (614) передает условное присутствие размеров (615) опорного изображения (опять же, цифра относится как к ширине, так и к высоте).[88] In some applications, it may be desirable for the encoder to instruct the decoder to use a specific reference picture size instead of implicitly assuming that this size is the size of the output picture. In this example, the syntax element reference_pic_size_present_flag (614) conveys the conditional presence of the dimensions (615) of the reference picture (again, the figure refers to both width and height).
[89] Некоторые технологии или стандарты кодирования видео, например VP9, поддерживают пространственную масштабируемость путем реализации определенных форм передискретизации опорного изображения (передаваемую совершенно иначе, чем в раскрытом объекте изобретения) в сочетании с временной масштабируемостью, чтобы обеспечить пространственную масштабируемость. В частности, некоторые опорные изображения могут подвергаться повышающей дискретизации с использованием технологий ARC-стиля до более высокого разрешения для формирования основы слоя пространственного улучшения. Эти изображения с повышенной дискретизацией можно улучшить, используя нормальные механизмы предсказания с высоким разрешением, чтобы добавить деталей.[89] Some video coding technologies or standards, such as VP9, support spatial scalability by implementing certain forms of reference picture resampling (transmitted quite differently than in the disclosed subject matter) in combination with temporal scalability to provide spatial scalability. In particular, some reference pictures may be upsampled using ARC-style techniques to higher resolution to form the basis of the spatial enhancement layer. These upsampled images can be enhanced using normal high resolution prediction engines to add detail.
[90] Раскрытый объект изобретения может использоваться и используется в такой среде согласно вариантам осуществления. В некоторых случаях, в том же или другом варианте осуществления, значение в заголовке единицы NAL, например поле временного идентификатора, может использоваться для указания не только временного, но и пространственного слоя. Это дает определенные преимущества для определенных конфигураций систем; например, существующая Selected Forwarding Units (SFU), созданная и оптимизированная для выбранных временных слоев, пересылаемых на основе значения временного идентификатора заголовка единицы NAL, может использоваться без модификации для масштабируемых сред. Для того чтобы сделать это возможным, может существовать требование для сопоставления между размером кодированного изображения и временным слоем, указываемым полем временного идентификатора в заголовке единицы NAL.[90] The disclosed subject matter can be and is used in such an environment according to the embodiments. In some cases, in the same or another embodiment, a value in the NAL unit header, such as a temporal identifier field, may be used to indicate not only the temporal but also the spatial layer. This offers certain advantages for certain system configurations; for example, an existing Selected Forwarding Units (SFU) created and optimized for selected temporal slices forwarded based on the value of the NAL unit header's temporal identifier can be used without modification for scalable environments. In order to make this possible, there may be a requirement for a mapping between the encoded picture size and the temporal layer indicated by the temporal identifier field in the NAL unit header.
[91] В вариантах осуществления информация о межслойной зависимости может передаваться в VPS (или сообщениях DPS, SPS или SEI). Информация о межслойной зависимости может использоваться для идентификации того, какой слой используется в качестве опорного слоя для декодирования текущего слоя. Декодированное изображение picA в прямом зависимом слое с nuh_layer_id, равным m, может использоваться в качестве опорного изображения для изображения picB с nuh_layer_id, равным n, когда n больше m, и два изображения picA и picB принадлежат одной и той же единице доступа.[91] In embodiments, cross-layer dependency information may be conveyed in VPS (or DPS, SPS, or SEI messages). The interlayer dependency information may be used to identify which layer is being used as a reference layer for decoding the current layer. A decoded forward dependent layer picture picA with nuh_layer_id equal to m can be used as a reference picture for picture picB with nuh_layer_id equal to n when n is greater than m and two pictures picA and picB belong to the same access unit.
[92] В тех же или других вариантах осуществления список межслойных опорных изображений (ILRP) может явно передаваться с помощью списка опорных изображений межслойного предсказания (IPRP) в заголовке слайса (или в наборе параметров). И списки ILRP, и списки IPRP могут использоваться для построения списков опорных изображений прямого и обратного предсказания.[92] In the same or other embodiments, an interlayer reference picture list (ILRP) may be explicitly conveyed using an interlayer prediction reference picture list (IPRP) in the slice header (or parameter set). Both ILRP lists and IPRP lists can be used to construct forward and backward prediction reference picture lists.
[93] В тех же или других вариантах осуществления элементы синтаксиса в VPS (или другом наборе параметров) могут указывать, является ли каждый слой зависимым или независимым. Ссылаясь на пример (700) с фиг. 7, элемент синтаксиса vps_max_layers_minus1 (703) плюс 1 может указывать максимальное количество слоев, разрешенных в одном или нескольких, потенциально всех, CVS, относящихся к VPS (701). vps_all_independent_layers_flag (704), равное 1, может указывать, что все слои в CVS кодируются независимо, то есть без использования межслойного предсказания. vps_all_independent_layers_flag (704), равное 0, может указывать, что один или более слоев в CVS могут использовать межслойное предсказание. При отсутствии, значение vps_all_independent_layers_flag может быть выведено равным 1. Когда vps_all_independent_layers_flag равно 1, значение vps_independent_layer_flag [i] (706) может быть выведено равным 1. Когда vps_all_independent_layers_flag равно 0, значение vps_independent_layer_flag [0] предполагается равным 1.[93] In the same or other embodiments, the implementation of the syntax elements in the VPS (or other set of parameters) may indicate whether each layer is dependent or independent. Referring to example (700) of FIG. 7, the syntax element vps_max_layers_minus1 (703) plus 1 may indicate the maximum number of layers allowed in one or more, potentially all, VPS-related CVSs (701). vps_all_independent_layers_flag (704) equal to 1 may indicate that all layers in CVS are encoded independently, ie without using interlayer prediction. vps_all_independent_layers_flag (704) equal to 0 may indicate that one or more layers in CVS may use interlayer prediction. If not present, the value of vps_all_independent_layers_flag may be inferred to be 1. When vps_all_independent_layers_flag is equal to 1, the value of vps_independent_layer_flag[i] (706) may be inferred to be 1. When vps_all_independent_layers_flag is equal to 0, the value of vps_independent_layer_flag[0] is assumed to be 1.
[94] Ссылаясь на фиг. 7, vps_independent_layer_flag [i] (706), равное 1, может указывать, что слой с индексом i не использует межслойное предсказание. vps_independent_layer_flag [i], равное 0, может указывать, что слой с индексом i может использовать межслойное предсказание, a vps_layer_dependency_flag [i] присутствует в VPS. vps_direct_dependency_flag [i] [j] (707), равное 0, может указывать, что слой с индексом j не является прямым опорным слоем для слоя с индексом i. vps_direct_dependency_flag [i] [j], равное 1, может указывать, что слой с индексом j является прямым опорным слоем для слоя с индексом i. Когда vps_direct_dependency_flag [i] [j] не присутствует для i и j в диапазоне от 0 до vps_max_layers_minus1 включительно, оно может быть выведено равным 0.[94] Referring to FIG. 7, vps_independent_layer_flag [i] (706) equal to 1 may indicate that the layer at index i does not use interlayer prediction. vps_independent_layer_flag [i] equal to 0 may indicate that the layer with index i can use interlayer prediction, and vps_layer_dependency_flag [i] is present in the VPS. vps_direct_dependency_flag [i] [j] (707) equal to 0 may indicate that layer index j is not a direct reference layer for layer index i. vps_direct_dependency_flag [i] [j] equal to 1 may indicate that layer index j is a direct reference layer for layer index i. When vps_direct_dependency_flag [i] [j] is not present for i and j in the
[95] Переменная DirectDependentLayerIdx [i] [j], указывающая j-й прямой зависимый слой i-го слоя, и переменная NumDependentLayers [i], указывающая количество зависимых слоев i-го уровня, выводятся следующим образом:[95] The variable DirectDependentLayerIdx[i][j], indicating the jth direct dependent layer of the i-th layer, and the variable NumDependentLayers[i], indicating the number of dependent layers of the i-th layer, are output as follows:
[96] В том же или другом варианте осуществления, со ссылкой на фиг. 7, когда vps_max_layers_minus1 больше нуля и значение vps_all_independent_layers_flag равно нулю, могут передаваться vps_output_layers_mode и vps_output_layer_flags [i]. vps_output_layers_mode (708), равное 0, может указывать, что выводится только самый высокий слой. vps_output_layer_mode, равное 1, указывает, что все слои могут быть выведены. vps_output_layer_mode, равное 2, может указывать, что выводимые слои являются слоями с vps_output_layer_flag [i] (709) равным 1. Значение vps_output_layers_mode должно находиться в диапазоне от 0 до 2 включительно. Значение 3 vps_output_layer_mode может быть зарезервировано для будущего использования. При отсутствии, значение vps_output_layers_mode может быть выведено равным 1. vps_output_layer_flag [i], равное 1, может указывать, что выводится i-й слой. vps_output_layer_flag [i], равное 0, может указывать, что i-й слой не выводится. Список OutputLayerFlag [i], для которого значение 1 может указывать, что i-й слой выводится, а значение 0 указывает, что i-й слой не выводится, выводится следующим образом:[96] In the same or another embodiment, with reference to FIG. 7, when vps_max_layers_minus1 is greater than zero and vps_all_independent_layers_flag is zero, vps_output_layers_mode and vps_output_layer_flags [i] may be transmitted. vps_output_layers_mode (708) equal to 0 may indicate that only the highest layer is output. vps_output_layer_mode equal to 1 indicates that all layers can be output. vps_output_layer_mode equal to 2 may indicate that the output layers are layers with vps_output_layer_flag [i] (709) equal to 1. vps_output_layers_mode must be between 0 and 2 inclusive. The value 3 vps_output_layer_mode can be reserved for future use. If absent, the vps_output_layers_mode value may be output to 1. vps_output_layer_flag[i] equal to 1 may indicate that the i-th layer is output. vps_output_layer_flag [i] equal to 0 may indicate that the i-th layer is not output. The OutputLayerFlag [i] list, for which a value of 1 can indicate that the i-th layer is being output, and a value of 0 indicates that the i-th layer is not being output, is output as follows:
[97] В том же или другом варианте вывод текущего изображения может быть определен следующим образом:[97] In the same or another embodiment, the output of the current image can be defined as follows:
- Если PictureOutputFlag равен 1, a DpbOutputTime [n] равен CpbRemovalTime [n], выводится текущее изображение.- If PictureOutputFlag is 1 and DpbOutputTime[n] is CpbRemovalTime[n], the current image is output.
- В противном случае, если PictureOutputFlag равен 0, текущее изображение не выводится, но будет сохранено в DPB, как указано в пункте.- Otherwise, if PictureOutputFlag is 0, the current image is not output, but will be stored in the DPB as specified in paragraph.
- В противном случае (PictureOutputFlag равен 1, a DpbOutputTime [n] больше, чем CpbRemovalTime [n]), текущее изображение выводится позже и будет сохранено в DPB (как указано в пункте) и выводится в момент времени DpbOutputTime [n] если не указано, что оно не выводится путем декодирования или вывода no_output_of_prior_pics_flag, равного 1, в момент времени, предшествующий DpbOutputTime [n].- Otherwise (PictureOutputFlag is 1 and DpbOutputTime[n] is greater than CpbRemovalTime[n]), current image is output later and will be stored in DPB (as specified in clause) and output at DpbOutputTime[n] if not specified that it is not output by decoding or by outputting no_output_of_prior_pics_flag equal to 1 at a time prior to DpbOutputTime[n].
При выводе изображение обрезается с использованием соответствующего окна обрезки, указанного в PPS для изображения.On output, the image is cropped using the appropriate crop window specified in the PPS for the image.
[98] В том же или другом варианте осуществления PictureOutputFlag может быть установлен следующим образом:[98] In the same or different embodiment, the PictureOutputFlag can be set as follows:
- Если выполняется одно из следующих условий, PictureOutputFlag устанавливается равным 0:- If one of the following conditions is true, PictureOutputFlag is set to 0:
- текущее изображение является изображением RASL, а значение NoIncorrectPicOutputFlag связанного изображения IRAP равно 1.- the current image is a RASL image and the NoIncorrectPicOutputFlag value of the associated IRAP image is 1.
- gdr_enabled_flag равно 1, а текущее изображение является изображением GDR с NoIncorrectPicOutputFlag, равным 1.- gdr_enabled_flag is 1 and the current image is a GDR image with NoIncorrectPicOutputFlag set to 1.
- gdr_enabled_flag равно 1, текущее изображение связано с изображением GDR с NoIncorrectPicOutputFlag, равным 1, и PicOrderCntVal текущего изображения меньше RpPicOrderCntVal связанного изображения GDR.- gdr_enabled_flag is 1, the current picture is associated with a GDR picture with NoIncorrectPicOutputFlag equal to 1, and the PicOrderCntVal of the current picture is less than the RpPicOrderCntVal of the associated GDR picture.
- vps_output_layer_mode равно 0 или 2, a OutputLayerFlag [GeneralLayerIdx [nuh_layer_id]] равно 0.- vps_output_layer_mode is 0 or 2 and OutputLayerFlag [GeneralLayerIdx [nuh_layer_id]] is 0.
- В противном случае PictureOutputFlag устанавливается равным pic_output_flag.- Otherwise, PictureOutputFlag is set to pic_output_flag.
[99] В том же или другом варианте осуществления, в качестве альтернативы, PictureOutputFlag может быть установлен следующим образом.[99] In the same or another embodiment, alternatively, the PictureOutputFlag may be set as follows.
- Если выполняется одно из следующих условий, PictureOutputFlag устанавливается равным 0:- If one of the following conditions is true, PictureOutputFlag is set to 0:
- текущее изображение является изображением RASL, а значение NoIncorrectPicOutputFlag связанного изображения IRAP равно 1.- The current image is a RASL image and the NoIncorrectPicOutputFlag value of the associated IRAP image is 1.
- gdr_enabled_flag равно 1, а текущее изображение является изображением GDR с NoIncorrectPicOutputFlag, равным 1.- gdr_enabled_flag is 1 and the current image is a GDR image with NoIncorrectPicOutputFlag set to 1.
- gdr_enabled_flag равно 1, текущее изображение связано с изображением GDR с NoIncorrectPicOutputFlag, равным 1, и PicOrderCntVal текущего изображения меньше RpPicOrderCntVal связанного изображения GDR.- gdr_enabled_flag is 1, the current picture is associated with a GDR picture with NoIncorrectPicOutputFlag equal to 1, and the PicOrderCntVal of the current picture is less than the RpPicOrderCntVal of the associated GDR picture.
- vps_output_layer_mode равно 0, а текущая единица доступа содержит изображение, у которого PictureOutputFlag равно 1, nuh_layer_id nuhLid больше, чем у текущего изображения, и принадлежит выходному слою (т.е. OutputLayerFlag [GeneralLayerIdx [nuhLid]] равен 1).- vps_output_layer_mode is 0 and the current access unit contains an image whose PictureOutputFlag is 1, nuh_layer_id nuhLid is greater than the current image, and belongs to the output layer (i.e. OutputLayerFlag [GeneralLayerIdx [nuhLid]] is 1).
- vps_output_layer_mode равно 2, a OutputLayerFlag [GeneralLayerldx [nuh_layer_id]] равно 0.- vps_output_layer_mode is 2 and OutputLayerFlag [GeneralLayerldx [nuh_layer_id]] is 0.
- В противном случае PictureOutputFlag устанавливается равным pic_output_flag.- Otherwise, PictureOutputFlag is set to pic_output_flag.
[100] В том же или другом варианте осуществления флаг в VPS (или другом наборе параметров) может указывать, передаются или нет списки ILRP для текущего слайса (или изображения). Например, ссылаясь на пример (800) с фиг. 8, inter_layer_ref_pics_present_fiag, равный 0, может указывать, что никакой ILRP не используется для интерпредсказания любого кодированного изображения в CVS. inter_layer_ref_pics_flag, равный 1, может указывать, что ILRP могут использоваться для интерпредсказания одного или более кодированных изображений в CVS.[100] In the same or another embodiment, a flag in the VPS (or other set of parameters) may indicate whether or not ILRPs are transmitted for the current slice (or picture). For example, referring to example (800) of FIG. 8, inter_layer_ref_pics_present_fiag equal to 0 may indicate that no ILRP is used to interpredict any encoded picture in CVS. inter_layer_ref_pics_flag equal to 1 may indicate that ILRPs may be used to interpredict one or more encoded pictures in CVS.
[101] В тех же или других вариантах осуществления список межслойных опорных изображений (ILRP) для изображения в k-м слое может передаваться или нет, когда k-й слой является зависимым слоем. Тем не менее, список ILRP для изображения в k-м слое не должен передаваться, и никакой ILRP не должен включаться в список опорных изображений, когда k-й слой является независимым слоем.[101] In the same or other embodiments, an interlayer reference picture list (ILRP) for an image in the k-th layer may or may not be transmitted when the k-th layer is a dependent layer. However, the ILRP list for a picture in the kth layer should not be transmitted, and no ILRP should be included in the reference picture list when the kth layer is an independent layer.
[102] значение inter_layer_ref_pics_present_flag может быть установлено равным 0, когда sps_video_parameter_set_id равно 0, когда nuh_layer_id равно 0, или когда vps_independent_layer_flag [GeneralLayerIdx [nuh_layer_id]] равно 1.[102] inter_layer_ref_pics_present_flag may be set to 0 when sps_video_parameter_set_id is 0, when nuh_layer_id is 0, or when vps_independent_layer_flag [GeneralLayerIdx [nuh_layer_id]] is 1.
[103] В том же или других вариантах осуществления со ссылкой на пример (900) с фиг. 9, набор элементов синтаксиса, которые явно указывают список ILRP, может быть передан в SPS, PPS, APS или заголовок слайса. Список ILRP может использоваться для создания списка опорных изображений текущего изображения.[103] In the same or other embodiments, with reference to example (900) of FIG. 9, a set of syntax elements that explicitly specify an ILRP list may be passed in an SPS, PPS, APS, or slice header. The ILRP list may be used to create a reference picture list of the current picture.
[104] В том же или других вариантах осуществления список ILRP может использоваться для идентификации активного или неактивного опорного изображения в буфере декодированных изображений (DPB). Активное опорное изображение может использоваться как опорное изображение для декодирования текущего изображения, в то время как неактивное опорное изображение может не использоваться для декодирования текущего изображения, но может использоваться для декодирования последующего изображения в порядке декодирования.[104] In the same or other embodiments, the ILRP list may be used to identify an active or inactive reference picture in a decoded picture buffer (DPB). An active reference picture may be used as a reference picture for decoding the current picture, while an inactive reference picture may not be used for decoding the current picture but may be used for decoding a subsequent picture in decoding order.
[105] В том же или другом варианте осуществления список ILRP может использоваться для идентификации того, какое опорное изображение может быть сохранено в DPB или может быть выведено и удалено из DPB. Эта информация может использоваться для работы декодера на основе модели и параметров гипотетического эталонного декодера (HRD).[105] In the same or another embodiment, the ILRP list can be used to identify which reference picture can be stored in the DPB or can be output and removed from the DPB. This information can be used to operate the decoder based on the hypothetical reference decoder (HRD) model and parameters.
[106] В том же или другом варианте осуществления элемент синтаксиса ilrp_idc [listIdx] [rplsIdx] [i] может передаваться в VPS, SPS, PPS, APS или заголовке слайса. Элемент синтаксиса ilrp_idc [listIdx] [rplsIdx] [i] указывает индекс, для списка напрямую зависимых слоев, ILRP i-й записи в структуре синтаксиса ref_pic_list_struct (listIdx, rplsIdx) для списка напрямую зависимых слоев. Значение ilrp_idc [listIdx] [rplsIdx] [i] должно быть в диапазоне от 0 до GeneralLayerIdx [nuh_layer_id] - 1 включительно.[106] In the same or a different embodiment, the ilrp_idc [listIdx] [rplsIdx] [i] syntax element may be carried in a VPS, SPS, PPS, APS, or slice header. The ilrp_idc [listIdx] [rplsIdx] [i] syntax element specifies the index, for a list of directly dependent layers, of the ILRP i-th entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure for a list of directly dependent layers. The value of ilrp_idc [listIdx] [rplsIdx] [i] must be between 0 and GeneralLayerIdx [nuh_layer_id] - 1 inclusive.
[107] В том же варианте осуществления элемент синтаксиса ilrp_idc [listIdx] [rplsIdx] [i] может быть индексом, указывающим изображение ILRP среди напрямую зависимых слоев, которые идентифицируются с помощью vps_direct_dependency_flag [i] [j], передаваемого в VPS. В этом случае значение ilrp_idc [listIdx] [rplsIdx] [i] должно быть в диапазоне от 0 до NumDependentLayers [GeneralLayerldx [nuh_layer_id]] - 1 включительно.[107] In the same embodiment, the ilrp_idc [listIdx] [rplsIdx] [i] syntax element may be an index indicating the ILRP image among the directly dependent layers that are identified by the vps_direct_dependency_flag [i] [j] passed to the VPS. In this case, the value of ilrp_idc[listIdx][rplsIdx][i] must be in the
[108] В том же варианте осуществления, когда nuh_layer_id текущего уровня равен k, может быть эффективной по битам передача индекса, указывающего ILRP среди напрямую зависимых уровней, по сравнению с передачей индекса, указывающего ILRP среди всех уровней с nuh_layer_id меньше, чем k.[108] In the same embodiment, when the nuh_layer_id of the current layer is equal to k, it may be bit-efficient to transmit an index indicating ILRP among directly dependent layers, as compared to transmitting an index indicating ILRP among all layers with nuh_layer_id less than k.
[109] В том же или другом варианте осуществления, по-прежнему ссылаясь на фиг. 9, списки опорных изображений RefPicList [0] и RefPicList [1] могут быть построены следующим образом:[109] In the same or different embodiment, still referring to FIG. 9, reference picture lists RefPicList[0] and RefPicList[1] can be constructed as follows:
[110] Методы для передачи параметров адаптивного разрешения, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически сохранены на одном или более машиночитаемых носителях. Например, на фиг. 10 показана компьютерная система (1000), подходящая для реализации определенных вариантов осуществления раскрытого объекта изобретения.[110] The techniques for transmitting adaptive resolution parameters described above may be implemented in computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, in FIG. 10 shows a computer system (1000) suitable for implementing certain embodiments of the disclosed subject matter.
[111] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть объектом сборки, компиляции, связывания или подобных механизмов для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и и т.п., центральными процессорами компьютера (ЦП), графическими процессорами (ГП) и т.п.[111] Computer software may be coded using any suitable machine code or computer language, which may be the object of assembly, compilation, linking, or similar mechanisms to produce code containing instructions that can be executed directly or through interpretation, execution of microcode, and and the like, computer central processing units (CPUs), graphics processing units (GPUs), and the like.
[112] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т.п.[112] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, IoT devices, and the like.
[113] Компоненты, показанные на фиг. 10 для компьютерной системы (1000), являются примерными по своей природе и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего раскрытия. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы (1000).[113] The components shown in FIG. 10 for computer system (1000) are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of computer software implementing embodiments of the present disclosure. The configuration of the components is also not to be interpreted as having any dependency or requirement relating to any one or combination of the components illustrated in the exemplary embodiment of the computer system (1000).
[114] Компьютерная система (1000) может включать в себя определенные устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода с человеко-машинным интерфейсом может реагировать на ввод одним или более пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения управляющей перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например: жестов), обонятельного ввода (не изображен). Устройства с человеко-машинным интерфейсом также могут использоваться для захвата определенных носителей, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).[114] The computer system (1000) may include certain human-machine interface input devices. Such a human-machine interface input device may respond to input by one or more human users through, for example, tactile input (e.g., keystrokes, swipes, movement of a control glove), audio input (e.g., voice, handclaps), visual input (for example: gestures), olfactory input (not shown). HMI devices can also be used to capture certain media not necessarily directly related to conscious human input, such as sound (e.g. speech, music, ambient sound), images (e.g. scanned images, photographic images taken from a camera for still images), video (eg 2D video, 3D video including stereoscopic video).
[115] Устройства ввода с человеко-машинным интерфейсом могут включать в себя одно или более из (только по одному из каждого изображенного): клавиатура (1001), мышь (1002), трекпад (1003), сенсорный экран (1010), джойстик (1005), микрофон (1006), сканер (1007), камера (1008).[115] Human interface input devices may include one or more of (only one of each depicted): keyboard (1001), mouse (1002), trackpad (1003), touch screen (1010), joystick ( 1005), microphone (1006), scanner (1007), camera (1008).
[116] Компьютерная система (1000) также может включать в себя определенные устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода с человеко-машинным интерфейсом могут стимулировать чувства одного или нескольких пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с человеко-машинным интерфейсом могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана (1010) или джойстика (1005), но также могут иметься устройства тактильной обратной связи, которые не служат в качестве устройств ввода), устройства вывода звука (например: динамики (1009), наушники (не изображены)), устройства вывода изображения (например, экраны (1010), включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое из которых имеет или не имеет возможности ввода с сенсорного экрана, каждое с возможностью тактильной обратной связи или без нее - некоторые из которых могут быть способны выводить двухмерный визуальный вывод или более, чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)) и принтеры (не изображены).[116] The computer system (1000) may also include certain human-machine interface output devices. Such human interface output devices can stimulate the senses of one or more human users through, for example, tactile output, sound, light, and smell/taste. Such HMI output devices may include tactile output devices (e.g., haptic feedback from a touch screen (1010) or joystick (1005), but there may also be tactile feedback devices that do not serve as input devices) , audio output devices (for example: speakers (1009), headphones (not shown)), image output devices (for example, screens (1010), including CRT screens, LCD screens, plasma screens, OLED screens, each of which has or no touchscreen input capability, each with or without haptic feedback capability - some of which may be capable of producing 2D visual output or more than 3D output by means such as stereographic output; virtual reality goggles (not shown ), holographic displays and smoke tanks (not shown)) and printers (not shown).
[117] Компьютерная система (1000) также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW (1020) с CD/DVD или подобными носителями (1021), флэш-накопитель (1022), съемный жесткий диск или твердотельный накопитель (1023), ранее разработанные магнитные носители, такие как лента и дискета (не изображены), специализированные устройства на основе ROM/ASIC/PLD, такие как защитные ключи (не изображены) и т.п.[117] The computer system (1000) may also include human accessible storage devices and associated media such as optical media including CD/DVD ROM/RW (1020) with CD/DVD or similar media (1021), flash drive (1022), removable hard drive or solid state drive (1023), previously developed magnetic media such as tape and floppy disk (not shown), specialized ROM/ASIC/PLD based devices such as dongles (not shown) and so on.
[118] Специалисты в данной области также должны понимать, что термин «машиночитаемый носитель», используемый в связи с раскрытым в настоящем документе объектом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.[118] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not encompass transmission media, carrier waves, or other time signals.
[119] Компьютерная система (1000) также может включать в себя интерфейс к одной или более коммуникационным сетям. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т.д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные телевизионные или беспроводные глобальные цифровые сети, включая кабельное телевидение, спутниковое телевидение и наземное телевещание, автомобильное и промышленное оборудование, включая CAN-шину и т.д. Некоторым сетям обычно требуются внешние сетевые интерфейсные адаптеры, которые подключены к определенным портам данных общего назначения или периферийным шинам (1049) (например, к портам USB компьютерной системы (1000)); другие обычно интегрированы в ядро компьютерной системы (1000) путем присоединения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему ПК или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1000) может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное телевидение), однонаправленной только для отправки (например, CAN-шина на определенные устройства с CAN-шиной) или двунаправленной, например, для других компьютерных систем, использующих локальную или глобальную цифровую сеть. В каждой из этих сетей и сетевых интерфейсов могут использоваться определенные протоколы и стеки протоколов, как описано выше.[119] The computer system (1000) may also include an interface to one or more communication networks. Networks can be, for example, wireless, wired, optical. In addition, networks can be local, wide area, metropolitan, automotive, industrial, real-time, latency tolerant, and so on. Example networks include local area networks such as Ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., wired television or wireless digital wide area networks including cable television, satellite television and terrestrial TV broadcasting, automotive and industrial equipment, including CAN bus, etc. Some networks typically require external network interface adapters that are connected to certain general purpose data ports or peripheral buses (1049) (for example, computer system USB ports (1000)); others are typically integrated into the computer system core (1000) by being attached to a system bus as described below (eg, an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (1000) can communicate with other entities. Such communication can be unidirectional, receive-only (for example, broadcast television), unidirectional, send-only (for example, CAN bus to certain CAN-bus devices), or bidirectional, for example, to other computer systems using a local or wide area digital network. . Each of these networks and network interfaces may use specific protocols and protocol stacks as described above.
[120] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку устройства хранения и сетевые интерфейсы могут быть присоединены к ядру (1040) компьютерной системы (1000).[120] The above human-machine interface devices, human-accessible storage devices, and network interfaces may be attached to the core (1040) of the computer system (1000).
[121] Ядро (1040) может включать в себя один или более центральных процессоров (ЦП) (1041), графических процессоров (ГП) (1042), специализированных программируемых процессоров в виде программируемых пользователем вентильных матриц (ППВМ) (1043), аппаратных ускорителей (1044) для определенных задач и т.д. Эти устройства, наряду с постоянным запоминающим устройством (ПЗУ) (1045), оперативным запоминающим устройством (1046), внутренним ЗУ большой емкости, таким как внутренние жесткие диски, недоступные пользователю, твердотельные накопители (SSD) и т.п. (1047), могут быть подключены через системную шину (1048). В некоторых компьютерных системах системная шина (1048) может быть доступна в виде одного или более физических разъемов для обеспечения возможности расширения за счет дополнительных ЦП, ГП и т.п. Периферийные устройства могут быть подключены либо непосредственно к системной шине (1048) ядра, либо через периферийную шину (1049). Архитектура периферийной шины включает PCI, USB и т.п.[121] The core (1040) may include one or more central processing units (CPUs) (1041), graphics processing units (GPUs) (1042), dedicated field programmable gate array processors (FPGAs) (1043), hardware accelerators (1044) for certain tasks, etc. These devices, along with Read Only Memory (ROM) (1045), Random Access Memory (1046), high capacity internal storage such as internal non-user hard drives, solid state drives (SSDs), and the like. (1047) can be connected via the system bus (1048). In some computer systems, the system bus (1048) may be available as one or more physical connectors to allow expansion with additional CPUs, GPUs, or the like. Peripherals can be connected either directly to the system bus (1048) of the kernel, or via a peripheral bus (1049). Peripheral bus architecture includes PCI, USB, etc.
[122] ЦП (1041), ГП (1042), ППВМ (1043) и ускорители (1044) могут выполнять определенные инструкции, которые в сочетании могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ПЗУ (1045) или ОЗУ (1046). Переходные данные также могут храниться в ОЗУ (1046), тогда как постоянные данные могут храниться, например, во внутреннем ЗУ большой емкости (1047). Быстрое хранение и извлечение на любое из запоминающих устройств могут быть обеспечены за счет использования кэш-памяти, которая может быть тесно связана с одним или более ЦП (1041), ГП (1042), ЗУ большой емкости (1047), ПЗУ (1045), ОЗУ (1046) и т.п.[122] The CPU (1041), GPU (1042), FPGA (1043), and accelerators (1044) may execute certain instructions, which in combination may constitute the aforementioned computer code. This computer code may be stored in ROM (1045) or RAM (1046). Transient data may also be stored in RAM (1046), while persistent data may be stored in, for example, internal mass storage (1047). Fast storage and retrieval to any of the storage devices can be achieved through the use of cache memory, which can be closely associated with one or more CPU (1041), GPU (1042), mass storage (1047), ROM (1045), RAM (1046), etc.
[123] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего раскрытия, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.[123] The computer-readable medium may contain computer code for performing various computer-implemented operations. The media and computer code may be specially designed and constructed for the purposes of this disclosure, or they may be well known and available to those skilled in the art of computer software.
[124] В качестве примера, а не ограничения, компьютерная система, имеющая архитектуру (1000) и, в частности, ядро (1040), может обеспечивать функциональность в результате наличия процессора(ов) (включая ЦП, ГП, ППВМ, ускорители и т.п.), выполняющего программное обеспечение, воплощенное на одном или нескольких материальных, машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя ЗУ большой емкости, как описано выше, а также определенным хранилищем ядра (1040), которые имеют невременной характер, например, внутренним ЗУ (1047) большой емкости ядра или ПЗУ (1045). Программное обеспечение, реализующее различные варианты осуществления настоящего раскрытия, может храниться в таких устройствах и выполняться ядром (1040). Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может побуждать ядро (1040) и, в частности, процессоры в нем (включая ЦП, ГП, ППВМ и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в ОЗУ (1046) и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы, компьютерная система может обеспечивать функциональность в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель (1044)), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в данном документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это применимо. Ссылка на машиночитаемый носитель может включать в себя схему (например, интегральную схему (ИС)), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это применимо. Настоящее раскрытие включает в себя любую подходящую комбинацию аппаратного и программного обеспечения.[124] By way of example, and not limitation, a computer system having an architecture (1000), and in particular a core (1040), may provide functionality as a result of having processor(s) (including CPUs, GPUs, FPGAs, accelerators, etc.). .p.) that executes software embodied on one or more tangible, machine-readable media. Such computer-readable media may be media associated with user accessible mass storage as described above, as well as certain kernel storage (1040) that is non-transitory in nature, such as internal kernel mass storage (1047) or ROM (1045). Software implementing various embodiments of the present disclosure may be stored on such devices and executed by the kernel (1040). The computer-readable medium may include one or more memory devices or microchips, as appropriate. The software may cause the core (1040), and in particular the processors therein (including the CPU, GPU, FPGA, etc.) to execute certain processes or certain parts of the specific processes described herein, including the definition of data structures stored in RAM (1046) and changing such data structures in accordance with the processes defined by the software. In addition or alternatively, a computer system may provide functionality as a result of logic embedded in or otherwise embodied in hardware circuitry (e.g., an accelerator (1044)) that may operate in place of or in conjunction with software to perform certain processes or individual parts of the specific processes described in this document. The link to the software may include logic and vice versa where applicable. A reference to a computer-readable medium may include circuitry (eg, an integrated circuit (IC)) storing software to execute, circuitry embodying logic to execute, or both, where applicable. The present disclosure includes any suitable combination of hardware and software.
[125] Хотя это раскрытие описывает несколько примерных вариантов осуществления, существуют изменения, перестановки и различные заменяющие эквиваленты, которые попадают в объем раскрытия. Таким образом, будет принято во внимание, что специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы раскрытия и, таким образом, находятся в пределах его сущности и объема правовой охраны.[125] Although this disclosure describes several exemplary embodiments, there are variations, permutations, and various replacement equivalents that fall within the scope of the disclosure. Thus, it will be appreciated that those skilled in the art will be able to develop numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the disclosure and thus fall within its spirit and scope.
Claims (34)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US62/903,652 | 2019-09-20 | ||
US17/019,713 | 2020-09-14 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2023105414A Division RU2023105414A (en) | 2019-09-20 | 2020-09-18 | TRANSMISSION OF INTERLAYER PREDICTION IN A VIDEO BITSTREAM |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2791938C1 true RU2791938C1 (en) | 2023-03-14 |
Family
ID=
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140301456A1 (en) * | 2013-04-08 | 2014-10-09 | Qualcomm Incorporated | Inter-layer picture signaling and related processes |
US20140314148A1 (en) * | 2013-04-17 | 2014-10-23 | Nokia Corporation | Apparatus, a method and a computer program for video coding and decoding |
US20150319453A1 (en) * | 2012-12-26 | 2015-11-05 | Electronics And Telecommunications Research Institute | Method for encoding/decoding images, and apparatus using same |
US20160227232A1 (en) * | 2013-10-12 | 2016-08-04 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding multilayer video, and method and apparatus for decoding multilayer video |
WO2018002425A3 (en) * | 2016-06-30 | 2018-02-08 | Nokia Technologies Oy | An apparatus, a method and a computer program for video coding and decoding |
RU2667723C2 (en) * | 2013-04-08 | 2018-09-24 | Долби Интернэшнл Аб | Method for encoding and method for decoding a lut and corresponding devices |
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150319453A1 (en) * | 2012-12-26 | 2015-11-05 | Electronics And Telecommunications Research Institute | Method for encoding/decoding images, and apparatus using same |
US20140301456A1 (en) * | 2013-04-08 | 2014-10-09 | Qualcomm Incorporated | Inter-layer picture signaling and related processes |
RU2667723C2 (en) * | 2013-04-08 | 2018-09-24 | Долби Интернэшнл Аб | Method for encoding and method for decoding a lut and corresponding devices |
US20140314148A1 (en) * | 2013-04-17 | 2014-10-23 | Nokia Corporation | Apparatus, a method and a computer program for video coding and decoding |
US20160227232A1 (en) * | 2013-10-12 | 2016-08-04 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding multilayer video, and method and apparatus for decoding multilayer video |
WO2018002425A3 (en) * | 2016-06-30 | 2018-02-08 | Nokia Technologies Oy | An apparatus, a method and a computer program for video coding and decoding |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2023201809B2 (en) | Method for signaling output layer set with sub-picture | |
US11089318B2 (en) | Signaling of adaptive picture size in video bitstream | |
AU2020348846B2 (en) | Signaling of inter layer prediction in video bitstream | |
AU2023202413B2 (en) | Signaling of inter layer prediction in video bitstream | |
AU2023201466B2 (en) | Signaling of scalability parameters in video bitstream | |
CA3136266A1 (en) | Method for reference picture resampling with offset in video bitstream | |
US20230118451A1 (en) | Techniques for constraint flag signaling for range extension with residual rice coding extension | |
US11863773B2 (en) | Method for support of scalability with adaptive picture resolution | |
RU2791938C1 (en) | Transmission of interlayer prediction in video bit stream | |
RU2783382C1 (en) | Signalling of inter-layer prediction in a video bitstream | |
RU2799572C1 (en) | Method for signaling a set of output layers with a subimage | |
RU2803890C1 (en) | Layer alignment method in encoded video stream | |
RU2794483C1 (en) | Reference picture oversampling signalling with indication of constant window size in video bitstream | |
RU2814858C1 (en) | Method of signaling division of rectangular slice in encoded video stream | |
RU2779911C1 (en) | Signaling of scalability parameters in the video bitstream |