RU2793903C1 - Method for padding processing by parts of sub-areas in a video stream - Google Patents

Method for padding processing by parts of sub-areas in a video stream Download PDF

Info

Publication number
RU2793903C1
RU2793903C1 RU2021127808A RU2021127808A RU2793903C1 RU 2793903 C1 RU2793903 C1 RU 2793903C1 RU 2021127808 A RU2021127808 A RU 2021127808A RU 2021127808 A RU2021127808 A RU 2021127808A RU 2793903 C1 RU2793903 C1 RU 2793903C1
Authority
RU
Russia
Prior art keywords
encoded
video
syntax elements
computer
wraparound
Prior art date
Application number
RU2021127808A
Other languages
Russian (ru)
Inventor
Беондоо ЧОЙ
Штефан ВЕНГЕР
Шань ЛЮ
Original Assignee
TEНСЕНТ АМЕРИКА ЭлЭлСи
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TEНСЕНТ АМЕРИКА ЭлЭлСи filed Critical TEНСЕНТ АМЕРИКА ЭлЭлСи
Application granted granted Critical
Publication of RU2793903C1 publication Critical patent/RU2793903C1/en

Links

Images

Abstract

FIELD: video coding.
SUBSTANCE: encoded syntax elements corresponding to the cyclic padding process are decoded based on the offset of the reference block by the reference cyclic padding width value, which is determined based on the locations of the luminance samples in the reference block. At least one coded current picture is restored using a cyclic padding process. The syntax elements indicate the offset value for loop processing; or information about the width of the left and right fill. The flag indicates whether syntax elements corresponding to the cyclic padding process are present in the parameter set. The position of a pixel for motion-compensated prediction in a reference image is determined by interpreting the syntax elements corresponding to the cyclic padding process with a clipping process.
EFFECT: increase in the efficiency of coding.
21 cl, 11 dwg

Description

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННУЮ ЗАЯВКУCROSS-REFERENCE TO RELATED APPLICATION

[1] Данная заявка испрашивает приоритет предварительной заявки на патент США № 62/903,635, поданной 20 сентября 2019 г., и заявки на патент США № 17/019,692, поданной 14 сентября 2020 г., которые полностью включены в настоящий документ.[1] This application claims priority of U.S. Provisional Application No. 62/903,635, filed September 20, 2019, and U.S. Patent Application No. 17/019,692, filed September 14, 2020, which are incorporated herein in their entirety.

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

[2] Это изобретение в целом относится к области обработки данных и, в частности, к кодированию и декодированию видео.[2] This invention generally relates to the field of data processing and, in particular, to encoding and decoding video.

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

[3] Кодирование и декодирование видео с использованием интер-кадрового предсказания с компенсацией движения известно уже несколько десятилетий. Несжатое цифровое видео может состоять из серии изображений, причем каждое изображение имеет пространственный размер, например, 1920 x 1080 отсчетов яркости и связанных отсчетов цветности. Серия изображений может иметь фиксированную или переменную частоту изображений (неофициально также известную как частота кадров), например, 60 изображений в секунду или 60 Гц. Несжатое видео имеет значительные требования к битрейту. Например, для видео 1080p60 4:2:0 с частотой 8 бит на отсчет (разрешение 1920x1080 отсчетов яркости при частоте кадров 60 Гц) требуется полоса пропускания, близкая к 1,5 Гбит/с. Час такого видео требует более 600 ГБ дискового пространства.[3] Video encoding and decoding using motion-compensated inter-frame 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 x 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 (resolution 1920x1080 luma samples at 60 Hz) requires bandwidth close to 1.5 Gbps. 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 methods in which an exact copy of the original signal can be restored from a compressed source 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 suitable 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 can tolerate higher distortion than users of broadcast television 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] Концепция разделения кодированного битового потока видео на пакеты для транспортировки по пакетным сетям используется в течение десятилетий. Вначале стандарты и технологии кодирования видео были в большинстве своем оптимизированы для транспорта, ориентированного на ботов, и определяли потоки битов. Пакетирование происходило в интерфейсах системного уровня, указанных, например, в форматах полезной нагрузки транспортного протокола реального времени (RTP). С появлением возможности подключения к Интернету, подходящей для массового использования видео через Интернет, стандарты кодирования видео отразили этот видный вариант использования посредством концептуальной дифференциации уровня кодирования видео (VCL) и уровня сетевой абстракции (NAL). Блоки NAL были введены в H.264 в 2003 году и с тех пор сохранены в некоторых стандартах и технологиях кодирования видео с небольшими изменениями.[6] The concept of splitting an encoded video bitstream into packets for transport over packet networks has been around for decades. In the beginning, video coding standards and technologies were mostly optimized for bot-centric transport and defined bitstreams. The packetization took place at system level interfaces, as specified, for example, in Real Time Transport Protocol (RTP) payload formats. With the advent of Internet connectivity suitable for mass consumption of video over the Internet, video coding standards reflected this prominent use case through the conceptual differentiation of the video coding layer (VCL) and the network abstraction layer (NAL). NAL units were introduced in H.264 in 2003 and have since been retained in some video coding standards and technologies with minor changes.

[7] Блок NAL во многих случаях может рассматриваться как наименьший объект, на который декодер может воздействовать, не обязательно декодируя все предыдущие блоки NAL кодированной видеопоследовательности. Таким образом, блоки NAL позволяют использовать определенные технологии устойчивости к ошибкам, а также определенные методы манипулирования потоками битов, включая сокращение потока битов с помощью сетевых элементов с поддержкой мультимедиа (MANE), таких как блоки селективной пересылки (SFU) или блоки многоточечного управления (MCU).[7] A NAL unit can in many cases be considered the smallest entity that a decoder can act upon without necessarily decoding all previous NAL units of a coded video sequence. Thus, NAL units allow the use of certain error-tolerant technologies as well as certain bitstream manipulation techniques, including bitstream reduction using multimedia-enabled network elements (MANEs) such as Selective Forwarding Units (SFUs) or Multipoint Control Units (MCUs). ).

[8] На фиг. 1 изображены соответствующие части синтаксической диаграммы заголовков блоков NAL в соответствии с H.264 (101) и H.265 (102) в обоих случаях без какого-либо из их соответствующих расширений. В обоих случаях disabled_zero_bit - это нулевой бит, используемый для предотвращения эмуляции стартового кода в определенных средах системного уровня. Элемент синтаксиса nal_unit_type относится к типу данных, которые несет блок NAL, который может быть, например, одним из определенных типов слайсов, типов наборов параметров, сообщением дополнительной расширенной информации (SEI) и так далее. Заголовок блока NAL H.265 дополнительно содержит nuh_layer_id и nuh_temporal_id_plus1, которые указывают пространственный/SNR и временной уровень кодированного изображения, которому принадлежит блок NAL.[8] FIG. 1 shows the respective portions of the NAL unit header syntax diagram according to H.264 (101) and H.265 (102) in both cases without any of their respective extensions. In both cases, disabled_zero_bit is a zero bit used to prevent start code emulation in certain system-level environments. The nal_unit_type syntax element refers to the type of data carried by a NAL unit, which may be, for example, one of certain slice types, parameter set types, an extended supplementary information (SEI) message, and so on. The H.265 NAL unit header further contains nuh_layer_id and nuh_temporal_id_plus1, which indicate the spatial/SNR and temporal layer of the encoded picture to which the NAL unit belongs.

[9] Можно заметить, что заголовок блока NAL включает в себя только легко анализируемые кодовые слова фиксированной длины, которые не имеют никакой зависимости анализа от других данных в потоке битов, таких как, например, заголовки других блоков NAL, наборы параметров и так далее. Поскольку заголовки блоков NAL являются первыми октетами в блоке NAL, MANE может легко их извлекать, анализировать и воздействовать на них. Напротив, другие элементы синтаксиса высокого уровня, например заголовки слайсов или заголовком тайлов, менее доступны для MANE, поскольку они могут требовать сохранения контекста набора параметров и/или обработки кодовых точек переменной длины или арифметически кодированных кодовых точек.[9] It can be seen that the NAL unit header includes only easily parsable fixed length codewords that have no analysis dependency on other data in the bitstream, such as, for example, other NAL unit headers, parameter sets, and so on. Because NAL unit headers are the first octets in a NAL unit, MANE can easily extract, parse, and act on them. In contrast, other high-level syntax elements, such as slice headers or tile headers, are less accessible to MANE because they may require saving the parameter set context and/or processing variable length code points or arithmetically encoded code points.

[10] Кроме того, следует отметить, что заголовки блоков NAL, как показано на фиг.1, не включают в себя информацию, которая может ассоциировать блок NAL с кодированным изображением, которое состоит из множества блоков NAL (таких как, например, состоящее из нескольких тайлов или слайсов, по меньшей мере некоторые из которых упакованы в отдельные блоки NAL).[10] In addition, it should be noted that the NAL unit headers as shown in FIG. 1 do not include information that can associate a NAL unit with a coded picture that consists of a plurality of NAL units (such as multiple tiles or slices, at least some of which are packed into individual NAL units).

[11] Определенные транспортные технологии, такие как RTP (RFC 3550), стандарты системы MPEG, форматы файлов ISO и т. д., могут включать определенную информацию, часто в форме информации о времени, такой как время представления (в случае файлового формата MPEG и ISO) или время захвата (в случае RTP), которое может быть легко доступно для MANE и может помочь связать их соответствующие транспортные единицы с кодированными изображениями. Однако семантика этой информации может отличаться от одной технологии транспортировки/хранения к другой и может не иметь прямого отношения к структуре изображения, используемой при кодировании видео. Соответственно, эта информация может быть, в лучшем случае, эвристической, а также может не особенно хорошо подходить для определения того, принадлежат ли блоки NAL в потоке блоков NAL одному и тому же кодированному изображению.[11] Certain transport technologies such as RTP (RFC 3550), MPEG system standards, ISO file formats, etc. may include certain information, often in the form of time information such as presentation time (in the case of the MPEG file format and ISO) or capture time (in the case of RTP) which can be easily accessed by MANEs and can help link their respective transport units to the encoded pictures. However, the semantics of this information may differ from one transport/storage technology to another and may not be directly related to the image structure used in video encoding. Accordingly, this information may be heuristic at best, and may also not be particularly well suited for determining whether NAL units in a NAL unit stream belong to the same encoded picture.

РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯDISCLOSURE OF THE INVENTION

[12] Варианты осуществления изобретения относятся к способу, системе и машиночитаемому носителю для кодирования видео. Согласно одному аспекту предложен способ кодирования видео. Способ может включать в себя декодирование кодированных элементов синтаксиса, соответствующих процессу циклического заполнения. По меньшей мере одно кодированное текущее изображение восстанавливается с использованием процесса циклического заполнения. Элементы синтаксиса указывают значение смещения для циклической обработки; или информацию о ширине левого и правого заполнения.[12] Embodiments of the invention relate to a method, system, and computer-readable medium for video encoding. According to one aspect, a video encoding method is provided. The method may include decoding the encoded syntax elements corresponding to the wraparound process. At least one encoded current picture is restored using a round robin process. The syntax elements indicate the offset value for loop processing; or information about the width of the left and right padding.

[13] Согласно другому аспекту предложена компьютерная система для кодирования видео. Компьютерная система может включать в себя один или более процессоров, один или более машиночитаемых элементов памяти, одно или более машиночитаемых материальных запоминающих устройств и программные инструкции, хранящиеся по меньшей мере на одном из одного или более запоминающих устройств для исполнения по меньшей мере одним из одного или более процессоров через по меньшей мере один из одного или более элементов памяти, посредством чего компьютерная система способна осуществлять способ. Способ может включать в себя декодирование кодированных элементов синтаксиса, соответствующих процессу циклического заполнения. По меньшей мере одно кодированное текущее изображение восстанавливается с использованием процесса циклического заполнения. Элементы синтаксиса указывают значение смещения для циклической обработки; или информацию о ширине левого и правого заполнения.[13] According to another aspect, a computer system for video encoding is provided. A computer system may include one or more processors, one or more computer-readable storage elements, one or more computer-readable tangible storage devices, and program instructions stored on at least one of one or more storage devices for execution by at least one of one or more more processors through at least one of the one or more memory elements, whereby the computer system is capable of performing the method. The method may include decoding the encoded syntax elements corresponding to the wraparound process. At least one encoded current picture is restored using a round robin process. The syntax elements indicate the offset value for loop processing; or information about the width of the left and right padding.

[14] Согласно еще одному аспекту предложен машиночитаемый носитель для кодирования видео. Машиночитаемый носитель может включать в себя одно или более машиночитаемых запоминающих устройств и программных инструкций, хранящихся по меньшей мере на одном из одного или более материальных запоминающих устройств, причем программные инструкции исполняются процессором. Программные инструкции выполняются процессором для выполнения способа, который может, соответственно, включать в себя кодированные элементы синтаксиса декодирования, соответствующие процессу циклического заполнения. По меньшей мере одно кодированное текущее изображение восстанавливается с использованием процесса циклического заполнения. Элементы синтаксиса указывают значение смещения для циклической обработки; или информацию о ширине левого и правого заполнения.[14] According to another aspect, a computer-readable medium for video encoding is provided. The computer-readable medium may include one or more computer-readable memories and program instructions stored on at least one of the one or more tangible storage devices, the program instructions being executed by a processor. The software instructions are executed by the processor to execute the method, which may suitably include encoded decoding syntax elements corresponding to the wraparound process. At least one encoded current picture is restored using a round robin process. The syntax elements indicate the offset value for loop processing; or information about the width of the left and right padding.

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

[15] Эти и другие задачи, признаки и преимущества станут очевидными из следующего ниже подробного описания иллюстративных вариантов осуществления, которое следует читать вместе с прилагаемыми чертежами. Различные элементы чертежей показаны не в масштабе, поскольку иллюстрации приведены для ясности и упрощения понимания специалистом в данной области техники вместе с подробным описанием. На чертежах:[15] These and other objects, features and advantages will become apparent from the following detailed description of illustrative embodiments, which should be read in conjunction with the accompanying drawings. Various elements of the drawings are not shown to scale, as the illustrations are provided for clarity and ease of understanding by a person skilled in the art, together with a detailed description. On the drawings:

на фиг. 1 показана схематическая иллюстрация заголовков блоков NAL в соответствии с H.264 и H.265;in fig. 1 is a schematic illustration of NAL unit headers according to H.264 and H.265;

на фиг. 2 показана схематическая иллюстрация упрощенной блок-схемы системы связи согласно варианту осуществления;in fig. 2 is a schematic illustration of a simplified block diagram of a communication system according to an embodiment;

на фиг. 3 показана схематическая иллюстрация упрощенной блок-схемы системы связи согласно варианту осуществления;in fig. 3 is a schematic illustration of a simplified block diagram of a communication system according to an embodiment;

на фиг.4 показана схематическая иллюстрация упрощенной блок-схемы декодера согласно варианту осуществления;Fig. 4 is a schematic illustration of a simplified block diagram of a decoder according to an embodiment;

на фиг.5 показана схематическая иллюстрация упрощенной блок-схемы кодера согласно варианту осуществления;Fig. 5 is a schematic illustration of a simplified block diagram of an encoder according to an embodiment;

на фиг. 6 показана схематическая иллюстрация элементов синтаксиса для сигнализации смещения согласно варианту осуществления;in fig. 6 is a schematic illustration of syntax elements for offset signaling according to an embodiment;

на фиг. 7 показана схематическая иллюстрация элементов синтаксиса для сигнализации ширины заполнения кодера согласно варианту осуществления;in fig. 7 is a schematic illustration of syntax elements for encoder pad width signaling according to an embodiment;

на фиг. 8 показана схематическая иллюстрация упрощенной блок-схемы обработки заполнения каждой подобласти (тайла или субизображения) согласно варианту осуществления;in fig. 8 is a schematic illustration of a simplified flowchart of filling processing for each sub-area (tile or sub-image) according to the embodiment;

на фиг. 9 показана схематическая иллюстрация элементов синтаксиса для сигнализации смещения заполнения каждого субизображения согласно варианту осуществления;in fig. 9 is a schematic illustration of syntax elements for signaling a fill offset of each sub-picture, according to an embodiment;

на фиг. 10 показана схематическая иллюстрация элементов синтаксиса для унифицированной сигнализации смещения заполнения каждого субизображения согласно варианту осуществления; иin fig. 10 is a schematic illustration of syntax elements for unified fill offset signaling of each sub-picture according to an embodiment; And

на фиг.11 показана схематическая иллюстрация компьютерной системы согласно варианту осуществления.11 is a schematic illustration of a computer system according to an embodiment.

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯIMPLEMENTATION OF THE INVENTION

[16] Подробные варианты осуществления заявленных структур и способов раскрыты в данном описании; однако можно понять, что раскрытые варианты осуществления являются лишь иллюстрацией заявленных структур и способов, которые могут быть воплощены в различных формах. Однако эти структуры и способы могут быть воплощены во многих различных формах, и их не следует рассматривать как ограниченные примерными вариантами осуществления, изложенными в данном документе. Скорее, данные примерные варианты осуществления представлены для того, чтобы данное описание было исчерпывающим и полным и полностью передавало объем правовой охраны для специалистов в данной области техники. В описании детали хорошо известных функций и методов могут быть опущены, чтобы избежать ненужного затруднения понимания представленных вариантов осуществления.[16] Detailed embodiments of the claimed structures and methods are disclosed in this description; however, it can be understood that the disclosed embodiments are merely illustrative of the claimed structures and methods, which may be embodied in various forms. However, these structures and methods can be embodied in many different forms and should not be construed as being limited to the exemplary embodiments set forth herein. Rather, these exemplary embodiments are provided so that this description is complete and complete and fully conveys the scope of legal protection for those skilled in the art. In the description, the details of well-known functions and methods may be omitted in order to avoid unnecessarily obstructing the understanding of the presented embodiments.

[17] Варианты осуществления в целом относятся к области обработки данных и, в частности, к кодированию и декодированию видео. Следующие описанные ниже примерные варианты осуществления предоставляют систему, способ и компьютерную программу для, среди прочего, восстановления кодированного текущего изображения с использованием процесса циклического заполнения на основе декодированных кодированных элементов синтаксиса. Следовательно, некоторые варианты осуществления могут улучшить область вычислений, позволяя кодировать элементы синтаксиса, которые будут использоваться при восстановлении сжатого изображения.[17] Embodiments generally relate to the field of data processing and, in particular, to encoding and decoding video. The following exemplary embodiments described below provide a system, method, and computer program for, among other things, restoring an encoded current picture using a round robin process based on decoded encoded syntax elements. Therefore, some embodiments may improve the computational domain by allowing syntax elements to be encoded to be used in decompressing a compressed image.

[18] Как указано выше, одной из целей кодирования и декодирования видео может быть уменьшение избыточности входного видеосигнала посредством сжатия. Сжатие может помочь снизить вышеупомянутые требования к полосе пропускания или пространству для хранения, в некоторых случаях на два порядка или более. Могут использоваться как сжатие без потерь, так и сжатие с потерями, а также их комбинация. Сжатие без потерь относится к методам, при которых из сжатого исходного сигнала может быть восстановлена точная копия исходного сигнала. При использовании сжатия с потерями восстановленный сигнал может не быть идентичным исходному сигналу, но искажение между исходным и восстановленным сигналами достаточно мало, чтобы сделать восстановленный сигнал пригодным для предполагаемого приложения. В случае видео широко применяется сжатие с потерями. Допустимая степень искажения зависит от приложения; например, для пользователей определенных потребительских приложений потоковой передачи допустимы более высокие искажения, чем для пользователей приложений вещательного телевидения. Достижимая степень сжатия может отражать следующее: более высокое разрешаемое/допустимое искажение может привести к более высокой степени сжатия. Однако, когда изображение разделено на одну или несколько подобластей (тайл, слайс или субизображение), граничная обработка каждой подобласти может влиять на эффективность кодирования и субъективное визуальное качество. Адаптивное управление граничной обработкой на каждой границе подобласти является ключевым фактором при обработке мультимедийных данных 360. Следовательно, может быть предпочтительно восстановить кодированное текущее изображение с использованием процесса заполнения с циклическим переходом на основе декодирования кодированных элементов синтаксиса.[18] As mentioned above, 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 methods in which an exact copy of the original signal can be restored from a compressed source 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 suitable 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 can tolerate higher distortion than users of broadcast television applications. The achievable compression ratio may reflect the following: higher distortion resolution/tolerance may result in a higher compression ratio. However, when an image is divided into one or more sub-regions (tile, slice, or sub-image), the edge processing of each sub-region may affect encoding efficiency and subjective visual quality. Adaptive control of edge processing at each sub-region boundary is a key factor in the processing of multimedia data 360. Therefore, it may be preferable to reconstruct the encoded current picture using a wraparound filling process based on the decoding of the encoded syntax elements.

[19] Аспекты описаны здесь со ссылкой на иллюстрации блок-схем и/или диаграмм способов, устройств (систем) и машиночитаемых носителей согласно различным вариантам осуществления. Следует понимать, что каждый блок иллюстраций блок-схем и/или диаграмм, а также комбинации блоков в иллюстрациях блок-схем и/или диаграмм могут быть реализованы с помощью машиночитаемых программных инструкций.[19] Aspects are described herein with reference to illustrations of block diagrams and/or diagrams of methods, devices (systems), and computer-readable media according to various embodiments. It should be understood that each block of flowchart and/or diagram illustrations, as well as combinations of blocks in flowchart and/or diagram illustrations, may be implemented using computer readable program instructions.

[20] Следующие описанные ниже примерные варианты осуществления предоставляют систему, способ и компьютерную программу, которая восстанавливает кодированное текущее изображение с использованием процесса циклического заполнения на основе декодированных кодированных элементов синтаксиса.[20] The following exemplary embodiments described below provide a system, method, and computer program that restores an encoded current picture using a round-robin process based on decoded encoded syntax elements.

[21] На фиг.2 проиллюстрирована упрощенная блок-схема системы (200) связи согласно варианту осуществления настоящего изобретения. Система (200) может включать в себя по меньшей мере два терминала (210-220), соединенных между собой через сеть (250). Для однонаправленной передачи данных первый терминал (210) может кодировать видеоданные в локальном местоположении для передачи другому терминалу (220) через сеть (250). Второй терминал (220) может принимать кодированные видеоданные другого терминала из сети (250), декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и т. п.[21] Figure 2 illustrates a simplified block diagram of a communication system (200) according to an embodiment of the present invention. System (200) may include at least two terminals (210-220) interconnected via network (250). For unidirectional data transmission, the first terminal (210) may encode video data at the local location for transmission to another terminal (220) via the network (250). The second terminal (220) may receive another terminal's encoded video data from the network (250), decode the encoded data, and display the recovered video data. One-way communication may be common in media serving applications and the like.

[22] На фиг.2 показана вторая пара терминалов (230, 240), обеспечивающая поддержку двунаправленной передачи кодированного видео, которая может происходить, например, во время видеоконференц-связи. Для двунаправленной передачи данных каждый терминал (230, 240) может кодировать видеоданные, захваченные в локальном местоположении, для передачи другому терминалу через сеть (250). Каждый терминал (230, 240) также может принимать кодированные видеоданные, переданные другим терминалом, может декодировать кодированные данные и может отображать восстановленные видеоданные на локальном устройстве отображения.[22] FIG. 2 shows a second pair of terminals (230, 240) supporting bi-directional encoded video transmission, such as may occur during a video conference. For bi-directional data transmission, each terminal (230, 240) may encode video data captured at a local location for transmission to another terminal over a network (250). Each terminal (230, 240) 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.

[23] На фиг.2 терминалы (210-240) могут быть изображены как серверы, персональные компьютеры и смартфоны, но принципы настоящего изобретения не могут быть ограничены этим. Варианты осуществления настоящего изобретения находят применение в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференц-связи. Сеть (250) представляет собой любое количество сетей, которые передают кодированные видеоданные между терминалами (210-240), включая, например, сети проводной и/или беспроводной связи. Сеть связи (250) может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Репрезентативные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего описания архитектура и топология сети (250) могут быть несущественными для работы настоящего изобретения, если это не объясняется в данном документе ниже.[23] In FIG. 2, the terminals (210-240) may be depicted as servers, personal computers, and smartphones, but the principles of the present invention cannot be limited to this. Embodiments of the present invention find application in laptop computers, tablet computers, media players and/or specialized video conferencing equipment. Network (250) is any number of networks that transmit encoded video data between terminals (210-240), including, for example, wired and/or wireless networks. The communications network (250) 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 description, the architecture and topology of the network (250) may not be essential to the operation of the present invention unless explained herein below.

[24] На фиг.3 проиллюстрировано, в качестве примера применения для раскрытого объекта изобретения, размещение видеокодера и видеодекодера в потоковой среде. Раскрытый объект изобретения может быть в равной степени применим к другим приложениям с поддержкой видео, включая, например, видеоконференц-связь, цифровое телевидение, хранение сжатого видео на цифровых носителях, включая CD, DVD, карту памяти и т. п., и так далее.[24] Figure 3 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. .

[25] Система потоковой передачи может включать в себя подсистему (313) захвата, которая может включать в себя источник (301) видео, например цифровую камеру, создающую, например, поток (302) отсчетов несжатого видео. Данный поток (302) отсчетов, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными битовыми потоками видео, может быть обработан кодером (303), подключенным к камере (301). Кодер (303) может включать в себя аппаратное обеспечение, программное обеспечение или их комбинацию для включения или реализации аспектов раскрытого объекта изобретения, как более подробно описано ниже. Кодированный битовый поток (304) видео, изображенный тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком отсчетов, может храниться на сервере (305) потоковой передачи для будущего использования. Один или несколько клиентов потоковой передачи (306, 308) могут получить доступ к серверу потоковой передачи (305) для извлечения копий (307, 309) кодированного битового потока видеоданных (304). Клиент (306) может включать в себя видеодекодер (310), который декодирует входящую копию кодированного битового видеопотока (307) и создает исходящий поток (311) отсчетов видео, который может отображаться на дисплее (312) или другом устройстве визуализации (не изображено). В некоторых потоковых системах потоки (304, 307, 309) видеобитов могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видео. Примеры этих стандартов включают Рекомендацию ITU-Т H.265. В стадии разработки находится стандарт кодирования видео, неофициально известный как универсальное кодирование видео или VVC. Раскрытый объект может использоваться в контексте VVC.[25] The streaming system may include a capture subsystem (313), which may include a video source (301), such as a digital camera, producing, for example, a stream (302) of uncompressed video samples. This stream (302) 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 (303) connected to the camera (301). The encoder (303) 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 (304), drawn with a thin line to emphasize the smaller amount of data compared to the sample stream, may be stored on the streaming server (305) for future use. One or more streaming clients (306, 308) can access the streaming server (305) to extract copies (307, 309) of the encoded video bitstream (304). The client (306) may include a video decoder (310) that decodes an incoming copy of the encoded video bitstream (307) and produces an outgoing stream (311) of video samples that can be displayed on a display (312) or other visualization device (not shown). In some streaming systems, streams (304, 307, 309) of video bits may be encoded according to certain video coding/compression standards. Examples of these standards include ITU-T Recommendation 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.

[26] Фиг.4 может быть функциональной блок-схемой видеодекодера (310) согласно варианту осуществления настоящего изобретения.[26] FIG. 4 may be a functional block diagram of a video decoder (310) according to an embodiment of the present invention.

[27] Приемник (410) может принимать одну или более кодированных видеопоследовательностей, которые должны быть декодированы декодером (310); в том же или другом варианте осуществления - по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (412), который может быть аппаратным/программным соединением с устройством хранения, в котором хранятся кодированные видеоданные. Приемник (410) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или потоками вспомогательных данных, которые могут быть отправлены их соответствующим использующим объектам (не изображены). Приемник (410) может отделять кодированную видеопоследовательность от других данных. Для борьбы с дрожанием в сети между приемником (410) и энтропийным декодером/парсером (420) (далее «парсер») может быть подключена буферная память (415). Когда приемник (410) принимает данные от устройства хранения/пересылки с достаточной полосой пропускания и управляемостью или из изосинхронной сети, буфер (415) может не понадобиться или может быть небольшим. Для использования в пакетных сетях наилучшего качества, таких как Интернет, может потребоваться буфер (415), который может быть сравнительно большим и может быть предпочтительно адаптивного размера.[27] The receiver (410) may receive one or more encoded video sequences to be decoded by the decoder (310); 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 (412), which may be a hardware/software connection to a storage device that stores the encoded video data. The receiver (410) 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 (410) may separate the encoded video sequence from other data. To combat network jitter, a buffer memory (415) can be connected between the receiver (410) and the entropy decoder/parser (420) (hereinafter "parser"). When the receiver (410) receives data from a storage/transfer device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer (415) may not be needed or may be small. For use in best quality packet networks such as the Internet, a buffer (415) may be required, which may be relatively large and may preferably be of an adaptive size.

[28] Видеодекодер (310) может включать в себя парсер (420) для восстановления символов (421) из энтропийно кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой декодера (310), и потенциально информацию для управления устройством визуализации, таким как дисплей (312), который не является неотъемлемой частью декодера, но может быть подключен к нему, как это было показано на фиг.3. Управляющая информация для устройства (устройств) визуализации может быть в форме дополнительной информации улучшения (сообщения SEI) или фрагментов набора параметров информации о пригодности видео (VUI) (не изображены). Парсер (420) может выполнять парсинг/энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом кодирования видео и может следовать принципам, хорошо известным специалистам в уровне техники, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Парсер (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и так далее. Энтропийный декодер/парсер также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.[28] The video decoder (310) may include a parser (420) for recovering the symbols (421) from the entropy coded video sequence. The categories of these symbols include information used to control the operation of the decoder (310) and potentially information to control a visualization device such as a display (312) that is not an integral part of the decoder but can be connected to it as shown. in Fig.3. The control information for the rendering device(s) may be in the form of additional enhancement information (SEI messages) or video usability information (VUI) parameter set fragments (not shown). The parser (420) 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 (420) 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.

[29] Парсер (420) может выполнять операцию энтропийного декодирования/парсинга видеопоследовательности, принятой из буфера (415), чтобы создавать символы (421).[29] The parser (420) may perform an entropy decoding/parsing operation of the video sequence received from the buffer (415) to create symbols (421).

[30] Восстановление символов (421) может включать в себя множество различных модулей в зависимости от типа кодированного видеоизображения или его частей (таких как: интер и интра изображение, интер и интра блок) и других факторов. Какие модули задействованы и как, можно контролировать с помощью управляющей информации подгруппы, парсинг которой был выполнен из кодированной видеопоследовательности с помощью парсера (420). Поток такой информации управления подгруппой между парсером (420) и множеством модулей ниже не показан для ясности.[30] Symbol recovery (421) may include many different modules depending on the type of encoded video image or parts thereof (such as: inter and intra image, inter and intra block) and other factors. Which modules are involved and how can be controlled by the subgroup control information that has been parsed from the encoded video sequence by the parser (420). The flow of such subgroup control information between the parser (420) and the plurality of modules is not shown below for clarity.

[31] Помимо уже упомянутых функциональных блоков, декодер 310 может быть концептуально подразделен на ряд функциональных модулей, как описано ниже. В практическом осуществлении, работающем в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут быть, по меньшей мере частично, интегрированы друг в друга. Однако для целей описания раскрытого объекта изобретения уместно концептуальное подразделение на функциональные модули, приведенные ниже.[31] In addition to the functional blocks already mentioned, the decoder 310 can be conceptually subdivided into a number of functional modules, as described below. In a practical implementation operating under commercial constraints, many of these modules interact closely with each other and can be at least partially integrated into each other. However, for purposes of describing the disclosed subject matter, the conceptual division into functional modules below is appropriate.

[32] Первым модулем является модуль (451) масштабирования/обратного преобразования. Модуль (451) масштабирования/обратного преобразования принимает квантованный коэффициент преобразования, а также управляющую информацию, включая то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и так далее, в виде символа(ов) (421) от парсера (420). Он может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (455).[32] The first module is the scaling/inverse transform module (451). The scaling/inverse transform module (451) 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) (421) from the parser ( 420). It can output blocks containing sample values that can be entered into the aggregator (455).

[33] В некоторых случаях выходные отсчеты модуля (451) масштабирования/обратного преобразования могут относиться к интра-кодированному блоку; то есть к блоку, который не использует информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена модулем (452) интра-кадрового предсказания. В некоторых случаях модуль (452) интра-кадрового предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из текущего (частично восстановленного) изображения (456). Агрегатор (455) в некоторых случаях добавляет для каждого отсчета информацию предсказания, сгенерированную модулем (452) интра- предсказания, к информации выходных отсчетов, предоставляемой модулем (451) масштабирования/обратного преобразования.[33] In some cases, the output samples of the scaling/inverse transform module (451) 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-frame prediction module (452). In some cases, the intra-frame prediction module (452) 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 (456). The aggregator (455) in some cases adds, for each sample, the prediction information generated by the intra-prediction module (452) to the output sample information provided by the scaling/inverse transform module (451).

[34] В других случаях выходные отсчеты модуля (451) масштабирования/обратного преобразования могут относиться к интер-кодированному блоку и потенциально блоку с компенсацией движения. В таком случае модуль (453) предсказания с компенсацией движения может обращаться к памяти (457) опорных изображений, чтобы извлекать отсчеты, используемые для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (421), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (455) к выходу модуля масштабирования/обратного преобразования (в данном случае называемые остаточными отсчетами или остаточным сигналом), чтобы генерировать информацию о выходных отсчетах. Адреса в памяти опорных изображений, откуда модуль предсказания с компенсацией движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными модулю предсказания с компенсацией движения в форме символов (421), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти опорных изображений, когда используются точные векторы движения суботсчетов, механизмы предсказания вектора движения и так далее.[34] In other cases, the output samples of the scaling/inverse transform module (451) may refer to an inter-coded block and potentially a motion-compensated block. In such a case, the motion compensation prediction module (453) may access the reference picture memory (457) to retrieve samples used for prediction. After compensating for the motion of the selected samples according to the symbols (421) associated with the block, these samples can be added by the aggregator (455) to the output of the scaler/demap module (in this case called residual samples or residual signal) to generate output information. readings. 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 (421), 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.

[35] Выходные отсчеты агрегатора (455) могут подвергаться различным методам петлевой фильтрации в модуле (456) петлевого фильтра. Технологии сжатия видео могут включать в себя технологии внутрипетлевой фильтрации, которые управляются параметрами, включенными в битовый поток кодированного видео и предоставляются модулю (456) петлевой фильтрации как символы (421) из парсера (420), но также могут реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные и отфильтрованные посредством петлевой фильтрации значения отсчетов.[35] The output samples of the aggregator (455) can be subjected to various loop filtering methods in the loop filter module (456). 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 (456) as symbols (421) from the parser (420), 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.

[36] Выходной сигнал модуля (456) петлевого фильтра может быть потоком отсчетов, который может быть выведен на устройство (312) визуализации, а также сохранен в памяти (456) опорных изображений для использования в будущем интер-кадровом предсказании.[36] The output of the loop filter module (456) may be a stream of samples that can be output to the renderer (312) and also stored in the reference picture memory (456) for use in future inter-frame prediction.

[37] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. После того, как кодированное изображение полностью восстановлено и кодированное изображение было идентифицировано как опорное изображение (например, парсером (420)), текущее опорное изображение (456) может стать частью буфера (457) опорных изображений, и свежая память текущих изображений может быть перераспределена перед началом восстановления следующего кодированного изображения.[37] 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 parser 420), the current reference picture 456 may become part of the reference picture buffer 457 and fresh current picture memory may be reallocated before the beginning of the reconstruction of the next encoded picture.

[38] Видеодекодер 420 может выполнять операции декодирования согласно заранее определенной технологии сжатия видео, которая может быть задокументирована в стандарте, таком как ITU-T Rec. H.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что она соответствует синтаксису технологии или стандарта сжатия видео, как указано в документе или стандарте технологии сжатия видео и, в частности, в их документе профилей. Также для соответствия может быть необходимым, чтобы сложность кодированной видеопоследовательности находилась в пределах границ, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту дискретизации восстановления (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и так далее. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического эталонного декодера (HRD) и метаданных для управления буфером HRD, сигнализируемых в кодированной видеопоследовательности.[38] Video decoder 420 may perform decoding operations according to a predetermined video compression technology, which may be documented 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 the boundaries 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 signaled in the encoded video sequence.

[39] В варианте осуществления приемник (410) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (420) для правильного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут быть в форме, например, временных, пространственных слоев или слоев улучшения отношения сигнал/шум (SNR), избыточных слайсов, избыточных изображений, кодов прямого исправления ошибок и так далее.[39] In an embodiment, the receiver (410) 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 (420) to correctly decode the data and/or to recover the original video data more accurately. 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.

[40] Фиг.5 может быть функциональной блок-схемой видеокодера (303) согласно варианту осуществления настоящего изобретения.[40] FIG. 5 may be a functional block diagram of a video encoder (303) according to an embodiment of the present invention.

[41] Кодер (303) может принимать отсчеты видео от источника (301) видео (который не является частью кодера), который может захватывать видеоизображение(я) для кодирования кодером (303).[41] The encoder (303) may receive video samples from a video source (301) (which is not part of the encoder) that may capture video image(s) for encoding by the encoder (303).

[42] Источник (301) видео может предоставлять исходную видеопоследовательность для кодирования кодером (303) в форме цифрового потока отсчетов видео, который может иметь любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, ...), любое цветовое пространство (например, BT.601 Y CrCB, RGB, …) и любую подходящую структуру отсчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе обслуживания мультимедиа источник (301) видео может быть запоминающим устройством, хранящим предварительно подготовленное видео. В системе видеоконференц-связи источник (303) видео может быть камерой, которая захватывает информацию о локальном изображении в виде видеопоследовательности. Видеоданные могут быть предоставлены как множество отдельных изображений, которые при последовательном просмотре передают движение. Сами изображения могут быть организованы как пространственный массив пикселей, в котором каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры отсчетов, цветового пространства и т. д. Специалист в данной области техники может легко понять взаимосвязь между пикселями и отсчетами. Описание ниже ориентировано на отсчеты.[42] The video source (301) may provide the source video sequence for encoding by the encoder (303) 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 (301) may be a storage device storing pre-rendered video. In a videoconferencing system, the video source (303) 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 may be organized as a spatial array of pixels, where each pixel may contain one or more samples depending on the sample structure used, color space, etc. One skilled in the art can easily understand the relationship between pixels and samples. The description below is based on readings.

[43] Согласно варианту осуществления кодер (303) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с любыми другими временными ограничениями, как того требует приложение. Обеспечение соответствующей скорости кодирования - одна из функций контроллера (550). Контроллер управляет другими функциональными модулями, как описано ниже, и функционально связан с этими модулями. Связь не изображена для ясности. Параметры, устанавливаемые контроллером, могут включать в себя параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда методов оптимизации скорость-искажение, …), размеру изображения, макету группы изображений (GOP), максимальному диапазону поиска вектора движения и так далее. Специалист в данной области техники может легко определить другие функции контроллера (550), поскольку они могут относиться к видеокодеру (303), оптимизированному для определенной конструкции системы.[43] According to an embodiment, the encoder (303) may encode and compress images of the source video sequence into the encoded video sequence (543) 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 (550). 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 (550) as they may relate to a video encoder (303) optimized for a particular system design.

[44] Некоторые видеокодеры работают в том, что специалист в данной области легко распознает как «петля кодирования». В качестве упрощенного описания петля кодирования может состоять из кодирующей части кодера (530) (далее «кодер источника») (ответственной за создание символов на основе входного изображения, которое должно быть кодировано, и опорного изображения(й)), и (локального) декодера (533), встроенного в кодер (303), который восстанавливает символы для создания данных отсчетов, которые (удаленный) декодер также может создать (поскольку любое сжатие между символами и кодированным битовым видеопотоком не имеет потерь в технологиях сжатия видео, рассматриваемых в раскрытом объекте). Этот восстановленный поток отсчетов вводится в память (534) опорных изображений. Поскольку декодирование потока символов приводит к результатам с точностью до бита, независимо от местоположения декодера (локально или удаленно), содержимое буфера опорных изображений также является точным до бита между локальным кодером и удаленным кодером. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые декодер «видел» бы при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) хорошо известен специалисту в данной области техники.[44] Some video encoders operate in what one of ordinary skill in the art would easily recognize as a "coding loop". As a simplified description, an encoding loop may consist of an encoding part of an encoder (530) (hereinafter "source encoder") (responsible for creating symbols based on the input image to be encoded and the reference image(s)), and a (local) decoder (533) built into the encoder (303) 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 considered in the disclosed subject matter) . This reconstructed sample stream is entered into the reference picture memory 534 . 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.

[45] Работа «локального» декодера (533) может быть такой же, как у «удаленного» декодера (310), который уже был подробно описан выше со ссылкой на фиг.4. Кратко ссылаясь также на фиг.4, однако, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и парсером (420) может осуществляться без потерь, части энтропийного декодирования декодера (310), включая канал (412), приемник (410), буфер (415) и парсер (420), не могут быть полностью реализованы в локальном декодере (533).[45] The operation of the "local" decoder (533) may be the same as that of the "remote" decoder (310), which has already been described in detail above with reference to Fig.4. Briefly referring also to FIG. 4, however, since the symbols are available and encoding/decoding of the symbols into the encoded video sequence by the entropy encoder (545) and parser (420) can be lossless, the entropy decoding parts of the decoder (310) including the channel (412) , receiver (410), buffer (415), and parser (420) cannot be fully implemented in the local decoder (533).

[46] На этом этапе можно сделать наблюдение, что любая технология декодирования, кроме парсинга/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать в, по существу, идентичной функциональной форме в соответствующем кодере. По этой причине раскрытый объект изобретения фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.[46] 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 a 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.

[47] В качестве части своей работы кодер (530) источника может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входной кадр с предсказанием со ссылкой на один или более ранее кодированных кадров из видеопоследовательности, которые были обозначены как «опорные кадры». Таким образом, механизм (532) кодирования кодирует различия между блоками пикселей входного кадра и блоками пикселей опорного кадра(ов), которые могут быть выбраны в качестве эталона(ов) предсказания для входного кадра.[47] As part of its operation, the source encoder (530) 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 (532) 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.

[48] Локальный видеодекодер (533) может декодировать кодированные видеоданные кадров, которые могут быть обозначены как опорные кадры, на основе символов, созданных кодером (530) источника. Операции механизма (532) кодирования могут быть предпочтительно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг.5), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных кадрах, и может вызывать сохранение восстановленных опорных кадров в кэше (534) опорных изображений. Таким образом, кодер (303) может локально хранить копии восстановленных опорных кадров, которые имеют общее содержимое, в качестве восстановленных опорных кадров, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).[48] The local video decoder (533) 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 (530). The operations of the encoding engine (532) may preferably be lossy processes. When the encoded video data can be decoded in a video decoder (not shown in FIG. 5), the reconstructed video sequence can typically be a copy of the original video sequence with some errors. The local video decoder (533) 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 (534). Thus, the encoder (303) can locally store copies of the reconstructed reference frames that have common content as reconstructed reference frames to be received by the far-end video decoder (in the absence of transmission errors).

[49] Предсказатель (535) может выполнять поиски с предсказанием для механизма (532) кодирования. То есть, для нового изображения, которое должно быть кодировано, предсказатель (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве кандидатов блоков опорных пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и так далее, которые могут служить подходящим эталоном предсказания для новых изображений. Предсказатель (535) может работать на основе блока отсчетов "блок-за-пикселем", чтобы найти соответствующие эталоны для прогнозирования. В некоторых случаях, как определено результатами поиска, полученными предиктором (535), входное изображение может иметь эталоны для предсказания, взятые из множества опорных изображений, сохраненных в памяти (534) опорных изображений.[49] The predictor (535) may perform predictive searches for the encoding engine (532). That is, for a new picture to be encoded, the predictor (535) may search the reference picture memory (534) 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 (535) may operate on a block-by-pixel basis to find appropriate references for prediction. In some cases, as determined by the search results obtained by the predictor (535), the input image may have prediction references taken from a plurality of reference pictures stored in the reference picture memory (534).

[50] Контроллер (550) может управлять операциями кодирования видеокодера (530), включая, например, установку параметров и параметров субгруппы, используемых для кодирования видеоданных.[50] The controller (550) may control the encoding operations of the video encoder (530), including, for example, setting parameters and subgroup parameters used to encode video data.

[51] Выходные сигналы всех вышеупомянутых функциональных модулей могут подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия без потерь символов согласно технологиям, известным специалистам в данной области техники, таким как, например, кодирование Хаффмана, кодирование переменной длины, арифметическое кодирование и так далее.[51] The output signals of all the above functional modules can be entropy encoded in an entropy encoder (545). An 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, for example, Huffman coding, variable length coding, arithmetic coding, and so on.

[52] Передатчик (540) может буферизовать закодированные видеопоследовательности, созданные энтропийным кодером (545), чтобы подготовиться к передаче через канал (560) связи, который может быть аппаратным/программным соединением с запоминающим устройством, которое будет хранить закодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные из видеокодера (530) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).[52] The transmitter (540) may buffer the encoded video sequences generated by the entropy encoder (545) to prepare for transmission over a communication channel (560), which may be a hardware/software connection to a storage device that will store the encoded video data. The transmitter (540) may combine the encoded video data from the video encoder (530) with other data to be transmitted, such as encoded audio data and/or ancillary data streams (sources not shown).

[53] Контроллер (550) может управлять работой видеокодера (303). Во время кодирования контроллер (550) может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на методы кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть отнесены к одному из следующих типов кадров:[53] The controller (550) may control the operation of the video encoder (303). During encoding, the controller (550) 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 assigned to one of the following frame types:

[54] Интра-изображение (I-изображение) может быть таким, которое можно кодировать и декодировать без использования какого-либо другого кадра в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают различные типы интра-изображений, включая, например, изображения с независимым обновлением декодера. Специалисту в области техники известны эти варианты I-изображений и их соответствующие применения и особенности.[54] 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 intra-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.

[55] Изображение с предсказанием (P-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интрапредсказания или интерпредсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.[55] 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.

[56] Изображение с двунаправленным предсказанием (B-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интрапредсказания или интерпредсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.[56] 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 pictures may use more than two reference pictures and associated metadata to reconstruct a single block.

[57] Исходные изображения обычно могут быть пространственно разделены на множество блоков отсчетов (например, блоки из 4x4, 8x8, 4x8 или 16x16 отсчетов каждый) и кодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки I-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или интрапредсказание). Пиксельные блоки P-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки B-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.[57] 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, I-picture blocks 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.

[58] Видеокодер (303) может выполнять операции кодирования в соответствии с заранее определенной технологией или стандартом кодирования видео, такой как Рекомендация ITU-T H.265. В своей работе видеокодер (303) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.[58] The video encoder (303) may perform encoding operations in accordance with a predetermined video coding technology or standard, such as ITU-T Recommendation H.265. In operation, the video encoder (303) 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 being used.

[59] В варианте осуществления передатчик (540) может передавать дополнительные данные с кодированным видео. Видеокодер (530) может включать в себя такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные слои/слои улучшения SNR, другие формы избыточных данных, такие как избыточные изображения и слайсы, сообщения дополнительной информации улучшения (SEI), фрагменты набора параметров информации о пригодности видео (VUI) и так далее.[59] In an embodiment, transmitter (540) may transmit additional data with encoded video. Video encoder (530) 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, enhancement additional information (SEI) messages, video usability information (VUI) parameter set fragments, and so on.

[60] В варианте осуществления 360-градусное видео захватывается набором камер или устройством камеры с несколькими объективами. Камеры обычно охватывают все направления вокруг центральной точки камеры. Изображения одного и того же момента времени сшиваются, возможно, поворачиваются, проецируются и отображаются на изображение. Упакованные изображения кодируются как закодированные в кодированный битовый поток видео и передаются в потоковом режиме в соответствии с определенным форматом файла медиаконтейнера. Файл включает метаданные, такие как информация о проекции и упаковке.[60] In an embodiment, 360-degree video is captured by a set of cameras or a camera device with multiple lenses. Cameras usually cover all directions around the center point of the camera. Images of the same point in time are stitched together, possibly rotated, projected and displayed on the image. Packed images are encoded as encoded into an encoded video bitstream and streamed according to the specific media container file format. The file includes metadata such as projection and packaging information.

[61] В варианте осуществления 360-градусное видео можно проецировать в 2D-видео с использованием равнопрямоугольной проекции (ERP). Проекция ERP может привести к появлению артефактов на стыках. Расширенный формат ERP (PERP) может эффективно уменьшить артефакты швов в реконструированных окнах просмотра, которые охватывают левую и правую границы изображения ERP. Однако заполнения и смешивания может быть недостаточно, чтобы полностью решить проблему со швом.[61] In an embodiment, 360-degree video may be projected into 2D video using Equal Rectangular Projection (ERP). The ERP projection can lead to artifacts at the junctions. Advanced ERP Format (PERP) can effectively reduce seam artifacts in rendered viewports that span the left and right boundaries of an ERP image. However, filling and mixing may not be enough to completely solve a seam problem.

[62] В одном варианте осуществления для ERP или PERP может применяться набивка с горизонтальной геометрией, чтобы уменьшить артефакты шва. Процесс заполнения для PERP может быть таким же, как для ERP, за исключением того, что смещение может основываться на ширине незаполненной ERP вместо ширины изображения, чтобы учесть размер заполненных областей. Если опорный блок находится за пределами левой (правой) границы опорного изображения, он может быть заменен «закольцованным» опорным блоком, сдвинутым вправо (влево) на ширину ERP. Традиционное повторяющееся заполнение может использоваться в вертикальном направлении. Смешивание левой и правой областей с заполнением не входит в цикл в качестве операции постобработки.[62] In one embodiment, horizontal geometry packing may be used for ERP or PERP to reduce seam artifacts. The padding process for PERP can be the same as for ERP, except that the offset can be based on the width of the unfilled ERP instead of the width of the image to account for the size of the filled areas. If the reference block is outside the left (right) boundary of the reference image, it may be replaced by a "loop" reference block shifted to the right (left) by the width of the ERP. Traditional repeating infill can be used in the vertical direction. Blending the left and right areas with fill is not included in the loop as a post-processing operation.

[63] В варианте осуществления синтаксис для включения горизонтального геометрического заполнения опорных изображений для форматов ERP и PERP показан на фиг.6.[63] In an embodiment, the syntax for enabling horizontal reference picture geometry fill for ERP and PERP formats is shown in FIG.

[64] sps_ref_wraparound_enabled_flag (602), равное 1, указывает, что для интер-кадрового предсказания используется компенсация горизонтального циклического движения. sps_ref_wraparound_enabled_flag, равное 0, указывает, что этот метод компенсации движения не применяется.[64] sps_ref_wraparound_enabled_flag (602) equal to 1 indicates that horizontal cyclic motion compensation is used for inter-frame prediction. sps_ref_wraparound_enabled_flag set to 0 indicates that this motion compensation method is not applied.

[65] ref_wraparound_offset (603) задает смещение в выборках яркости, используемых для вычисления горизонтальной позиции перехода. ref_wraparound_offset должен быть больше pic_width_in_luma_samples - 1, не должен быть больше pic_width_in_luma_samples и должен быть целым числом, кратным MinCbSizeY.[65] ref_wraparound_offset(603) specifies an offset in luma samples used to calculate the horizontal position of the transition. ref_wraparound_offset must be greater than pic_width_in_luma_samples - 1, must not be greater than pic_width_in_luma_samples, and must be an integer multiple of MinCbSizeY.

[66] В варианте осуществления синтаксис для включения горизонтального геометрического заполнения опорных изображений для форматов ERP и PERP показан на фиг.7.[66] In an embodiment, the syntax for enabling horizontal reference picture geometry fill for ERP and PERP formats is shown in FIG.

[67] sps_ref_wraparound_enabled_flag (702), равное 1, указывает, что для интер-кадрового предсказания используется компенсация горизонтального циклического движения. sps_ref_wraparound_enabled_flag, равное 0, указывает, что этот метод компенсации движения не применяется.[67] sps_ref_wraparound_enabled_flag (702) equal to 1 indicates that horizontal cyclic motion compensation is used for inter-frame prediction. sps_ref_wraparound_enabled_flag set to 0 indicates that this motion compensation method is not applied.

[68] left_wraparound_padding_width (703) определяет ширину левой области заполнения в выборках яркости. ref_wraparound_offset должен быть больше или равен 0, не должен быть больше, чем pic_width_in_luma_samples / 2, и должен быть целым числом, кратным MinCbSizeY.[68] left_wraparound_padding_width (703) Specifies the width of the left padding area in lightness samples. ref_wraparound_offset must be greater than or equal to 0, must not be greater than pic_width_in_luma_samples / 2, and must be an integer multiple of MinCbSizeY.

[69] right_wraparound_padding_width (704) определяет ширину правой области заполнения в выборках яркости. ref_wraparound_offset должен быть больше или равен 0, не должен быть больше, чем pic_width_in_luma_samples / 2, и должен быть целым числом, кратным MinCbSizeY.[69] right_wraparound_padding_width (704) specifies the width of the right padding area in luma samples. ref_wraparound_offset must be greater than or equal to 0, must not be greater than pic_width_in_luma_samples / 2, and must be an integer multiple of MinCbSizeY.

[70] На фиг. 8 изображена функциональная блок-схема, иллюстрирующая этапы способа 900 кодирования видеоданных.[70] FIG. 8 is a functional block diagram illustrating the steps of a method 900 for encoding video data.

[71] На этапе 901 способ 900 включает в себя синтаксический анализ набора параметров.[71] At 901, method 900 includes parsing a set of parameters.

[72] На этапе 902 способ 900 включает в себя декодирование информации разделения изображения.[72] At 902, method 900 includes decoding image division information.

[73] На этапе 903 способ 900 включает в себя определение, применяется ли заполнение к границам подобластей.[73] At 903, method 900 includes determining if padding is applied to sub-region boundaries.

[74] На этапе 904 способ 900 включает в себя синтаксический анализ типа заполнения, если заполнение применяется к границам подобластей.[74] At 904, method 900 includes parsing the type of padding if padding is applied to subregion boundaries.

[75] На этапе 905 способ 900 включает в себя декодирование каждой подобласти без заполнения, если заполнение не применяется к границам подобластей.[75] At 905, method 900 includes decoding each sub-region without padding if padding is not applied to sub-region boundaries.

[76] На этапе 906 способ 900 включает в себя определение, применено ли циклическое заполнение.[76] At 906, method 900 includes determining whether a round robin has been applied.

[77] На этапе 907 способ 900 включает в себя заполнение границ подобластей циклическим заполнением, если применяется циклическое заполнение.[77] At 907, method 900 includes padding the boundaries of the subregions with loop padding if loop padding is applied.

[78] На этапе 908 способ 900 включает в себя заполнение границ подобластей нециклическим заполнением, если циклическое заполнение не применяется.[78] At 908, method 900 includes padding the boundaries of the subregions with non-cyclic padding if no loop padding is applied.

[79] В варианте осуществления значение циклического смещения может быть получено с помощью следующего процесса вывода:[79] In an embodiment, the cyclic offset value can be obtained using the following output process:

if ref_wraparound_offset is presentif ref_wraparound_offset is present

wrapAroundOffset = ref_wraparound_offsetwrapAroundOffset = ref_wraparound_offset

else if left_wraparound_padding_width and right_wraparound_padding_width are presentelse if left_wraparound_padding_width and right_wraparound_padding_width are present

wrapAroundOffset = pic_width_in_luma_samples - ( left_wraparound_padding_width + right_wraparound_padding_width )wrapAroundOffset = pic_width_in_luma_samples - ( left_wraparound_padding_width + right_wraparound_padding_width )

elseelse

wrapAroundOffset = pic_width_in_luma_sampleswrapAroundOffset = pic_width_in_luma_samples

[80] В варианте осуществления, чтобы обеспечить горизонтальное геометрическое заполнение опорных изображений для форматов ERP и PERP, процессы интерполяции выборок яркости и цветности могут быть изменены.[80] In an embodiment, to provide horizontal geometric filling of the reference pictures for the ERP and PERP formats, the interpolation processes for the luminance and chrominance samples may be changed.

Clip3 (x, y, z) =

Figure 00000001
Clip3(x, y, z) =
Figure 00000001

ClipH (o, W, x) =

Figure 00000002
ClipH(o, W, x) =
Figure 00000002

[81] Процесс интерполяции отсчета яркости. Входные данные для этого процесса могут включать в себя местоположение яркости в единицах полного отсчета (xIntL , yIntL), местоположение яркости в единицах дробного отсчета (xFracL , yFracL) и массив эталонных отсчетов яркости refPicLXL.Выходы этого процесса могут включать в себя предсказанное значение отсчета яркости predSampleLXL.[81] Luminance sample interpolation process. Inputs to this process may include the luma location in whole-sample units (xIntL , yIntL), the luma location in fractional units (xFracL , yFracL), and an array of reference luminance samples refPicLXL. The outputs of this process may include a predicted luminance sample value preSampleLXL.

[82] Переменные shift1, shift2 и shift3 выводятся следующим образом. Переменная shift1 устанавливается равной Min (4, BitDepthY - 8), переменная shift2 устанавливается равной 6, а переменная shift3 устанавливается равной Max (2, 14 - BitDepthY ). Переменная picW устанавливается равной pic_width_in_luma_samples, а переменная picH устанавливается равной pic_height_in_luma_samples. Переменная xOffset устанавливается равной wrapAroundOffset . Могут быть указаны коэффициенты фильтра интерполяции яркости fL [p] для каждой 1/16 дробной позиции p отсчета , равной xFracL или yFracL.[82] Variables shift1, shift2 and shift3 are output as follows. The shift1 variable is set to Min (4, BitDepthY - 8), the shift2 variable is set to 6, and the shift3 variable is set to Max (2, 14 - BitDepthY ). The picW variable is set to pic_width_in_luma_samples and the picH variable is set to pic_height_in_luma_samples. The variable xOffset is set to wrapAroundOffset . Luminance interpolation filter coefficients fL[p] can be specified for each 1/16 fractional position p of the sample equal to xFracL or yFracL.

[83] Предсказанное значение отсчета яркости predSampleLXL выводится следующим образом. Если оба xFracLand yFracL равны 0, применяется следующее. Если sps_ref_wraparound_enabled_flag равно 0, значение predSampleLXL выводится как predSampleLXL = refPicLXL[ Clip3( 0, picW - 1, xIntL ) ][ Clip3( 0, picH - 1, yIntL ) ] << shift3. В противном случае значение predSampleLXL получается как: predSampleLXL = refPicLXL[ ClipH( xOffset, picW, xIntL ) ][ Clip3( 0, picH - 1, yIntL ) ] << shift3. В противном случае, если xFracL не равно 0, а yFracL равно 0, применяется следующее. Значение of yPosL получается как yPosL = Clip3( 0, picH - 1, yIntL[83] The predicted luminance sample value predSampleLXL is output as follows. If both xFracLand and yFracL are 0, the following applies. If sps_ref_wraparound_enabled_flag is 0, the value of predSampleLXL is output as predSampleLXL = refPicLXL[ Clip3( 0, picW - 1, xIntL ) ][ Clip3( 0, picH - 1, yIntL ) ] << shift3. Otherwise, the value of predSampleLXL is obtained as: predSampleLXL = refPicLXL[ ClipH( xOffset, picW, xIntL ) ][ Clip3( 0, picH - 1, yIntL ) ] << shift3. Otherwise, if xFracL is not equal to 0 and yFracL is equal to 0, the following applies. The value of yPosL is obtained as yPosL = Clip3( 0, picH - 1, yIntL

[84] Если sps_ref_wraparound_enabled_flag равно 0, значение predSampleLXL выводится следующим образом:[84] If sps_ref_wraparound_enabled_flag is 0, the value of predSampleLXL is output as follows:

predSampleLXL = ( fL[ xFracL ][ 0 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL - 3 ) ][ yPosL ] +predSampleLXL = ( fL[ xFracL ][ 0 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL - 3 ) ][ yPosL ] +

fL[ xFracL ][ 1 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL - 2 ) ][ yPosL ] + fL[ xFracL ][ 1 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL - 2 ) ][ yPosL ] +

fL[ xFracL ][ 2 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL - 1 ) ][ yPosL ] + fL[ xFracL ][ 2 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL - 1 ) ][ yPosL ] +

fL[ xFracL ][ 3 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL ) ][ yPosL ] + fL[ xFracL ][ 3 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL ) ][ yPosL ] +

fL[ xFracL ][ 4 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL + 1 ) ][ yPosL ] + fL[ xFracL ][ 4 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL + 1 ) ][ yPosL ] +

fL[ xFracL ][ 5 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL + 2 ) ][ yPosL ] + fL[ xFracL ][ 5 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL + 2 ) ][ yPosL ] +

fL[ xFracL ][ 6 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL + 3 ) ][ yPosL ] + fL[ xFracL ][ 6 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL + 3 ) ][ yPosL ] +

fL[ xFracL ][ 7 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL + 4 ) ][ yPosL ] ) >> shift1 fL[ xFracL ][ 7 ] * refPicLXL[ Clip3( 0, picW - 1, xIntL + 4 ) ][ yPosL ] ) >> shift1

[85] В противном случае значение predSampleLXL выводится следующим образом:[85] Otherwise, the value of predSampleLXL is output as follows:

predSampleLXL = ( fL[ xFracL ][ 0 ] * refPicLXL[ ClipH( xOffset, picW, xIntL - 3 ) ][ yPosL ] + predSampleLXL = ( fL[ xFracL ][ 0 ] * refPicLXL[ ClipH( xOffset, picW, xIntL - 3 ) ][ yPosL ] +

fL[ xFracL ][ 1 ] * refPicLXL[ ClipH( xOffset, picW, xIntL - 2 ) ][ yPosL ] + fL[ xFracL ][ 1 ] * refPicLXL[ ClipH( xOffset, picW, xIntL - 2 ) ][ yPosL ] +

fL[ xFracL ][ 2 ] * refPicLXL[ ClipH( xOffset, picW, xIntL - 1 ) ][ yPosL ] + fL[ xFracL ][ 2 ] * refPicLXL[ ClipH( xOffset, picW, xIntL - 1 ) ][ yPosL ] +

fL[ xFracL ] [ 3 ] * refPicLXL[ ClipH( xOffset, picW, xIntL ) ][ yPosL ] + fL[ xFracL ] [ 3 ] * refPicLXL[ ClipH( xOffset, picW, xIntL ) ][ yPosL ] +

fL[ xFracL ][ 4 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 1 ) ][ yPosL ] + fL[ xFracL ][ 4 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 1 ) ][ yPosL ] +

fL[ xFracL ][ 5 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 2 ) ][ yPosL ] + fL[ xFracL ][ 5 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 2 ) ][ yPosL ] +

fL[ xFracL ] [ 6 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 3 ) ][ yPosL ] + fL[ xFracL ] [ 6 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 3 ) ][ yPosL ] +

fL[ xFracL ][ 7 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 4 ) ][ yPosL ] ) >> shift. fL[ xFracL ][ 7 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 4 ) ][ yPosL ] ) >> shift.

[86] В противном случае, если xFracL равен 0, а yFracL не равен 0, значение predSampleLXL выводится следующим образом. Если sps_ref_wraparound_enabled_flag равно 0, значениеx PosL выводится как xPosL = Clip3 (0,picW - 1, xIntL ).В противном случае значение xPosL получается как: xPosL = ClipH (xOffset, picW, xIntL ).[86] Otherwise, if xFracL is equal to 0 and yFracL is not equal to 0, the value of predSampleLXL is output as follows. If sps_ref_wraparound_enabled_flag is 0, the x PosL value is output as xPosL = Clip3 (0,picW - 1, xIntL ). Otherwise, the xPosL value is output as: xPosL = ClipH (xOffset, picW, xIntL ).

[87] Предсказанное значение выборки яркости predSampleLXL выводится следующим образом:[87] The predicted luminance sample value predSampleLXL is output as follows:

predSampleLXL = ( fL[ yFracL ][ 0 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL - 3 ) ] + predSampleLXL = ( fL[ yFracL ][ 0 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL - 3 ) ] +

fL[ yFracL ][ 1 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL - 2 ) ] + fL[ yFracL ][ 1 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL - 2 ) ] +

fL[ yFracL ][ 2 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL - 1 ) ] + fL[ yFracL ][ 2 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL - 1 ) ] +

fL[ yFracL ][ 3 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL ) ] + fL[ yFracL ][ 3 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL ) ] +

fL[ yFracL ][ 4 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 1 ) ] + fL[ yFracL ][ 4 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 1 ) ] +

fL[ yFracL ][ 5 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 2 ) ] + fL[ yFracL ][ 5 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 2 ) ] +

fL[ yFracL ] [ 6 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 3 ) ] + fL[ yFracL ] [ 6 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 3 ) ] +

fL[ yFracL ][ 7 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 4 ) ] ) >> shift1. fL[ yFracL ][ 7 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 4 ) ] ) >> shift1.

[88] В противном случае, если xFracL не равен 0, а yFracL не равен 0, значение predSampleLXL выводится следующим образом. Если sps_ref_wraparound_enabled_flag равно 0, образец массива temp [n] с n = 0 ..7, выводится следующим образом:[88] Otherwise, if xFracL is not equal to 0 and yFracL is not equal to 0, the value of predSampleLXL is output as follows. If sps_ref_wraparound_enabled_flag is 0, a sample array temp[n] with n = 0 ..7 is output as follows:

predSampleLXL = (predSampleLXL = (

fL[ yFracL ][ 0 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL - 3 ) ] + fL[ yFracL ][ 1 ] * refPicLXL[ xPosL ] fL[ yFracL ][ 0 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL - 3 ) ] + fL[ yFracL ][ 1 ] * refPicLXL[ xPosL ]

[ Clip3 ( 0, picH - 1, yIntL - 2 ) ] + fL[ yFracL ][ 2 ] * refPicLXL[ xPosL ] [ Clip3 ( 0, picH - 1, yIntL - 2 ) ] + fL[ yFracL ][ 2 ] * refPicLXL[ xPosL ]

[ Clip3( 0, picH - 1, yIntL - 1 ) ] + fL[ yFracL ][ 3 ] [ Clip3( 0, picH - 1, yIntL - 1 ) ] + fL[ yFracL ][ 3 ]

* refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL ) ] + fL[ yFracL ][ 4 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL ) ] + fL[ yFracL ][ 4 ]

* refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 1 ) ] + fL[ yFracL ][ 5 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 1 ) ] + fL[ yFracL ][ 5 ]

* refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 2 ) ] + fL[ yFracL ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 2 ) ] + fL[ yFracL ]

[ 6 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 3 ) ] + fL[ yFracL ] [ 6 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 3 ) ] + fL[ yFracL ]

[ 7 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 4 ) ] ) >> shift1. [ 7 ] * refPicLXL[ xPosL ][ Clip3( 0, picH - 1, yIntL + 4 ) ] ) >> shift1.

[89] В противном случае образец массива temp [n] с n = 0 ..7, получается следующим образом:[89] Otherwise, the sample array temp[n] with n = 0 ..7 is obtained as follows:

yPosL = Clip3( 0, picH - 1, yIntL + n - 3 ) yPosL = Clip3( 0, picH - 1, yIntL + n - 3 )

temp[ n ] = ( fL[ xFracL ][ 0 ] * refPicLXL[ ClipH( xOffset, picW, xIntL - 3 ) ][ yPosL ] +temp[ n ] = ( fL[ xFracL ][ 0 ] * refPicLXL[ ClipH( xOffset, picW, xIntL - 3 ) ][ yPosL ] +

fL[ xFracL ][ 1 ] * refPicLXL[ ClipH( xOffset, picW, xIntL - 2 ) ][ yPosL ] + fL[ xFracL ][ 1 ] * refPicLXL[ ClipH( xOffset, picW, xIntL - 2 ) ][ yPosL ] +

fL[ xFracL ][ 2 ] * refPicLXL[ ClipH( xOffset, picW, xIntL - 1 ) ][ yPosL ] + fL[ xFracL ][ 2 ] * refPicLXL[ ClipH( xOffset, picW, xIntL - 1 ) ][ yPosL ] +

fL[ xFracL ][ 3 ] * refPicLXL[ ClipH( xOffset, picW, xIntL ) ][ yPosL ] + fL[ xFracL ][ 3 ] * refPicLXL[ ClipH( xOffset, picW, xIntL ) ][ yPosL ] +

fL[ xFracL ][ 4 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 1 ) ][ yPosL ] + fL[ xFracL ][ 4 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 1 ) ][ yPosL ] +

fL[ xFracL ][ 5 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 2 ) ][ yPosL ] + fL[ xFracL ][ 5 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 2 ) ][ yPosL ] +

fL[ xFracL ][ 6 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 3 ) ][ yPosL ] + fL[ xFracL ][ 6 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 3 ) ][ yPosL ] +

fL[ xFracL ][ 7 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 4 ) ][ yPosL ] ) >> shift1. fL[ xFracL ][ 7 ] * refPicLXL[ ClipH( xOffset, picW, xIntL + 4 ) ][ yPosL ] ) >> shift1.

[90] Предсказанное значение отсчета яркости predSampleLXL выводится следующим образом:[90] The predicted luminance sample value predSampleLXL is output as follows:

predSampleLXL = ( fL[ yFracL ][ 0 ] * temp[ 0 ] + predSampleLXL = ( fL[ yFracL ][ 0 ] * temp[ 0 ] +

fL[ yFracL ][ 1 ] * temp[ 1 ] +fL[ yFracL ][ 1 ] * temp[ 1 ] +

fL[ yFracL ][ 2 ] * temp[ 2 ] +fL[ yFracL ][ 2 ] * temp[ 2 ] +

fL[ yFracL ][ 3 ] * temp[ 3 ] +fL[ yFracL ][ 3 ] * temp[ 3 ] +

fL[ yFracL ][ 4 ] * temp[ 4 ] +fL[ yFracL ][ 4 ] * temp[ 4 ] +

fL[ yFracL ][ 5 ] * temp[ 5 ] +fL[ yFracL ][ 5 ] * temp[ 5 ] +

fL[ yFracL ] [ 6 ] * temp[ 6 ] +fL[ yFracL ] [ 6 ] * temp[ 6 ] +

fL[ yFracL ] [ 7 ] * temp[ 7 ] ) >> shift2.fL[ yFracL ] [ 7 ] * temp[ 7 ] ) >> shift2.

[91] Процесс интерполяции отсчетов цветности. Входные данные для этого процесса могут включать местоположение цветности в единицах полного отсчета (xIntC, yIntC), местоположение цветности в единицах дробного отсчета 1/32 (xFracC, yFracC) и массив опорных отсчетов цветности refPicLXC. Выходы этого процесса могут включать в себя предсказанное значение отсчета яркости predSampleLXL.[91] The process of interpolating chrominance samples. The input to this process may include a chromaticity location in full sample units (xIntC, yIntC), a chromaticity location in 1/32 fractional units (xFracC, yFracC), and an array of chrominance reference samples refPicLXC. The outputs of this process may include a predicted luminance sample value predSampleLXL.

[92] Переменные shift1, shift2 и shift3 выводятся следующим образом. Переменная shift1 устанавливается равной Min (4, BitDepthY - 8), переменная shift2 устанавливается равной 6, а переменная shift3 устанавливается равной Max (2, 14 - BitDepthY). Переменная picWC устанавливается равной pic_width_in_luma_samples / SubWidthC, а переменная picHC устанавливается равной pic_height_in_luma_samples / SubHeightC. Переменная xOffsetC устанавливается равной wrapAroundOffset / SubWidthC. Могут быть указаны коэффициенты фильтра интерполяции яркости fC [p] для каждой 1/32 дробной позиции p отсчета, равного xFracC или yFracC.[92] Variables shift1, shift2 and shift3 are output as follows. The shift1 variable is set to Min (4, BitDepthY - 8), the shift2 variable is set to 6, and the shift3 variable is set to Max (2, 14 - BitDepthY). The picWC variable is set to pic_width_in_luma_samples / SubWidthC and the picHC variable is set to pic_height_in_luma_samples / SubHeightC. The variable xOffsetC is set to wrapAroundOffset / SubWidthC. Luminance interpolation filter coefficients fC [p] can be specified for each 1/32 fractional position p of a sample equal to xFracC or yFracC.

[93] Предсказанное значение отсчета цветности predSampleLXL выводится следующим образом. Если оба xFracC and yFracC равны 0, применяется следующее. Если sps_ref_wraparound_enabled_flag равно 0, значение predSampleLXC выводится как:[93] The predicted chrominance sample value predSampleLXL is output as follows. If both xFracC and yFracC are 0, the following applies. If sps_ref_wraparound_enabled_flag is 0, the value of predSampleLXC is output as:

predSampleLXC =refPicLXC[Clip3 (0,picWC - 1,xIntC )] [Clip3 (0,picHC - 1,yIntC )] << shift3.predSampleLXC =refPicLXC[Clip3 (0,picWC - 1,xIntC )] [Clip3 (0,picHC - 1,yIntC )] << shift3.

[94] В противном случае значение predSampleLXC получается как predSampleLXC =refPicLXC[ClipH (xOffsetC, picWC,xIntC )] [Clip3 (0,picHC - 1, yIntC) ] << shift3.-[94] Otherwise, the value of predSampleLXC is obtained as predSampleLXC =refPicLXC[ClipH (xOffsetC, picWC,xIntC )] [Clip3 (0,picHC - 1, yIntC) ] << shift3.-

[95] В противном случае, если xFracC не равно 0, а yFracC равно 0, применяется следующее. Значение yPosC is derived as yPosC = Clip3( 0, picHC - 1, yIntC ). Если sps_ref_wraparound_enabled_flag равно 0, значение predSampleLXC выводится как:[95] Otherwise, if xFracC is not equal to 0 and yFracC is equal to 0, the following applies. The value of yPosC is derived as yPosC = Clip3( 0, picHC - 1, yIntC ). If sps_ref_wraparound_enabled_flag is 0, the value of predSampleLXC is output as:

predSampleLXC = ( fC[ xFracC ][ 0 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC - 1 ) ][ yIntC ] +predSampleLXC = ( fC[ xFracC ][ 0 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC - 1 ) ][ yIntC ] +

fC[ xFracC ][ 1 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC ) ][ yIntC ] + fC[ xFracC ][ 1 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC ) ][ yIntC ] +

fC[ xFracC ][ 2 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC + 1 ) ][ yIntC ] + fC[ xFracC ][ 2 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC + 1 ) ][ yIntC ] +

fC[ xFracC ][ 3 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC + 2 ) ][ yIntC ] ) >> shift1. fC[ xFracC ][ 3 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC + 2 ) ][ yIntC ] ) >> shift1.

[96] В противном случае значение predSampleLXC выводится как:[96] Otherwise, the value of predSampleLXC is output as:

predSampleLXC = ( fC[ xFracC ][ 0 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC - 1 ) ][ yPosC ] +predSampleLXC = ( fC[ xFracC ][ 0 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC - 1 ) ][ yPosC ] +

fC[ xFracC ][ 1 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC ) ][ yPosC ] + fC[ xFracC ][ 1 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC ) ][ yPosC ] +

fC[ xFracC ][ 2 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC + 1 ) ][ yPosC ] + fC[ xFracC ][ 2 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC + 1 ) ][ yPosC ] +

fC[ xFracC ][ 3 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC + 2 ) ][ yPosC ] ) >> shift1. fC[ xFracC ][ 3 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC + 2 ) ][ yPosC ] ) >> shift1.

[97] В противном случае, если xFracL равен 0, а yFracL не равен 0, значение predSampleLXL выводится следующим образом. Если sps_ref_wraparound_enabled_flag равно 0, значение xPosC выводится как:xPosC = Clip3 (0,picWC - 1, xIntC) . В противном случае значение xPosC получается как: xPosC = ClipH (xOffsetC,picWC,xIntC )[97] Otherwise, if xFracL is equal to 0 and yFracL is not equal to 0, the value of predSampleLXL is output as follows. If sps_ref_wraparound_enabled_flag is 0, the xPosC value is output as: xPosC = Clip3 (0,picWC - 1, xIntC) . Otherwise, the xPosC value is obtained as: xPosC = ClipH (xOffsetC,picWC,xIntC )

[98] Предсказанное значение отсчета цветности predSampleLXC получается следующим образом:[98] The predicted chrominance sample value predSampleLXC is obtained as follows:

predSampleLXC = ( fC[ yFracC ][ 0 ] * refPicLXC[ xPosC ][ Clip3( 0, picHC - 1, yIntC - 1 ) ] + fC[ yFracC ][ 1 ] * refPicLXC[ xPosC ][ Clip3( 0, picHC - 1, yIntC ) ] + fC[ yFracC ][ 2 ] * refPicLXC[ xPosC ][ Clip3( 0, picHC - 1, yIntC +predSampleLXC = ( fC[ yFracC ][ 0 ] * refPicLXC[ xPosC ][ Clip3( 0, picHC - 1, yIntC - 1 ) ] + fC[ yFracC ][ 1 ] * refPicLXC[ xPosC ][ Clip3( 0, picHC - 1 , yIntC ) ] + fC[ yFracC ][ 2 ] * refPicLXC[ xPosC ][ Clip3( 0, picHC - 1, yIntC +

1 ) ] + fC[ yFracC ][ 3 ] * refPicLXC[ xPosC ][ Clip3( 0, picHC - 1, yIntC + 2 ) ] ) >> shift1.predSampleLXC = (fC[yFracC ] 1 ) ] + fC[ yFracC ][ 3 ] * refPicLXC[ xPosC ][ Clip3( 0, picHC - 1, yIntC + 2 ) ] ) >> shift1.predSampleLXC = (fC[yFracC ]

[0] * refPicLXC [xPosC] [ Clip3 (0,picHC - 1,yIntC - 1)] + fC[yFracC ] [1] *refPicLXC[xPosC ] [Clip3 ( 0,picHC - 1,yIntC )] + [0] * refPicLXC[xPosC] [ Clip3 (0,picHC - 1,yIntC - 1)] + fC[yFracC ] [1] *refPicLXC[xPosC ] [Clip3 ( 0,picHC - 1,yIntC )] +

fC [yFracC][2 ] * refPicLXC [xPosC] [ Clip3 (0,picHC - 1,yIntC + 1)] + fC[yFracC ] [3] *refPicLXC[xPosC ] [Clip3 (0 ,picHC - 1,yIntC + 2)]) >> shift1. fC [yFracC][2 ] * refPicLXC [xPosC] [ Clip3 (0,picHC - 1,yIntC + 1)] + fC[yFracC ] [3] *refPicLXC[xPosC ] [Clip3 (0 ,picHC - 1,yIntC + 2)]) >> shift1.

[99] В противном случае, если xFracL равен 0, а yFracL не равен 0, значение predSampleLXL выводится следующим образом. Если sps_ref_wraparound_enabled_flag равно 0, массив отсчета temp [n] с n = 0 ..3 выводится следующим образом:[99] Otherwise, if xFracL is equal to 0 and yFracL is not equal to 0, the value of predSampleLXL is output as follows. If sps_ref_wraparound_enabled_flag is 0, the temp[n] countdown array with n = 0 ..3 is output as follows:

yPosC = Clip3( 0, picHC - 1, yIntC + n - 1 )yPosC = Clip3( 0, picHC - 1, yIntC + n - 1 )

temp[ n ] = ( fC[ xFracC ][ 0 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC - 1 ) ][ yPosC ] +temp[ n ] = ( fC[ xFracC ][ 0 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC - 1 ) ][ yPosC ] +

fC[ xFracC ][ 1 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC ) ][ yPosC ] + fC[ xFracC ][ 1 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC ) ][ yPosC ] +

fC[ xFracC ][ 2 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC + 1 ) ][ yPosC ] + fC[ xFracC ][ 2 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC + 1 ) ][ yPosC ] +

fC[ xFracC ][ 3 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC + 2 ) ][ yPosC ] ) >> shift1. fC[ xFracC ][ 3 ] * refPicLXC[ Clip3( 0, picWC - 1, xIntC + 2 ) ][ yPosC ] ) >> shift1.

[100] В противном случае массив отсчета temp [n] с n = 0 ..3, выводится следующим образом:[100] Otherwise, the sample array temp[n] with n = 0 ..3 is output as follows:

yPosC = Clip3( 0, picHC - 1, yIntC + n - 1 )yPosC = Clip3( 0, picHC - 1, yIntC + n - 1 )

temp[ n ] = ( fC [ xFracC ][ 0 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC - 1 ) ][ yPosC ] +temp[ n ] = ( fC [ xFracC ][ 0 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC - 1 ) ][ yPosC ] +

fC[ xFracC ][ 1 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC ) ][ yPosC ] + fC[ xFracC ][ 1 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC ) ][ yPosC ] +

fC[ xFracC ][ 2 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC + 1 ) ][ yPosC ] + fC[ xFracC ][ 2 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC + 1 ) ][ yPosC ] +

fC[ xFracC ][ 3 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC + 2 ) ][ yPosC ] ) >> shift1. fC[ xFracC ][ 3 ] * refPicLXC[ ClipH( xOffsetC, picWC, xIntC + 2 ) ][ yPosC ] ) >> shift1.

[101] Предсказанное значение отсчета цветности predSampleLXC выводится следующим образом:[101] The predicted chrominance sample value predSampleLXC is output as follows:

predSampleLXC = ( fC[ yFracC ][ 0 ] * temp[ 0 ] +predSampleLXC = ( fC[ yFracC ][ 0 ] * temp[ 0 ] +

fC[ yFracC ][ 1 ] * temp[ 1 ] + fC[ yFracC ][ 1 ] * temp[ 1 ] +

fC[ yFracC ][ 2 ] * temp[ 2 ] + fC[ yFracC ][ 2 ] * temp[ 2 ] +

fC[ yFracC ] [ 3 ] * temp[ 3 ] ) >> shift2. fC[ yFracC ] [ 3 ] * temp[ 3 ] ) >> shift2.

[102] В варианте осуществления, если sps_ref_wraparound_enabled_flag равно 0 или отсутствует, может применяться традиционное повторяющееся заполнение. В противном случае можно применить циклическое заполнение.[102] In an embodiment, if sps_ref_wraparound_enabled_flag is equal to 0 or absent, traditional repeated padding may be applied. Otherwise, you can apply circular filling.

[103] В варианте осуществления циклическое заполнение может применяться как на горизонтальных, так и на вертикальных границах. Флаг в структуре синтаксиса высокого уровня может указывать на то, что циклическое заполнение применяется как по горизонтали, так и по вертикали.[103] In an embodiment, cyclic filling can be applied to both horizontal and vertical boundaries. A flag in a high-level syntax structure can indicate that circular padding is applied both horizontally and vertically.

[104] В варианте осуществления циклическое заполнение может применяться на границах тайлов или групп тайлов. Флаг в структуре синтаксиса высокого уровня может указывать на то, что циклическое заполнение применяется как по горизонтали, так и по вертикали.[104] In an embodiment, circular padding may be applied at the boundaries of tiles or groups of tiles. A flag in a high-level syntax structure can indicate that circular padding is applied both horizontally and vertically.

[105] В варианте осуществления опорное изображение может быть идентично текущему изображению для предсказания с компенсацией движения. Циклическое заполнение может применяться на границе текущего изображения, когда текущее изображение является опорным.[105] In an embodiment, the reference picture may be identical to the current picture for motion compensation prediction. Cyclic filling can be applied on the border of the current image when the current image is the reference image.

[106] В варианте осуществления, когда изображение разделено на одно или несколько субизображений, которые представляют собой прямоугольную область из одного или нескольких слайсов, граница каждого субизображения может или не может обрабатываться как граница изображения. Обработка субизображения как изображения указывает на то, что граница каждого субизображения может быть заполнена для предсказания с компенсацией движения.[106] In an embodiment, when an image is divided into one or more sub-images, which are a rectangular area of one or more slices, the boundary of each sub-image may or may not be treated as an image boundary. Processing a sub-image as an image indicates that the boundary of each sub-image can be filled for motion compensation prediction.

[107] Как показано на фиг. 9, в SPS (или любом другом наборе параметров) subpic_treated_as_pic_flag [i], равный 1, указывает, что i-е субизображение каждого кодированного изображения в CVS обрабатывается как изображение в процессе декодирования. subpic_treated_as_pic_flag [i], равный 0, указывает, что i-ое субизображение каждого кодированного изображения в CVS не обрабатывается как изображение в процессе декодирования. Если отсутствует, значение subpic_treated_as_pic_flag [i] предполагается равным 0.[107] As shown in FIG. 9, in SPS (or any other parameter set), subpic_treated_as_pic_flag [i] equal to 1 indicates that the i-th sub-picture of each encoded picture in CVS is treated as a picture in the decoding process. subpic_treated_as_pic_flag [i] equal to 0 indicates that the i-th sub-picture of each encoded picture in CVS is not treated as a picture in the decoding process. If absent, subpic_treated_as_pic_flag[i] is assumed to be 0.

[108] В том же варианте осуществления, когда subpic_treated_as_pic_flag [i] равен 1, что указывает, что i-е субизображение обрабатывается как изображение, сигнализируется флаг subpic_ref_wraparound_enabled_flag [i]. subpic_ref_wraparound_enabled_flag [i], равный 1. subpic_ref_wraparound_enabled_flag [i], равный 1, указывает, что горизонтальная компенсация движения с циклическим заполнением применяется при интер-кадровом предсказании на границе i-го субизображения каждого кодированного изображения. sps_ref_wraparound_enabled_flag [i], равное 0, указывает, что горизонтальная компенсация движения с циклическим заполнением не применяется на границе i-го субизображения каждого кодированного изображения.[108] In the same embodiment, when subpic_treated_as_pic_flag [i] is equal to 1, which indicates that the i-th sub-image is processed as an image, the flag subpic_ref_wraparound_enabled_flag [i] is signaled. subpic_ref_wraparound_enabled_flag [i], equal to 1. subpic_ref_wraparound_enabled_flag [i], equal to 1, indicates that horizontal motion compensation with cyclic filling is applied in inter-frame prediction at the border of the i-th sub-picture of each encoded picture. sps_ref_wraparound_enabled_flag[i] equal to 0 indicates that horizontal wraparound motion compensation is not applied at the boundary of the i-th sub-picture of each encoded picture.

[109] В том же варианте осуществления subpic_ref_wraparound_offset_minus1 [i] плюс 1 задает смещение i-го субизображения каждого кодированного изображения, используемого для вычисления горизонтальной позиции перехода в единицах отсчетов яркости MinCbSizeY.[109] In the same embodiment, subpic_ref_wraparound_offset_minus1[i] plus 1 specifies the offset of the i-th sub-picture of each encoded picture used to calculate the horizontal transition position in units of luminance samples MinCbSizeY.

[110] В том же варианте осуществления процесс интерполяционной фильтрации выглядит следующим образом. Процесс интерполяции отсчета яркости. Входные данные для этого процесса могут включать в себя расположение яркости в единицах полного отсчета (xIntL , yIntL), расположение яркости в единицах дробного отсчета (xFracL ,yFracL ), расположение яркости в единицах полного отсчета (xSbIntL,ySbIntL ), определяющее верхний левый отсчет граничного блока для заполнения опорного отсчета относительно верхнего левого отсчета яркости опорного изображения, массива опорных отсчетов яркости refPicLXL, индекс интерполяционного фильтра половинного отсчета hpelIfIdx, переменную sbWidth, определяющей ширину текущего подблока, переменную sbHeight, определяющая высоту текущего подблока, и местоположение яркости (xSb, ySb), определяющее верхний левый отсчет текущего подблока относительно верхнего левого отсчета яркости текущего изображения. Выходы этого процесса могут включать в себя предсказанное значение отсчета яркости predSampleLXL.[110] In the same embodiment, the interpolation filtering process is as follows. Luminance reading interpolation process. Inputs to this process may include a brightness location in full-scale units (xIntL , yIntL ), a brightness location in fractional units (xFracL ,yFracL ), a brightness location in full-scale units (xSbIntL,ySbIntL ), specifying the upper left count of the boundary block to fill in the reference sample relative to the top left brightness sample of the reference image, array of luminance reference samples refPicLXL, half sample interpolation filter index hpelIfIdx, sbWidth variable defining the current subblock width, sbHeight variable defining the height of the current subblock, and brightness location (xSb, ySb) A that defines the top left of the current subblock relative to the top left of the brightness of the current image. The outputs of this process may include a predicted luminance sample value predSampleLXL.

[111] Переменные shift1, shift2 и shift3 выводятся следующим образом. Переменная shift1 устанавливается равной Min (4, BitDepthY - 8), переменная shift2 устанавливается равной 6, а переменная shift3 устанавливается равной Max (2, 14 - BitDepthY ). Переменная picW устанавливается равной pic_width_in_luma_samples, а переменная picH устанавливается равной pic_height_in_luma_samples.[111] Variables shift1, shift2 and shift3 are output as follows. The shift1 variable is set to Min (4, BitDepthY - 8), the shift2 variable is set to 6, and the shift3 variable is set to Max (2, 14 - BitDepthY ). The picW variable is set to pic_width_in_luma_samples and the picH variable is set to pic_height_in_luma_samples.

[112] Коэффициенты фильтра интерполяции яркости fL[p] для каждой 1/16 дробной позиции p отсчета, равного xFracL или yFracL, выводятся следующим образом. Если MotionModelIdc [xSb] [ySb] больше 0, а sbWidth и sbHeight оба равны 4, могут быть указаны коэффициенты фильтра интерполяции яркости fL [p]. В противном случае коэффициенты фильтра интерполяции яркости fL[p] указаны в таблице 8-11 в зависимости от hpelIfIdx.[112] The coefficients of the luminance interpolation filter fL[p] for each 1/16 fractional position p of the sample equal to xFracL or yFracL are derived as follows. If MotionModelIdc[xSb][ySb] is greater than 0, and sbWidth and sbHeight are both 4, luma interpolation filter coefficients fL[p] may be specified. Otherwise, the luminance interpolation filter coefficients fL[p] are specified in Table 8-11 depending on hpelIfIdx.

[113] Положения яркости в единицах полного отсчета (xInti, yInti ) выводятся следующим образом для i = 0… 7. Если subpic_treated_as_pic_flag [SubPicIdx] равно 1, применяется следующее:[113] Luminance positions in GS units (xInti, yInti ) are derived as follows for i = 0… 7. If subpic_treated_as_pic_flag [SubPicIdx] is 1, the following applies:

xInti = Clip3( SubPicLeftBoundaryPos, SubPicRightBoundaryPos, subpic_ref_wraparound_enabled_flag[ SubPicIdx ] ClipH( ( subpic_ref_wraparound_offset_minus1[ SubPicIdx ] + 1 ) * MinCbSizeY, SubPicRightBoundaryPos, xIntL + i - 3 ) :xInti = Clip3( SubPicLeftBoundaryPos, SubPicRightBoundaryPos, subpic_ref_wraparound_enabled_flag[ SubPicIdx ] ClipH( ( subpic_ref_wraparound_offset_minus1[ SubPicIdx ] + 1 ) * MinCbSizeY, SubPicRightBoundaryPos, xIntL + i - 3 ) :

xIntL + i - 3 )xIntL + i - 3 )

.yInti = Clip3( SubPicTopBoundaryPos, SubPicBotBoundaryPos, yIntL + i - 3 )..yInti = Clip3( SubPicTopBoundaryPos, SubPicBotBoundaryPos, yIntL + i - 3 ).

[114] В противном случае (subpic_treated_as_pic_flag [SubPicIdx] равен 0) применяется следующее:[114] Otherwise (subpic_treated_as_pic_flag [SubPicIdx] is 0), the following applies:

xInti = Clip3( 0, picW - 1, sps_ref_wraparound_enabled_flagxInti = Clip3( 0, picW - 1, sps_ref_wraparound_enabled_flag

ClipH( ( sps_ref_wraparound_offset_minus1 + 1 ) * MinCbSizeY, picW, xIntL + i - 3 ) :ClipH( ( sps_ref_wraparound_offset_minus1 + 1 ) * MinCbSizeY, picW, xIntL + i - 3 ) :

xIntL + i - 3 )xIntL + i - 3 )

yInti = Clip3( 0, picH - 1, yIntL + i - 3 )yInti = Clip3( 0, picH - 1, yIntL + i - 3 )

[115] Расположение яркости в единицах полной выборки дополнительно изменяется следующим образом для i = 0…7:[115] The location of the brightness in full sample units is further changed as follows for i = 0…7:

xInti = Clip3( xSbIntL - 3, xSbIntL + sbWidth + 4, xInti )xInti = Clip3( xSbIntL - 3, xSbIntL + sbWidth + 4, xInti )

yInti = Clip3( ySbIntL - 3, ySbIntL + sbHeight + 4, yInti )yInti = Clip3( ySbIntL - 3, ySbIntL + sbHeight + 4, yInti )

[116] Предсказанное значение отсчета яркости predSampleLXL выводится следующим образом. Если оба xFracLand yFracL равны 0 , значение predSampleLXL выводится как: predSampleLXL[116] The predicted luminance sample value predSampleLXL is output as follows. If both xFracLand yFracL are 0 , the value of predSampleLXL is output as: predSampleLXL

= refPicLXL [xInt3][ yInt3]< < shift3.= refPicLXL [xInt3][ yInt3]< < shift3.

[117] В противном случае, если xFracL не равно 0, а yFracL равно 0, значение predSampleLXL выводится как predSampleLXL =

Figure 00000003
> > shift1.[117] Otherwise, if xFracL is not equal to 0 and yFracL is equal to 0, the value of predSampleLXL is output as predSampleLXL =
Figure 00000003
>> shift1.

[118] В противном случае, если xFracL равно 0 , а yFracL не равно 0, значение predSampleLXL выводится как predSampleLXL =

Figure 00000004
> > shift1.[118] Otherwise, if xFracL is 0 and yFracL is not 0, the value of predSampleLXL is output as predSampleLXL =
Figure 00000004
>> shift1.

[119] В противном случае, если xFracL не равен 0, а yFracL не равен 0, значение predSampleLXL выводится следующим образом.[119] Otherwise, if xFracL is not equal to 0 and yFracL is not equal to 0, the value of predSampleLXL is output as follows.

[120] Массив отсчета temp [n] с n = 0 ..7, получается как: temp [n] =

Figure 00000005
>> shift1.[120] Sample array temp[n] with n = 0 ..7, obtained as: temp[n] =
Figure 00000005
>>shift1.

[121] Предсказанное значение отсчета яркости predSampleLXL выводится как predSampleLXL=

Figure 00000006
>> shift2.[121] The predicted luminance sample value predSampleLXL is output as predSampleLXL=
Figure 00000006
>>shift2.

[122] В том же или ином варианте осуществления, как показано на фиг. 10, в SPS (или любом другом наборе параметров) all_subpic_treated_as_pic_flag, равный 1, указывает, что любое субизображение каждого кодированного изображения в CVS обрабатывается как изображение в процессе декодирования. subpic_treated_as_pic_flag [i], равный 0, указывает, что любое субизображение каждого кодированного изображения в CVS не обрабатывается как изображение в процессе декодирования.[122] In the same or different embodiment, as shown in FIG. 10, in SPS (or any other parameter set), all_subpic_treated_as_pic_flag equal to 1 indicates that any subpicture of each encoded picture in CVS is treated as a picture in the decoding process. subpic_treated_as_pic_flag[i] equal to 0 indicates that any subpicture of each encoded picture in CVS is not treated as a picture during the decoding process.

[123] В том же варианте осуществления, когда all_subpic_treated_as_pic_flag [i] равен 1, сигнализируется флаг all_subpic_ref_wraparound_enabled_flag. all_subpic_ref_wraparound_enabled_flag, равный 1, указывает, что горизонтальная циклическая компенсация движения применяется при интер-кадровом предсказании на границе любого субизображения каждого кодированного изображения. all_sps_ref_wraparound_enabled_flag, равное 0, указывает, что горизонтальная циклическая компенсация движения не применяется на границе любого субизображения каждого кодированного изображения.[123] In the same embodiment, when all_subpic_treated_as_pic_flag [i] is equal to 1, the all_subpic_ref_wraparound_enabled_flag flag is signaled. all_subpic_ref_wraparound_enabled_flag equal to 1 indicates that horizontal cyclic motion compensation is applied in inter-picture prediction at the boundary of any sub-picture of each encoded picture. all_sps_ref_wraparound_enabled_flag equal to 0 indicates that horizontal circular motion compensation is not applied on the boundary of any sub-picture of each encoded picture.

[124] В том же варианте осуществления all_subpic_ref_wraparound_offset_minus1 [i] плюс 1 задает смещение любого субизображения каждого кодированного изображения, используемого для вычисления горизонтальной позиции перехода в единицах отсчетов яркости MinCbSizeY. В том же варианте осуществления, когда subpic_treated_as_pic_flag [i] отсутствует, значение subpic_treated_as_pic_flag [i] предполагается равным all_subpic_treated_as_pic_flag.[124] In the same embodiment, all_subpic_ref_wraparound_offset_minus1[i] plus 1 specifies the offset of any subimage of each encoded image used to calculate the horizontal transition position in units of MinCbSizeY luma samples. In the same embodiment, when subpic_treated_as_pic_flag[i] is absent, the value of subpic_treated_as_pic_flag[i] is assumed to be all_subpic_treated_as_pic_flag.

[125] В том же варианте осуществления, когда subpic_ref_wraparound_enabled_flag [i] отсутствует, значение subpic _ref_wraparound_enabled_flag [i] предполагается равным all_subpic_ref_wraparound_enabled_flag.[125] In the same embodiment, when subpic_ref_wraparound_enabled_flag[i] is absent, the value of subpic_ref_wraparound_enabled_flag[i] is assumed to be all_subpic_ref_wraparound_enabled_flag.

[126] В том же варианте осуществления, когда присутствует subpic_ref_wraparound_offset_minus1 [i], значение subpic_ref_wraparound_offset_minus1 [i] предполагается равным all_subpic_ref_wraparound_offset_minus1.[126] In the same embodiment, when subpic_ref_wraparound_offset_minus1[i] is present, the value of subpic_ref_wraparound_offset_minus1[i] is assumed to be all_subpic_ref_wraparound_offset_minus1.

[127] Методы процесса циклического заполнения, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически сохранены на одном или более машиночитаемых носителях. Например, на фиг.11 показана компьютерная система 800, подходящая для реализации определенных вариантов осуществления раскрытого объекта изобретения.[127] The wraparound process methods described above may be implemented in computer software using computer readable instructions and physically stored on one or more computer readable media. For example, FIG. 11 illustrates a computer system 800 suitable for implementing certain embodiments of the disclosed subject matter.

[128] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть объектом сборки, компиляции, связывания или подобных механизмов для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и и т. п., центральными процессорами компьютера (CPU), графическими процессорами (GPU) и т. п.[128] 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 etc., computer central processing units (CPUs), graphics processing units (GPUs), etc.

[129] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т. п.[129] 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.

[130] Компоненты, показанные на фиг.11 для компьютерной системы 800, являются примерными по своей природе и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы 800.[130] The components shown in FIG. 11 for computer system 800 are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present invention. The component configuration 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 computer system 800.

[131] Компьютерная система 800 может включать в себя определенные устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода с человеко-машинным интерфейсом может реагировать на ввод одним или более пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения управляющей перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например: жестов), обонятельного ввода (не изображен). Устройства с человеко-машинным интерфейсом также могут использоваться для захвата определенных носителей, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).[131] Computer system 800 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).

[132] Устройства ввода с человеческим интерфейсом могут включать в себя одно или несколько из (только одно из каждого изображенного): клавиатура 801, мышь 802, трекпад 803, сенсорный экран 810, перчатка 804 для передачи данных, джойстик 805, микрофон 806, сканер 807, камера 808.[132] Human interface input devices may include one or more of (only one of each depicted): keyboard 801, mouse 802, trackpad 803, touch screen 810, data glove 804, joystick 805, microphone 806, scanner 807, camera 808.

[133] Компьютерная система 800 также может включать в себя определенные устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода с человеко-машинным интерфейсом могут стимулировать чувства одного или более пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с человеко-машинным интерфейсом могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана (810), управляющей перчатки 804 или джойстика (805), но также могут иметься устройства тактильной обратной связи, которые не служат в качестве устройств ввода), устройства вывода звука (например: динамики (809), наушники (не показаны)), устройства вывода изображения (например, экраны (810), включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое из которых имеет или не имеет возможности ввода с сенсорного экрана, каждое с возможностью тактильной обратной связи или без нее - некоторые из которых могут быть способны выводить двухмерный визуальный вывод или более, чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)) и принтеры (не изображены).[133] Computer system 800 may also include certain human 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 human interface output devices may include tactile output devices (e.g., haptic feedback from a touch screen (810), control glove 804, or joystick (805), but there may also be tactile feedback devices that do not serve to as input devices), audio output devices (for example: speakers (809), headphones (not shown)), image output devices (for example, screens (810), including CRT screens, LCD screens, plasma screens, OLED screens, each with or without touchscreen input capability, each with or without haptic feedback capability - some of which may be capable of 2D visual output or more than 3D output by means such as stereographic output; virtual glasses realities (not shown), holographic displays and smoke tanks (not shown) and printers (not shown).

[134] Компьютерная система (800) также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW (820) с CD/DVD или подобные носители (821), флэш-накопитель (822), съемный жесткий диск или твердотельный накопитель (823), унаследованные магнитные носители, такие как лента и дискета (не показаны), специализированные устройства на основе ROM/ASIC/PLD, такие как защитные ключи (не показаны) и т.п.[134] The computer system (800) may also include human accessible storage devices and associated media such as optical media including CD/DVD ROM/RW (820) with CD/DVD or similar media (821), flash drive (822), removable hard drive or solid state drive (823), legacy magnetic media such as tape and floppy disk (not shown), dedicated ROM/ASIC/PLD based devices such as dongles (not shown), and etc.

[135] Специалисты в данной области также должны понимать, что термин «машиночитаемый носитель», используемый в связи с раскрытым в настоящем документе объектом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.[135] 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.

[136] Компьютерная система 800 также может включать в себя интерфейс к одной или более коммуникационным сетям. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т. д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т. п., проводные телевизионные или беспроводные глобальные цифровые сети, включая кабельное телевидение, спутниковое телевидение и наземное телевещание, автомобильное и промышленное оборудование, включая CAN-шину и т. д. Некоторым сетям обычно требуются внешние сетевые интерфейсные адаптеры, которые подключены к определенным портам данных общего назначения или периферийным шинам (849) (например, к портам USB компьютерной системы 800); другие обычно интегрированы в ядро компьютерной системы 800 путем присоединения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему ПК или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система 800 может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное телевидение), однонаправленной только для отправки (например, CAN-шина на определенные устройства с CAN-шиной) или двунаправленной, например, для других компьютерных систем, использующих локальную или глобальную цифровую сеть. В каждой из этих сетей и сетевых интерфейсов могут использоваться определенные протоколы и стеки протоколов, как описано выше.[136] Computer system 800 may also include an interface to one or more communication networks. Networks can be, for example, wireless, wired, optical. In addition, networks can be LAN, WAN, metropolitan, automotive, industrial, real-time, delay tolerant, etc. Examples of networks include LANs such as Ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., wired TV or wireless wide area digital networks, including cable TV, satellite TV and terrestrial TV, automotive and industrial equipment, including CAN bus, etc. Some networks usually require external network interface adapters that are connected to certain general purpose data ports or peripheral buses (849) (eg, USB ports of the computer system 800); others are typically integrated into the core of computer system 800 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, computer system 800 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.

[137] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку устройства хранения и сетевые интерфейсы могут быть присоединены к ядру 840 компьютерной системы 800.[137] The aforementioned human-machine interface devices, human-accessible storage devices, and network interfaces may be attached to the core 840 of the computer system 800.

[138] Ядро (840) может включать в себя один или более центральных процессоров (CPU) (841), графических процессоров (GPU) (842), специализированных программируемых процессоров в виде программируемых пользователем вентильных матриц (FPGA) (843), аппаратных ускорителей (844) для определенных задач и т. д. Эти устройства, наряду с постоянной памятью (ROM) (845), памятью с произвольным доступом (846), внутренними запоминающими устройствами, такими как внутренние жесткие диски, не доступные пользователю, твердотельные накопители и т.п. (847), могут быть подключены через системную шину (848). В некоторых компьютерных системах системная шина 848 может быть доступна в виде одного или более физических разъемов для обеспечения возможности расширения за счет дополнительных CPU, GPU и т. п. Периферийные устройства могут быть подключены либо непосредственно к системной шине 848 ядра, либо через периферийную шину 849. Архитектура периферийной шины включает PCI, USB и т. п.[138] The core (840) may include one or more central processing units (CPUs) (841), graphics processing units (GPUs) (842), dedicated field programmable processors in the form of field programmable gate arrays (FPGAs) (843), hardware accelerators (844) for specific tasks, etc. These devices, along with read-only memory (ROM) (845), random access memory (846), internal storage devices such as internal non-user-accessible hard drives, solid state drives, and etc. (847) can be connected via the system bus (848). In some computer systems, the 848 system bus may be available as one or more physical connectors to allow expansion with additional CPUs, GPUs, etc. Peripherals may be connected either directly to the kernel system bus 848 or via the 849 peripheral bus. .Peripheral bus architecture includes PCI, USB, etc.

[139] CPU 841, GPU 842, FGPA 843 и ускорители 844 могут выполнять определенные инструкции, которые в комбинации могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM 845 или RAM 846. Переходные данные также могут храниться в RAM 846, тогда как постоянные данные могут храниться, например, во внутреннем ЗУ большой емкости 847. Быстрое хранение и извлечение на любое из запоминающих устройств могут быть доступны посредством использования кэш-памяти, которая может быть тесно связана с одним или более CPU 841, GPU 842, ЗУ 847 большой емкости, ROM 845, RAM 846 и т. п.[139] CPU 841, GPU 842, FGPA 843, and accelerators 844 may execute certain instructions, which in combination may constitute the aforementioned computer code. This computer code may be stored in ROM 845 or RAM 846. Transient data may also be stored in RAM 846, while persistent data may be stored in, for example, internal mass storage 847. Fast storage and retrieval to any of the storage devices may be accessed by the use of cache memory, which may be closely associated with one or more CPU 841, GPU 842, mass storage 847, ROM 845, RAM 846, etc.

[140] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего изобретения, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.[140] 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 the present invention, or they may be well known and available to those skilled in the art of computer software.

[141] В качестве примера, но не ограничения, компьютерная система, имеющая архитектуру 800 и, в частности, ядро 840, может обеспечивать функциональность за счет процессора(ов) (включая CPU, GPU, FPGA, ускорители и т.п.), исполняющего программное обеспечение, воплощенное на одном или нескольких материальных машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя ЗУ большой емкости, как описано выше, а также определенными запоминающими устройствами ядра 840, которые имеют невременную природу, такими как внутреннее ЗУ 847 большой емкости или ROM 845. Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром 840. Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может предписывать ядру 840 и, в частности, процессорам в нем (включая CPU, GPU, FPGA и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в RAM 846, и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы, компьютерная система может обеспечивать функциональность в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель 844), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в данном документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это применимо. Ссылка на машиночитаемый носитель может включать в себя схему (например, интегральную схему (IC)), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это применимо. Настоящее изобретение включает в себя любую подходящую комбинацию аппаратного и программного обеспечения.[141] By way of example, and not limitation, a computer system having architecture 800, and in particular core 840, may provide functionality through processor(s) (including CPUs, GPUs, FPGAs, accelerators, etc.) executing software embodied on one or more tangible machine-readable media. Such computer-readable media can be media associated with user-accessible mass storage as described above, as well as certain core storage devices 840 that are of a non-transitory nature, such as internal mass storage 847 or ROM 845. implementation of the present invention may be stored in such devices and executed by the core 840. The computer-readable medium may include one or more memory devices or chips in accordance with specific needs. The software may direct the core 840, and in particular the processors therein (including CPUs, GPUs, FPGAs, and the like), to execute certain processes or certain portions of the specific processes described herein, including the definition of data structures stored in RAM 846 , 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 hardware circuitry or otherwise embodied in circuitry (e.g., an 844 accelerator) that can operate in place of or in conjunction with software to perform certain processes or parts of 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 invention includes any suitable combination of hardware and software.

[142] Хотя это описание раскрывает несколько примерных вариантов осуществления, существуют изменения, перестановки и различные заменяющие эквиваленты, которые попадают в объем изобретения. Таким образом, будет принято во внимание, что специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы изобретения и, таким образом, находятся в рамках его сущности и объема.[142] Although this description discloses several exemplary embodiments, there are variations, permutations, and various replacement equivalents that fall within the scope of the invention. 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 invention and thus are within its spirit and scope.

Claims (29)

1. Способ декодирования видео, исполняемый процессором, включающий следующие этапы: 1. A video decoding method executed by a processor, including the following steps: декодируют кодированные элементы синтаксиса, соответствующие процессу циклического заполнения, на основе сдвига опорного блока на опорное значение ширины циклического заполнения, которое определяют на основе местоположений отсчетов яркости в опорном блоке; иdecoding the encoded syntax elements corresponding to the cyclic fill process based on the offset of the reference block by the reference cyclic fill width value, which is determined based on the locations of the luminance samples in the reference block; And восстанавливают по меньшей мере одно кодированное текущее изображение с использованием процесса циклического заполнения.restoring at least one encoded current picture using a round robin process. 2. Способ по п. 1, в котором декодированные элементы синтаксиса указывают значение смещения для циклической обработки; или информацию о ширине левого и правого заполнения.2. The method of claim 1, wherein the decoded syntax elements indicate an offset value for loop processing; or information about the width of the left and right padding. 3. Способ по п. 2, в котором флаг указывает, присутствуют ли элементы синтаксиса, соответствующие процессу циклического заполнения, в наборе параметров.3. The method of claim 2, wherein the flag indicates whether syntax elements corresponding to the wraparound process are present in the parameter set. 4. Способ по п. 3, в котором положение пикселя для предсказания с компенсацией движения в опорном изображении определяют путем интерпретации элементов синтаксиса, соответствующих процессу циклического заполнения, с процессом отсечения.4. The method of claim 3, wherein the pixel position for motion-compensated prediction in the reference image is determined by interpreting syntax elements corresponding to the round-robin process with a clipping process. 5. Способ по п. 4, в котором дробный пиксель интерполируют для предсказания с компенсацией движения на основе определенного положения пикселя.5. The method of claim 4, wherein the fractional pixel is interpolated for motion compensation prediction based on the determined pixel position. 6. Способ по п. 5, в котором закольцованную область смешивают путем смешивания левой и правой заполненных областей закольцованной области для удаления артефакта шва в качестве постобработки.6. The method of claim 5, wherein the looped region is blended by blending the left and right filled areas of the looped region to remove the seam artifact as a post-processing. 7. Способ по п. 1, в котором процесс циклического заполнения применяется на границе тайла или группы тайлов.7. The method of claim. 1, in which the process of cyclic filling is applied at the border of a tile or group of tiles. 8. Способ по п. 1, в котором по меньшей мере одно кодированное текущее изображение является опорным для компенсации движения.8. The method of claim 1, wherein at least one encoded current picture is a reference for motion compensation. 9. Способ по п. 8, в котором процесс циклического заполнения применяют на границе по меньшей мере одного кодированного текущего изображения.9. The method of claim 8, wherein the wrapping process is applied at a boundary of at least one encoded current picture. 10. Способ по п. 1, в котором процесс циклического заполнения применяют на горизонтальной границе, вертикальной границе или на обеих, вертикальной и горизонтальной, границах.10. The method of claim 1, wherein the cycling process is applied to the horizontal boundary, the vertical boundary, or both vertical and horizontal boundaries. 11. Способ по п. 10, в котором флаг в структуре синтаксиса высокого уровня указывает, применяется ли процесс циклического заполнения на горизонтальной границе, вертикальной границе или на обеих, вертикальной и горизонтальной, границах.11. The method of claim 10, wherein the flag in the high-level syntax structure indicates whether the wraparound process is applied on a horizontal boundary, a vertical boundary, or both vertical and horizontal boundaries. 12. Способ по п. 1, в котором процесс циклического заполнения применяют на границах субизображений.12. The method of claim 1, wherein the cycling process is applied at sub-image boundaries. 13. Компьютерная система для кодирования видео, содержащая:13. A computer system for video encoding, comprising: один или более машиночитаемых невременных носителей данных, конфигурированных для хранения компьютерного программного кода; иone or more computer-readable non-transitory storage media configured to store computer program code; And один или более компьютерных процессоров, конфигурированных для доступа к указанному компьютерному программному коду и работы в соответствии с инструкциями указанного компьютерного программного кода, причем указанный компьютерный программный код включает в себя:one or more computer processors configured to access said computer program code and operate in accordance with the instructions of said computer program code, said computer program code including: код декодирования, конфигурированный так, чтобы побуждать один или более компьютерных процессоров декодировать кодированные элементы синтаксиса, соответствующие процессу циклического заполнения, на основе сдвига опорного блока на опорное значение ширины циклического заполнения, которое определяют на основе местоположений отсчетов яркости в опорном блоке; иdecoding code configured to cause one or more computer processors to decode encoded syntax elements corresponding to the cyclic fill process based on a reference block offset by a reference cyclic fill width value that is determined based on luminance sample locations within the reference block; And код восстановления, конфигурированный так, чтобы побуждать один или более компьютерных процессоров восстанавливать по меньшей мере одно кодированное текущее изображение с использованием процесса циклического заполнения.recovery code configured to cause one or more computer processors to recover at least one encoded current picture using a wraparound process. 14. Компьютерная система по п. 13, причем декодированные элементы синтаксиса указывают значение смещения для циклической обработки; или информацию о ширине левого и правого заполнения.14. The computer system according to claim 13, wherein the decoded syntax elements indicate an offset value for loop processing; or information about the width of the left and right padding. 15. Компьютерная система по п. 14, причем флаг указывает, присутствуют ли элементы синтаксиса, соответствующие процессу циклического заполнения, в наборе параметров.15. The computer system of claim 14, wherein the flag indicates whether syntax elements corresponding to the wrapping process are present in the parameter set. 16. Компьютерная система по п. 15, причем положение пикселя для предсказания с компенсацией движения в опорном изображении определяют путем интерпретации элементов синтаксиса, соответствующих процессу циклического заполнения, с процессом отсечения.16. The computer system of claim 15, wherein the pixel position for motion compensation prediction in the reference image is determined by interpreting the syntax elements corresponding to the wraparound process with a clipping process. 17. Компьютерная система по п. 16, причем дробный пиксель интерполируют для предсказания с компенсацией движения на основе определенного положения пикселя.17. The computer system of claim 16, wherein the fractional pixel is interpolated for motion compensation prediction based on the determined pixel position. 18. Компьютерная система по п. 17, причем закольцованная область смешана путем смешивания левой и правой заполненных областей закольцованной области для удаления артефакта шва в качестве постобработки.18. The computer system of claim 17, wherein the looped region is blended by blending left and right filled areas of the looped area to remove seam artifact as post-processing. 19. Компьютерная система по п. 13, причем процесс циклического заполнения применяется на границе тайла или группы тайлов.19. The computer system of claim 13, wherein the cycling process is applied at the boundary of a tile or group of tiles. 20. Компьютерная система по п. 13, причем по меньшей мере одно кодированное текущее изображение является опорным для компенсации движения.20. The computer system of claim 13, wherein at least one encoded current picture is a reference for motion compensation. 21. Невременный машиночитаемый носитель, хранящий компьютерную программу для кодирования видео, причем компьютерная программа конфигурирована так, чтобы побуждать один или более компьютерных процессоров выполнять:21. A non-transitory computer-readable medium storing a video encoding computer program, the computer program configured to cause one or more computer processors to perform: декодирование кодированных элементов синтаксиса, соответствующих процессу циклического заполнения, на основе сдвига опорного блока на опорное значение ширины циклического заполнения, которое определяют на основе местоположений отсчетов яркости в опорном блоке; иdecoding the encoded syntax elements corresponding to the cyclic fill process based on the offset of the reference block by the cyclic fill width reference value, which is determined based on the locations of the luminance samples in the reference block; And восстановление по меньшей мере одного кодированного текущего изображения с использованием процесса циклического заполнения.restoring at least one encoded current picture using a round robin process.
RU2021127808A 2019-09-20 2020-09-17 Method for padding processing by parts of sub-areas in a video stream RU2793903C1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/903,635 2019-09-20
US17/019,692 2020-09-14

Related Child Applications (1)

Application Number Title Priority Date Filing Date
RU2023108229A Division RU2023108229A (en) 2019-09-20 2020-09-17 METHOD FOR PROCESSING FILLING BY PARTS OF SUB-AREAS IN A VIDEO STREAM

Publications (1)

Publication Number Publication Date
RU2793903C1 true RU2793903C1 (en) 2023-04-07

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170013279A1 (en) * 2012-11-13 2017-01-12 Ntel Corporation Content adaptive dominant motion compensated prediction for next generation video coding
US9774853B2 (en) * 2011-11-08 2017-09-26 Google Technology Holdings LLC Devices and methods for sample adaptive offset coding and/or signaling
WO2018035721A1 (en) * 2016-08-23 2018-03-01 SZ DJI Technology Co., Ltd. System and method for improving efficiency in encoding/decoding a curved view video
US20190082184A1 (en) * 2016-03-24 2019-03-14 Nokia Technologies Oy An Apparatus, a Method and a Computer Program for Video Coding and Decoding
US20190110076A1 (en) * 2016-05-27 2019-04-11 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method
RU2693902C2 (en) * 2014-07-21 2019-07-05 Гурулоджик Микросистемс Ой Encoder, decoder and method

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9774853B2 (en) * 2011-11-08 2017-09-26 Google Technology Holdings LLC Devices and methods for sample adaptive offset coding and/or signaling
US20170013279A1 (en) * 2012-11-13 2017-01-12 Ntel Corporation Content adaptive dominant motion compensated prediction for next generation video coding
RU2693902C2 (en) * 2014-07-21 2019-07-05 Гурулоджик Микросистемс Ой Encoder, decoder and method
US20190082184A1 (en) * 2016-03-24 2019-03-14 Nokia Technologies Oy An Apparatus, a Method and a Computer Program for Video Coding and Decoding
US20190110076A1 (en) * 2016-05-27 2019-04-11 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method
WO2018035721A1 (en) * 2016-08-23 2018-03-01 SZ DJI Technology Co., Ltd. System and method for improving efficiency in encoding/decoding a curved view video

Similar Documents

Publication Publication Date Title
JP7342210B2 (en) Wraparound padding method for omnidirectional media encoding and decoding
AU2023201809B2 (en) Method for signaling output layer set with sub-picture
KR102660034B1 (en) Method for padding processing using sub-region segmentations in a video stream
KR102558961B1 (en) Segment types in video coding
US11812035B2 (en) Method for alignment across layers in coded video stream
RU2793903C1 (en) Method for padding processing by parts of sub-areas in a video stream
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
JP7391994B2 (en) Method, apparatus and computer program product for signaling output picture size for reference picture resampling