RU2787711C1 - Managing a buffer of decoded images for encoding video signals - Google Patents

Managing a buffer of decoded images for encoding video signals Download PDF

Info

Publication number
RU2787711C1
RU2787711C1 RU2021127724A RU2021127724A RU2787711C1 RU 2787711 C1 RU2787711 C1 RU 2787711C1 RU 2021127724 A RU2021127724 A RU 2021127724A RU 2021127724 A RU2021127724 A RU 2021127724A RU 2787711 C1 RU2787711 C1 RU 2787711C1
Authority
RU
Russia
Prior art keywords
image
picture
buffer
slnr
sublayer
Prior art date
Application number
RU2021127724A
Other languages
Russian (ru)
Inventor
Бёнду ЧОЙ
Шань ЛЮ
Стефан ВЕНГЕР
Original Assignee
Тенсент Америка Ллс
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Тенсент Америка Ллс filed Critical Тенсент Америка Ллс
Application granted granted Critical
Publication of RU2787711C1 publication Critical patent/RU2787711C1/en

Links

Images

Abstract

FIELD: video data processing.
SUBSTANCE: invention relates to technology for improved video signal encoding, more specifically, to managing a buffer of decoded images. Proposed is a method for decoding a video stream, involving storing pre-decoded images of the video stream in an image buffer, including a first set of images of the same time sublayer. An image can be stored in the buffer of decoded images, marked by entering an identifier into the element corresponding to the image in the list of reference images, and the identifier can be one of the following: "non-reference image" or "unused reference image". The first set of images includes a reference image of the sublayer for predicting the current image of the video stream. Herewith, the fact whether the image included in the first set of images is a sublayer non-reference image (SLNR) is determined based on the indicator presented in the slice header and/or in the image header; based on the image determined to be an SLNR image, the SLNR image is removed from the image buffer; and the current image is predicted using one or more images from at least one sublayer reference image stored in the image buffer after the SLNR image has been removed from the image buffer.
EFFECT: higher efficiency of decoding.
11 cl, 8 dwg, 4 tbl

Description

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

[1] По данной заявке испрашивается приоритет согласно предварительной заявке на патент США №62/819,460, поданной 15 марта 2019 года в Ведомство по патентам и товарным знакам США, и заявке на патент США №16/815,710, поданной 11 марта 2020 года в Ведомство по патентам и товарным знакам США, раскрытие которых включено в состав настоящего описания посредством ссылки.[1] This application claims priority under U.S. Provisional Application No. 62/819,460 filed March 15, 2019 with the U.S. Patent and Trademark Office and U.S. Patent Application No. 16/815,710 filed March 11, 2020 with the U.S. Patent and Trademark Office. under US Patents and Trademarks, the disclosure of which is incorporated into the present description by reference.

ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY

[2] Раскрытие настоящего изобретения относится к группе технологий усовершенствованного кодирования видеосигналов, более конкретно, к управлению буфером декодированных изображений.[2] The disclosure of the present invention relates to a group of advanced video coding technologies, more specifically, to decoded picture buffer management.

ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯBACKGROUND OF THE INVENTION

[3] Системы для декодирования включают буфер декодированных изображений для хранения изображений, подлежащих использованию в качестве опорных при декодировании.[3] Systems for decoding include a decoded picture buffer for storing pictures to be used as references in decoding.

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

[4] Некоторые примеры раскрытия настоящего изобретения позволяют улучшить способ управления буфером декодированных изображений с помощью, например, настройки адаптации временного подуровня.[4] Some examples of the disclosure of the present invention allow to improve the method of managing the decoded picture buffer by, for example, adjusting the adaptation of the temporal sublayer.

[5] В соответствии с некоторыми примерами осуществления предлагается способ. Способ включает сохранение предварительно декодированных изображений видеопотока в буфере изображений, включая первое множество изображений одинакового временного подуровня, при этом первое множество изображений включает по меньшей мере одно опорное изображение подуровня для предсказания текущего изображения видеопотока; определение, является ли изображение из первого множества изображений не опорным изображением подуровня (SLNR, Sublayer Non-Reference), на основе индикатора, представленного в заголовке слайса и/или в заголовке изображения; удаление, на основе изображения, определенного в качестве изображения SLNR, изображения SLNR из буфера изображений; и предсказание текущего изображения с использованием одного или более изображений из по меньшей мере одного опорного изображения подуровня, хранящегося в буфере изображений, после удаления изображения SLNR из буфера изображений.[5] According to some embodiments, a method is provided. The method includes storing pre-decoded images of the video stream in an image buffer, including a first plurality of images of the same temporal sublayer, the first plurality of images including at least one reference sublayer image for predicting a current image of the video stream; determining whether an image from the first plurality of images is a Sublayer Non-Reference (SLNR) image based on an indicator provided in the slice header and/or the image header; deleting, based on the image determined as the SLNR image, the SLNR image from the image buffer; and predicting the current picture using one or more pictures from at least one sublayer reference picture stored in the picture buffer after deleting the SLNR picture from the picture buffer.

[6] Согласно примеру осуществления, определение, является ли изображение первого множества изображений изображением SLNR, включает идентификацию типа блока уровня абстракции сети (NAL, Network Abstract Layer) изображения и определение, является ли изображение изображением SLNR, на основе идентифицированного типа блока NAL.[6] According to an exemplary embodiment, determining whether an image of the first plurality of images is an SLNR image includes identifying a Network Abstract Layer (NAL) block type of the image and determining whether the image is an SLNR image based on the identified NAL block type.

[7] Согласно примеру осуществления, способ также включает предоставление идентификатора для изображения, определенного в качестве изображения SLNR, на основе определения изображения в качестве изображения SLNR, при этом удаление включает удаление изображения из буфера изображений на основе идентификатора.[7] According to the exemplary embodiment, the method also includes providing an identifier for an image determined as an SLNR image based on determining the image as an SLNR image, wherein deletion includes deleting the image from an image buffer based on the identifier.

[8] Согласно примеру осуществления, способ также включает формирование списка опорных изображений, включающего элемент для каждого изображения из первого множества, при этом предоставление идентификатора включает предоставление идентификатора в элементе списка опорных изображений, который соответствует изображению, определенному как изображение SLNR.[8] According to an exemplary embodiment, the method also includes generating a reference picture list including an entry for each picture from the first set, wherein providing an identifier includes providing an identifier in a reference picture list entry that corresponds to an image determined to be an SLNR picture.

[9] Согласно примеру осуществления, ранее декодированные изображения, хранящиеся в буфере изображений, содержат второе изображение, которое является опорным изображением, и способ также включает определение, является ли значение временного подуровня второго изображения больше заранее заданного значения; удаление второго изображения из буфера изображений на основе определения того, что значение временного подуровня второго изображения больше заранее заданного значения.[9] According to an exemplary embodiment, the previously decoded pictures stored in the picture buffer include a second picture that is a reference picture, and the method also includes determining whether the second picture's temporal sublayer value is greater than a predetermined value; deleting the second image from the image buffer based on determining that the second image temporal sublayer value is greater than a predetermined value.

[10] Согласно примеру осуществления, способ также включает предоставление идентификатора для второго изображения на основе определения того, что значение временного подуровня второго изображения больше заранее заданного значения, при этом удаление второго изображения включает удаление второго изображения из буфера изображений на основе идентификатора.[10] According to an exemplary embodiment, the method also includes providing an identifier for the second image based on determining that the second image temporal sublayer value is greater than a predetermined value, wherein deleting the second image includes deleting the second image from the image buffer based on the identifier.

[11] Согласно примеру осуществления, способ также включает сравнение заранее заданного значения со значением, соответствующим наибольшему номеру идентификации временного подуровня, при этом определение, является ли значение временного подуровня второго изображения больше заранее заданного значения, осуществляется на основе заранее заданного значения, которое определяется как отличающееся от значения, соответствующего наибольшему номеру идентификации временного подуровня.[11] According to the exemplary embodiment, the method also includes comparing the predetermined value with the value corresponding to the highest temporal sublayer identification number, wherein determining whether the value of the temporal sublayer of the second image is greater than the predetermined value is performed based on the predetermined value, which is determined as different from the value corresponding to the highest temporal sublayer identification number.

[12] Согласно примеру осуществления, способ также включает определение, является ли текущее изображение изображением внутренней точки произвольного доступа (IRAP, Intra Random Access Point); определение, указывает ли флаг на то, что отсутствует вывод пропущенного опережающего изображения произвольного доступа (RASL, Random Access Skipped Leading); и определение, следует ли устанавливать соответствующий идентификатор для каждого опорного изображения, хранимого в буфере изображений, при этом соответствующий идентификатор для каждого опорного изображения указывает, должно ли каждое опорное изображение удаляться из буфера изображений, на основе того, определяется ли текущее изображение как изображение IRAP и определяется ли флаг, указывающий на отсутствие вывода изображения RASL.[12] According to an exemplary embodiment, the method also includes determining whether the current image is an Intra Random Access Point (IRAP) image; determining whether a flag indicates that there is no output of a random access skipped leading picture (RASL, Random Access Skipped Leading); and determining whether to set a corresponding ID for each reference picture stored in the picture buffer, wherein the respective ID for each reference picture indicates whether each reference picture should be removed from the picture buffer, based on whether the current picture is determined to be an IRAP picture, and whether a flag is defined indicating that no RASL image is being output.

[13] Согласно примеру осуществления, значение временного подуровня второго изображения больше, чем значение временного подуровня первого множества изображений, хранящихся в буфере изображений.[13] According to an embodiment, the temporal sublayer value of the second image is larger than the temporal sublayer value of the first plurality of images stored in the image buffer.

[14] Согласно примеру осуществления, способ также включает удаление изображений из буфера изображений, на которые отсутствует ссылка в списке опорных изображений, на основе изображений, на которые отсутствует ссылка в списке опорных изображений.[14] According to the exemplary embodiment, the method also includes deleting pictures from the buffer of pictures not referenced in the reference picture list based on pictures not referenced in the reference picture list.

[15] В соответствии с некоторыми примерами осуществления предлагается декодер для декодирования видеопотока. Декодер содержит память, сконфигурированную для хранения компьютерного программного кода, и по меньшей мере один процессор, сконфигурированный для доступа к компьютерному программному коду и работающий под управлением компьютерного программного кода, при этом компьютерный программный код включает: код сохранения, сконфигурированный для выполнения по меньшей мере одним процессором сохранения предварительно декодированных изображений видеопотока в буфере изображений, включая первое множество изображений одинакового временного подуровня, при этом первое множество изображений включает по меньшей мере одно опорное изображение подуровня для предсказания текущего изображения видеопотока; код определения, сконфигурированный для выполнения по меньшей мере одним процессором определения, является ли изображение из первого множества изображений не опорным изображением подуровня (SLNR), на основе индикатора, представленного в заголовке слайса и/или в заголовке изображения; код удаления, сконфигурированный для выполнения по меньшей мере одним процессором удаления, на основе изображения, определенного в качестве изображения SLNR, изображения SLNR в буфере изображений; и код предсказания, сконфигурированный для выполнения по меньшей мере одним процессором предсказания текущего изображения с использованием одного или более изображений из по меньшей мере одного опорного изображения подуровня, хранящегося в буфере изображений, после удаления изображения SLNR из буфера изображений.[15] According to some embodiments, a decoder is provided for decoding a video stream. The decoder comprises a memory configured to store computer program code and at least one processor configured to access the computer program code and operate under the control of the computer program code, wherein the computer program code includes: a storage code configured to be executed by at least one a processor for storing pre-decoded images of the video stream in an image buffer including a first plurality of images of the same temporal sublayer, the first plurality of images including at least one reference sublayer image for predicting a current image of the video stream; determination code configured to perform at least one processor determining whether an image of the first plurality of images is a non-sublayer reference image (SLNR) based on an indicator provided in the slice header and/or in the picture header; deletion code configured to perform deletion by at least one processor, based on the image determined as the SLNR image, of the SLNR image in the image buffer; and a prediction code configured to perform prediction by the at least one processor of the current picture using one or more pictures from the at least one sublayer reference picture stored in the picture buffer after deleting the SLNR picture from the picture buffer.

[16] Согласно примеру осуществления, код определения сконфигурирован для выполнения по меньшей мере одним процессором идентификации типа блока уровня абстракции сети (NAL) изображения и определения, является ли изображение изображением SLNR, на основе идентифицированного типа блока NAL.[16] According to an exemplary embodiment, the determination code is configured to perform at least one processor identifying a network abstraction layer (NAL) unit type of an image and determining whether the image is an SLNR image based on the identified NAL unit type.

[17] Согласно примеру осуществления, по меньшей мере один процессор сконфигурирован для доступа к компьютерному программному коду и работы под управлением компьютерного программного кода, который также включает код предоставления идентификатора, сконфигурированный для выполнения по меньшей мере одним процессором предоставления идентификатора для изображения, определенного в качестве изображения SLNR, на основе определения изображения в качестве изображения SLNR, и код удаления, сконфигурированный для выполнения по меньшей мере одним процессором удаления изображения SLNR из буфера изображений на основе идентификатора.[17] According to an exemplary embodiment, the at least one processor is configured to access and operate the computer program code, which also includes an identifier granting code configured to be executed by the at least one processor to provide an identifier for an image determined as an SLNR image based on determining the image as an SLNR image, and deletion code configured to perform at least one processor deleting the SLNR image from the image buffer based on the identifier.

[18] Согласно примеру осуществления, по меньшей мере один процессор сконфигурирован для доступа к компьютерному программному коду и работы под управлением компьютерного программного кода, который также включает код формирования, сконфигурированный для выполнения по меньшей мере одним процессором формирование списка опорных изображений, включающего элемент для каждого изображения из первого множества изображений, и код предоставления идентификатора, сконфигурированный для выполнения по меньшей мере одним процессором предоставления идентификатора в элементе списка опорных изображений, который соответствует изображению, определенному как изображение SLNR.[18] According to an exemplary embodiment, at least one processor is configured to access the computer program code and operate under the control of the computer program code, which also includes generation code configured to perform at least one processor generation of a reference picture list including an element for each images from the first plurality of images, and an ID granting code configured to be executed by at least one ID granting processor in the reference picture list entry that corresponds to the picture determined as the SLNR picture.

[19] Согласно примеру осуществления, ранее декодированные изображения, хранящиеся в буфере изображений, содержат второе изображение, которое является опорным изображением, код определения сконфигурирован для выполнения по меньшей мере одним процессором определения, является ли значение временного подуровня второго изображения больше заранее заданного значения; и код удаления сконфигурирован для выполнения по меньшей мере одним процессором удаления второго изображения из буфера изображений на основе определения того, что значение временного подуровня второго изображения больше заранее заданного значения.[19] According to an exemplary embodiment, the previously decoded pictures stored in the picture buffer include a second picture that is a reference picture, the determination code is configured to make at least one processor determine whether the second picture's temporal sublayer value is greater than a predetermined value; and the deletion code is configured to perform at least one processor deleting the second image from the image buffer based on determining that the second image temporal sublayer value is greater than a predetermined value.

[20] Согласно примеру осуществления, код предоставления идентификатора сконфигурирован для выполнения по меньшей мере одним процессором предоставления идентификатора для второго изображения на основе определения того, что значение временного подуровня второго изображения больше заранее заданного значения, и код удаления сконфигурирован для выполнения по меньшей мере одним процессором удаления второго изображения из буфера изображений на основе идентификатора.[20] According to an exemplary embodiment, the ID grant code is configured to be executed by at least one processor for providing an ID for the second image based on determining that the value of the temporal sublayer of the second picture is greater than a predetermined value, and the deletion code is configured to be executed by at least one processor deleting the second image from the image buffer based on the ID.

[21] Согласно примеру осуществления, код определения сконфигурирован для выполнения по меньшей мере одним процессором сравнения заранее заданного значения со значением, соответствующим наибольшему номеру идентификации временного подуровня, при этом определение, является ли значение временного подуровня второго изображения больше заранее заданного значения, осуществляется на основе заранее заданного значения, которое определяется как отличающееся от значения, соответствующего наибольшему номеру идентификации временного подуровня.[21] According to the exemplary embodiment, the determination code is configured to perform at least one processor comparing the predetermined value with the value corresponding to the highest temporal sublayer identification number, wherein determining whether the value of the temporal sublayer of the second picture is greater than the predetermined value is performed based on a predetermined value, which is determined to be different from the value corresponding to the highest temporal sublayer identification number.

[22] Согласно примеру осуществления, код определения сконфигурирован для выполнения по меньшей мере одним процессором определения, является ли текущее изображение изображением внутренней точки произвольного доступа (IRAP); и определения, указывает ли флаг на то, что отсутствует вывод пропущенного опережающего изображения произвольного доступа (RASL); и компьютерный программный код также содержит код предоставления идентификатора, сконфигурированный для выполнения по меньшей мере одним процессором установки соответствующего идентификатора для каждого опорного изображения, хранимого в буфере изображений, при этом соответствующий идентификатор для каждого опорного изображения указывает, должно ли каждое опорное изображение удаляться из буфера изображений, если определяется, что текущее изображение является изображением IRAP, и определяется, что флаг, указывает на отсутствие вывода изображения RASL.[22] According to an exemplary embodiment, the determination code is configured to perform at least one processor determining whether the current image is an internal random access point (IRAP) image; and determining whether the flag indicates that there is no skipped random access advance picture (RASL) output; and the computer program code also includes an identifier providing code configured to cause the at least one processor to set a respective identifier for each reference picture stored in the picture buffer, wherein the respective identifier for each reference picture indicates whether each reference picture is to be removed from the picture buffer. if the current image is determined to be an IRAP image and the flag is determined to indicate that no RASL image is being output.

[23] Согласно примеру осуществления, значение временного подуровня второго изображения больше, чем значение временного подуровня первого множества изображений, хранящихся в буфере изображений.[23] According to an exemplary embodiment, the value of the temporal sublayer of the second image is greater than the value of the temporal sublayer of the first plurality of images stored in the image buffer.

[24] Согласно некоторым примерам осуществления настоящего изобретения предлагается машиночитаемый носитель информации, на котором хранятся компьютерные инструкции. При выполнении компьютерных инструкций по меньшей мере один процессор инициируется для сохранения предварительно декодированных изображений видео потока в буфере изображений, включая первое множество изображений одинакового временного подуровня, при этом первое множество изображений включает по меньшей мере одно опорное изображение подуровня для предсказания текущего изображения видеопотока; определения, является ли изображение из первого множества изображений не опорным изображением подуровня (SLNR), на основе индикатора, представленного в заголовке слайса и/или в заголовке изображения; удаления, на основе изображения, определенного в качестве изображения SLNR, изображения SLNR из буфера изображений; и предсказания текущего изображения с использованием одного или более изображений из по меньшей мере одного опорного изображения подуровня, которое хранится в буфере изображений, после удаления изображения SLNR из буфера изображений.[24] According to some embodiments of the present invention, a computer-readable storage medium is provided that stores computer instructions. When executing computer instructions, at least one processor is initiated to store pre-decoded images of the video stream in an image buffer, including a first plurality of images of the same temporal sublayer, wherein the first plurality of images includes at least one reference sublayer image for predicting the current image of the video stream; determining whether an image from the first plurality of images is a non-sublayer reference image (SLNR) based on an indicator provided in the slice header and/or the image header; deleting, based on the image determined as the SLNR image, the SLNR image from the image buffer; and predicting the current picture using one or more pictures from at least one sublayer reference picture stored in the picture buffer after deleting the SLNR picture from the picture buffer.

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

[25] Дополнительные признаки, особенности и различные преимущества раскрываемого предмета изобретения становятся более очевидными из последующего подробного описания и прилагаемых чертежей, на которых:[25] Additional features, features and various advantages of the disclosed subject matter become more apparent from the following detailed description and the accompanying drawings, in which:

[26] на фиг. 1 показано схематическое представление упрощенной блок-схемы системы связи в соответствии с примером осуществления настоящего изобретения.[26] in FIG. 1 is a schematic representation of a simplified block diagram of a communication system in accordance with an embodiment of the present invention.

[27] На фиг. 2 показано схематическое представление упрощенной блок-схемы системы потоковой передачи в соответствии с примером осуществления настоящего изобретения.[27] FIG. 2 is a schematic representation of a simplified block diagram of a streaming system in accordance with an embodiment of the present invention.

[28] На фиг. 3 показано схематическое представление упрощенной блок-схемы видеодекодера и дисплея в соответствии с примером осуществления настоящего изобретения.[28] FIG. 3 is a schematic representation of a simplified block diagram of a video decoder and display in accordance with an embodiment of the present invention.

[29] На фиг. 4 показано схематическое представление упрощенной блок-схемы видеокодера и источника видеосигнала в соответствии с примером осуществления настоящего изобретения.[29] FIG. 4 is a schematic representation of a simplified block diagram of a video encoder and video source in accordance with an exemplary embodiment of the present invention.

[30] На фиг. 5 показан алгоритм выполнения процесса в соответствии с примером осуществления настоящего изобретения.[30] FIG. 5 shows a process flow in accordance with an exemplary embodiment of the present invention.

[31] На фиг. 6 показан алгоритм выполнения процесса в соответствии с примером осуществления настоящего изобретения.[31] FIG. 6 shows a process flow in accordance with an exemplary embodiment of the present invention.

[32] На фиг. 7 представлена схема, иллюстрирующая устройство в соответствии с примером осуществления настоящего изобретения.[32] FIG. 7 is a diagram illustrating an apparatus according to an embodiment of the present invention.

[33] На фиг. 8 показана блок-схема компьютерной системы, подходящей для реализации примеров осуществления настоящего изобретения.[33] FIG. 8 is a block diagram of a computer system suitable for implementing exemplary embodiments of the present invention.

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

[34] На фиг. 1 показана упрощенная блок-схема системы 100 связи в соответствии с примером раскрытия настоящего изобретения. Система 100 может содержать по меньшей мере два терминала 110, 120, взаимосвязанных через сеть 150. Для однонаправленной передачи данных первый терминал 110 может кодировать видеоданные в локальном местоположении для передачи их в другой терминал 120 через сеть 150. Второй терминал 120 может принимать кодированные видеоданные из другого терминала по сети 150, декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных может представлять собой общую функцию в медийных обслуживающих приложениях и т.п.[34] FIG. 1 shows a simplified block diagram of a communication system 100 in accordance with an exemplary disclosure of the present invention. System 100 may include at least two terminals 110, 120 interconnected via network 150. For unidirectional data transmission, first terminal 110 may encode video data at a local location for transmission to another terminal 120 via network 150. Second terminal 120 may receive encoded video data from another terminal via the network 150, decode the encoded data, and display the recovered video data. Unidirectional data transfer may be a common feature in media serving applications and the like.

[35] На фиг. 1 показана вторая пара терминалов 130, 140, предназначенных для поддержки двусторонней передачи кодированных видеоданных, которая может осуществляться, например, в процессе видеоконференц-связи. Для двусторонней передачи данных каждый терминал 130, 140 может кодировать видеоданные, захваченные в локальном местоположении, для передачи в другой терминал по сети 150. Каждый терминал 130, 140 также может принимать кодированные видеоданные, переданные другим терминалом, может декодировать кодированные данные и отображать восстановленные видеоданные на локальном устройстве отображения.[35] FIG. 1 shows a second pair of terminals 130, 140 designed to support two-way transmission of encoded video data, such as may occur during a video conference. For two-way data transmission, each terminal 130, 140 may encode video data captured at a local location for transmission to another terminal over network 150. Each terminal 130, 140 may also receive encoded video data transmitted by another terminal, may decode the encoded data, and display the reconstructed video data. on the local display device.

[36] Показанные на фиг. 1 терминалы 110-140 могут представлять собой, например, серверы, персональные компьютеры и смартфоны, и/или терминал любого тип. Например, терминалы 110-140 могут представлять собой ноутбуки, планшеты, медиаплееры и/или специализированное оборудование для видеоконференций. Сеть 150 представляет любое количество сетей, которые передают кодированные видеоданные между терминалами 110-140, включая, например, проводные и/или беспроводные сети связи. Сеть 150 связи может осуществлять обмен данными по линиям связи с коммутацией каналов или с коммутацией пакетов. Типичные сети включают телекоммуникационные сети, локальные и глобальные сети и/или Интернет. С целью настоящего обсуждения можно предположить, что архитектура и топология сети 150 не существенна для принципов раскрытия изобретения, если ниже не указано иное.[36] Shown in FIG. 1, terminals 110-140 may be, for example, servers, personal computers and smartphones, and/or any type of terminal. For example, terminals 110-140 may be laptops, tablets, media players, and/or specialized video conferencing equipment. Network 150 represents any number of networks that transmit encoded video data between terminals 110-140, including, for example, wired and/or wireless networks. Communication network 150 may communicate over circuit-switched or packet-switched links. Typical networks include telecommunications networks, local and wide area networks and/or the Internet. For the purposes of this discussion, it may be assumed that the architecture and topology of network 150 is not essential to the principles of the disclosure, unless otherwise noted below.

[37] На фиг. 2 в качестве примера применения раскрываемого предмета изобретения показано расположение кодера и декодера видеосигнала в потоковой среде. Раскрываемый предмет настоящего изобретения может использоваться с другими допустимыми применениями видеосигнала, включая, например, видеоконференц-связь, цифровое телевидение, хранение сжатых видеоданных на цифровых носителях, включая CD, DVD, карту памяти и т.п.[37] FIG. 2 shows the location of a video encoder and decoder in a streaming environment as an example of the application of the disclosed subject matter. The disclosed subject matter of the present invention may be used with other valid video applications including, for example, videoconferencing, digital television, compressed video storage on digital media including CD, DVD, memory card, and the like.

[38] Как показано на фиг. 2, система 200 потоковой передачи может содержать подсистему 213 захвата, которая включает в свой состав источник 201 видеосигнала и кодер 203. Система 200 потоковой передачи может также содержать по меньшей мере один потоковый сервер 205 и/или по меньшей мере один потоковый клиент 206.[38] As shown in FIG. 2, streaming system 200 may include a capture engine 213 that includes a video source 201 and an encoder 203. Streaming system 200 may also include at least one streaming server 205 and/or at least one streaming client 206.

[39] Источник 201 видеосигнала может создавать, например, несжатый поток 202 отсчетов видеосигнала. Источник 201 видеосигнала может представлять собой, например, цифровую видеокамеру. Поток 202 отсчетов, изображенный в виде полужирной линии, чтобы обратить внимание на большой объем данных по сравнению с кодированными битовыми видеопотоками, может обрабатываться кодером 203, соединенным с камерой. Кодер 203 может содержать аппаратуру, программное обеспечение или комбинацию этих компонентов для активирования или реализации аспектов раскрываемого предмета изобретения, как более подробно описывается ниже. Кодер 203 может также генерировать кодированный битовый видеопоток 204. Кодированный битовый видеопоток 204, изображенный в виде тонкой линии, чтобы обратить внимание на небольшой объем данных по сравнению с несжатым видеопотоком 202 отсчетов, может для дальнейшего использования храниться на потоковом сервере. Один или более потоковых клиентов 206 могут осуществлять доступ к потоковому серверу 205 для извлечения битовых видеопотоков 209, которые могут представлять собой копии кодированного битового видеопотока 204.[39] Video source 201 may produce, for example, an uncompressed stream 202 of video samples. The video source 201 may be, for example, a digital video camera. Sample stream 202, depicted as a bold line to draw attention to the large amount of data compared to encoded video bitstreams, may be processed by an encoder 203 coupled to a camera. Encoder 203 may include hardware, software, or a combination of these components to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoder 203 may also generate an encoded video bitstream 204. The encoded video bitstream 204, drawn as a thin line to emphasize the small amount of data compared to the uncompressed video sample stream 202, may be stored on a streaming server for later use. One or more streaming clients 206 may access the streaming server 205 to retrieve video bitstreams 209, which may be copies of the encoded video bitstream 204.

[40] Потоковые клиенты 206 могут включать в свой состав видеодекодер 210 и дисплей 212. Видеодекодер 210 может, например, декодировать битовый видеопоток 209, представляющий собой входящую копию кодированного битового видеопотока 204, и создавать исходящий видеопоток 211 отсчетов, который может отображаться на дисплее 212 или на другом устройстве визуализации (не показанном на чертеже). В некоторых потоковых системах битовые видеопотоки 204, 209 могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видеоданных. Примером таких стандартов, без ограничения указанным примером, может являться рекомендация Н.265 ITU-T. В стадии разработки находится стандарт кодирования видеоданных, неформально известный как усовершенствованное видеокодирование (VVC, Versatile Video Coding). Примеры раскрытия настоящего изобретения могут использоваться в контексте VVC.[40] Streaming clients 206 may include a video decoder 210 and a display 212. Video decoder 210 may, for example, decode a video bitstream 209 representing an incoming copy of the encoded video bitstream 204 and produce an outgoing video sample stream 211 that may be displayed on display 212 or on another imaging device (not shown in the drawing). In some streaming systems, video bitstreams 204, 209 may be encoded according to certain video coding/compression standards. An example of such standards, without being limited to this example, may be ITU-T Recommendation H.265. A video data coding standard informally known as Versatile Video Coding (VVC) is under development. Examples of the disclosure of the present invention can be used in the context of VVC.

[41] На фиг. 3 показан пример функциональной блок-схемы видеодекодера 210, подключенного к дисплею 212, в соответствии с примером раскрытия настоящего изобретения.[41] FIG. 3 shows an exemplary functional block diagram of a video decoder 210 connected to a display 212 in accordance with an exemplary disclosure of the present invention.

[42] Видеодекодер 210 может содержать канал 312, приемник 310, буферную память 315, энтропийный декодер/анализатор 320, блок 351 масштабирования/обратного преобразования, блок 352 внутреннего предсказания, блок 353 предсказания компенсации движения, агрегатор 355, блок 356 контурного фильтра, память 357 опорных изображений и память 358 текущих изображений. Согласно по меньшей мере одному примеру осуществления видеодекодер 210 может содержать интегрированную схему, ряд интегрированных схем и/или другие электронные цепи. Видеодекодер 210 может быть также полностью или частично реализован в виде программного обеспечения, выполняющегося на одном или более CPU со связанной памятью.[42] The video decoder 210 may include a channel 312, a receiver 310, a buffer memory 315, an entropy decoder/analyzer 320, a scaling/inverse transform block 351, an intra prediction block 352, a motion compensation predictor 353, an aggregator 355, a loop filter block 356, a memory 357 reference pictures and 358 current picture memory. According to at least one embodiment, video decoder 210 may include an integrated circuit, a number of integrated circuits, and/or other electronic circuits. Video decoder 210 may also be wholly or partially implemented as software running on one or more CPUs with associated memory.

[43] В этом и других примерах осуществления приемник 310 может принимать одну или более кодированных видеопоследовательностей, подлежащих декодированию декодером 210, по одной последовательности в конкретный момент времени, при этом декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься по каналу 312, который может представлять собой аппаратную/программную линию связи с запоминающим устройством, хранящим кодированные видеоданные. Приемник 310 может принимать кодированные видеоданные совместно с другими данными, например, с кодированными звуковыми данными и/или с потоками служебных данных, которые могут пересылаться в соответствующие им объекты применения (не показанные на чертеже). Приемник 310 может разделять кодированную видеопоследовательность от других данных. Для устранения флуктуации в сети между приемником 310 и энтропийным декодером/анализатором 320 (далее называемым "анализатор") может устанавливаться буферная память 315. Если приемник 310 принимает данные из запоминающего устройства/устройства пересылки с достаточной полосой пропускания и управляемостью или из изосинхронной сети, буферная память 315 может не использоваться или иметь небольшой размер. Для использования в пакетных сетях наилучшего качества обслуживания, таких как Интернет, может потребоваться буфер 315, который может быть достаточно большим и адаптируемым по размеру.[43] In this and other embodiments, receiver 310 may receive one or more encoded video sequences to be decoded by decoder 210, one sequence at a time, with the decoding of each encoded video sequence independent of other encoded video sequences. The encoded video sequence may be received over a channel 312, which may be a hardware/software link to a storage device storing the encoded video data. Receiver 310 may receive encoded video data along with other data, such as encoded audio data and/or overhead streams, which may be sent to their respective application entities (not shown). The receiver 310 may separate the encoded video sequence from other data. A buffer memory 315 may be installed between the receiver 310 and the entropy decoder/analyzer 320 (hereinafter referred to as "analyzer") to eliminate network jitter. memory 315 may be unused or small. For use in best quality of service packet networks, such as the Internet, buffer 315 may be required, which may be sufficiently large and adaptable in size.

[44] Видеодекодер 210 может содержать анализатор 320 для восстановления символов 321 из энтропийно кодированной видеопоследовательности. Категории таких символов включают, например, информацию, используемую для управления функционированием декодера 210, а также потенциальную информацию для управлением устройством визуализации, таким как дисплей 212, который может быть связан с декодером, как показано на фиг. 2. Управляющая информация для устройства (устройств) визуализации может передаваться, например, в формате сообщений дополнительной усовершенствованной информации (SEI, Supplementary Enhancement Information) или фрагментов набора параметров применимости визуальной информации (VUI, Video Usability Information) (не показанной на чертеже). Анализатор 320 может анализировать/энтропийно декодировать принятую видеопоследовательность. Кодирование кодированной видеопоследовательности может выполняться в соответствии с технологией или стандартом видеокодирования и может следовать принципам, хорошо известным специалисту в этой области техники, включая кодирование с переменной длиной, кодирование по методу Хаффмена, арифметическое кодирование с учетом или без учета контекстной зависимости и т.д. Анализатор 320 может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного из параметров, соответствующих группе. Подгруппы могут включать группы изображений (GOP, Groups of Pictures), изображения, тайлы, слайсы, макроблоки, блоки кодирования (CU, Coding Unit), блоки преобразования (TU, Transform Unit), блоки предсказания (PU, Prediction Unit) и т.д. Анализатор 320 также может извлекать из кодированной видеопоследовательности такую информацию как коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.[44] Video decoder 210 may include a parser 320 for recovering symbols 321 from an entropy coded video sequence. Categories of such symbols include, for example, information used to control the operation of decoder 210 as well as potential information to control a visualization device such as display 212 that may be associated with the decoder as shown in FIG. 2. Control information for the rendering device(s) may be transmitted, for example, in the format of Supplementary Enhancement Information (SEI) messages or Video Usability Information (VUI) parameter set fragments (not shown). The analyzer 320 may analyze/entropy decode the received video sequence. Encoding of the encoded video sequence may be performed in accordance with a video coding technology or standard, and may follow principles well known to one skilled in the art, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The analyzer 320 may extract from the encoded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one of the parameters corresponding to the group. Subgroups may include groups of pictures (GOP, Groups of Pictures), images, tiles, slices, macroblocks, coding units (CU, Coding Unit), transformation units (TU, Transform Unit), prediction units (PU, Prediction Unit), etc. d. The analyzer 320 may also extract information such as transform coefficients, quantizer parameter values, motion vectors, and so on from the encoded video sequence.

[45] Анализатор 320 может выполнять операцию энтропийного декодирования/анализа видеопоследовательности, принятой из буферной памяти 315, для создания символов 321.[45] The analyzer 320 may perform an entropy decoding/analysis operation of the video sequence received from the buffer memory 315 to create symbols 321.

[46] При восстановлении символов 321 может быть задействовано множество различных блоков, в зависимости от типа кодированного видеоизображения или его части (например: от взаимосвязанных или внутренних изображений и блоков) и других факторов. Задействованными в этом процессе блоками и способом их взаимодействия может управлять информация управления подгруппами, которая анализируется на основе кодированной видеопоследовательности анализатором 320. Поток такой информации управления подгруппами между анализатором 320 и множеством блоков, описываемый ниже, не изображен на чертеже для простоты изложения.[46] Many different blocks may be involved in symbol recovery 321, depending on the type of encoded video image or part thereof (eg, interconnected or inter-images and blocks) and other factors. The blocks involved in this process and the way they interact can be controlled by subgroup control information that is parsed based on the encoded video sequence by the parser 320. The flow of such subgroup control information between the parser 320 and the plurality of blocks, described below, is not shown in the figure for simplicity.

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

[48] Один из блоков может представлять собой блок 351 преобразователя видеоформата/обратного преобразования. Блок 351 преобразователя видеоформата/обратного преобразования может принимать квантованный коэффициент преобразования, а также управляющую информацию, включая информацию об используемом способе преобразования, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д., в качестве символа(-ов) 321 из анализатора 320. Блок 351 преобразователя видеоформата/обратного преобразования может выводить блоки, содержащие значения отсчетов, которые могут подаваться в агрегатор 355.[48] One of the blocks may be a block 351 converter video format/deconversion. The video format converter/inverse transform block 351 can receive the quantized transform coefficient as well as control information, including information about the transform method used, block size, quantization factor, quantization scaling matrices, etc., as symbol(s) 321 from the parser. 320. The video format converter/deconvert block 351 may output blocks containing sample values that may be supplied to the aggregator 355.

[49] В некоторых случаях выходные отсчеты блока 351 преобразователя видеоформата/обратного преобразования могут принадлежать внутренне кодированному блоку; то есть блоку, который не использует информацию предсказания из предварительно восстановленных изображений, но может использовать информацию предсказания из предварительно восстановленных частей текущего изображения. Такая информация предсказания может предоставляться блоком 352 внутреннего предсказания. В некоторых случаях блок 352 внутреннего предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, с использованием окружающей уже восстановленной информации, извлеченной из текущего (частично восстановленного) изображения, хранимого в памяти 358 текущих изображений. Агрегатор 355 в некоторых случаях добавляет на основе отсчетов информацию предсказания, сгенерированную блоком 352 внутреннего предсказания, в выходную информацию отсчетов, представленную блоком 351 преобразователя видеоформата/обратного преобразования.[49] In some cases, the output samples of the video format converter/invert block 351 may belong to an intra-coded block; that is, 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 intra prediction block 352 . In some cases, intra prediction block 352 generates a block of the same size and shape as the block being reconstructed, using already reconstructed surrounding information extracted from the current (partially reconstructed) image stored in current image memory 358. The aggregator 355 in some cases adds, based on the samples, the prediction information generated by the intra prediction block 352 to the sample output information provided by the video format converter/inverse transform block 351 .

[50] В других случаях выходные отсчеты блока 351 преобразователя видеоформата/обратного преобразования могут принадлежать взаимно кодированному блоку с потенциальной компенсацией движения. В таком случае блок 353 предсказания компенсации движения может осуществлять доступ к памяти 357 опорных изображений для извлечения отсчетов, используемых для предсказания. После компенсации движения извлеченные образцы в соответствии с символами 321, принадлежащими блоку, могут добавляться агрегатором 355 к выходным данным блока 351 преобразователя видеоформата/обратного преобразования (в этом случае эти данные называются остаточными отсчетами или остаточным сигналом), для того чтобы сгенерировать выходную информацию отсчетов. Адреса в памяти 357 опорных изображений, по которым блок 353 предсказания компенсации движения извлекает отсчеты предсказания, могут управляться векторами движения. Векторы движения могут быть доступны блоку 353 предсказания компенсации движения в виде символов 321, которые могут, например, характеризоваться компонентами х, Y и опорными изображениями. Компенсация движения также может включать интерполяцию значений отсчетов при извлечении из памяти 357 опорных изображений, если используются точные векторы движения подотсчетов, механизмы предсказания векторов движения и т.д.[50] In other cases, the output samples of the video format converter/inverse transform block 351 may belong to an inter-coded block with potential motion compensation. In such a case, the motion compensation predictor 353 may access the reference picture memory 357 to retrieve samples used for prediction. After motion compensation, the extracted samples according to the symbols 321 belonging to the block may be added by the aggregator 355 to the output data of the video formatter/deconverter block 351 (in this case, this data is called residual samples or residual signal) in order to generate sample output information. The addresses in the reference picture memory 357 from which the motion compensation predictor 353 derives prediction samples may be controlled by motion vectors. The motion vectors may be available to the motion compensation predictor 353 as symbols 321, which may, for example, be characterized by x, y components, and reference pictures. Motion compensation may also include interpolation of sample values when retrieving reference pictures from memory 357 if accurate subsample motion vectors, motion vector prediction mechanisms, etc. are used.

[51] Выходные отсчеты агрегатора 355 могут обрабатываться с использованием различных технологий контурной фильтрации в блоке 356 контурного фильтра. Технологии сжатия видеоданных могут включать технологии внутриконтурной фильтрации, которые управляются параметрами, включаемыми в кодированный битовый видеопоток, и становятся доступными блоку 356 контурной фильтрации в виде символов 321 из анализатора 320, но также могут реагировать на метаинформацию, получаемую в процессе декодирования предшествующих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные, подвергшиеся контурной фильтрации значения отсчетов.[51] The output samples of the aggregator 355 may be processed using various loop filtering technologies in the loop filter block 356 . The video compression technologies may include in-loop filtering technologies that are controlled by parameters included in the encoded video bitstream and made available to the loop filtering unit 356 as symbols 321 from parser 320, but may also be responsive to ) parts of an encoded image or encoded video sequence, as well as respond to previously restored sample values subjected to contour filtering.

[52] Выход блока 356 контурного фильтра может представлять собой поток отсчетов, который может подаваться на устройство визуализации, такое как дисплей 212, а также сохраняться в памяти 357 опорных изображений для последующего использования в межкадровом предсказании.[52] The output of loop filter block 356 may be a stream of samples that may be provided to a renderer such as display 212 and also stored in reference picture memory 357 for later use in inter-picture prediction.

[53] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для последующего предсказания. После того как кодированное изображение полностью восстановлено и идентифицировано как опорное изображение (например, анализатором 320), текущее опорное изображение, сохраненное в памяти 358 текущих изображений, может стать частью памяти 357 опорных изображений, и обновленная память текущих изображений может перераспределяться перед началом восстановления следующего кодированного изображения.[53] Certain encoded pictures after full recovery can be used as reference pictures for subsequent prediction. Once the encoded picture is fully recovered and identified as a reference picture (e.g., by parser 320), the current reference picture stored in current picture memory 358 may become part of reference picture memory 357 and the updated current picture memory may be reallocated before the next encoded picture is decommissioned. Images.

[54] Видеодекодер 210 может выполнять операции декодирования в соответствии с заранее заданной технологией сжатия видеоданных, которая может документироваться в стандарте, таком как рекомендация Н.265 ITU-T. Кодированная видеопоследовательность может соответствовать синтаксису, указанному используемыми технологией или стандартом сжатия видеоданных, в том смысле, что она придерживается синтаксиса технологии или стандарта сжатия видеоданных, заданным в документе или стандарте по технологии сжатия видеоданных и, в особенности, в профильных документах этих стандартов. Кроме того, для соответствия некоторым технологиям или стандартам сжатия видеоданных сложность кодированных видеопоследовательностей может находиться в пределах, определенных уровнем технологии или стандарта сжатия видеоданных. В некоторых случаях уровни сложности ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для восстановления (измеряемую, например, в миллионах отсчетов в секунду), максимальный размер опорного изображения и т.д. Уровни сложности могут также в некоторых случаях ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сообщаемыми в кодированной видеопоследовательности.[54] Video decoder 210 may perform decoding operations in accordance with a predetermined video data compression technology, which may be documented in a standard such as ITU-T H.265 recommendation. The encoded video sequence may conform to the syntax specified by the video compression technology or standard being used, in the sense that it adheres to the syntax of the video compression technology or standard specified in a video compression technology document or standard, and especially in the related documents of those standards. In addition, in order to comply with some video compression technologies or standards, the complexity of the encoded video sequences may be within limits defined by the video compression technology level or standard. In some cases, complexity levels limit the maximum image size, maximum frame rate, maximum recovery sample rate (measured in Ms/s, for example), maximum reference image size, and so on. Complexity levels may also be limited in some cases by Hypothetical Reference Decoder (HRD) specifications and metadata for managing the HRD buffer reported in the encoded video sequence.

[55] Согласно примеру осуществления, приемник 310 может принимать дополнительные (избыточные) данные вместе с кодированными видеоданными. Дополнительные данные могут вставляться в кодированную видеопоследовательность(-и). Дополнительные данные могут использоваться видеодекодером 210 для корректного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут предоставляться в виде, например, временных, пространственных или усовершенствованных уровней SNR, избыточных слайсов, избыточных изображений, кодов с прямым исправлением ошибок и т.д.[55] According to an exemplary embodiment, receiver 310 may receive additional (redundant) data along with encoded video data. Additional data may be inserted into the encoded video sequence(s). The additional data may be used by video decoder 210 to correctly decode the data and/or to more accurately reconstruct the original video data. Additional data may be provided in the form of, for example, temporal, spatial, or enhanced SNR levels, redundant slices, redundant pictures, forward error correction codes, and so on.

[56] На фиг. 4 показан пример функциональной блок-схемы видеокодера 203, связанного с источником 201 видеосигнала, в соответствии с примером раскрытия настоящего изобретения.[56] FIG. 4 shows an exemplary functional block diagram of a video encoder 203 associated with a video source 201, in accordance with an exemplary disclosure of the present invention.

[57] Видеокодер 203 может содержать, например, кодер, который является кодером 430 источника, ядро 432 кодирования, (локальный) декодер 433, память 434 опорных изображений, предсказатель 435, передатчик 440, энтропийный кодер 445, контроллер 450 и канал 460.[57] The video encoder 203 may include, for example, an encoder that is a source encoder 430, an encoding core 432, a (local) decoder 433, a reference picture memory 434, a predictor 435, a transmitter 440, an entropy encoder 445, a controller 450, and a channel 460.

[58] Кодер 203 может принимать отсчеты видеосигнала из источника 201 видеосигнала (не являющегося частью кодера), который может захватывать видеоизображение(-я), подлежащее кодированию кодером 203.[58] The encoder 203 may receive video samples from a video source 201 (not part of the encoder) that may capture the video image(s) to be encoded by the encoder 203.

[59] Источник 201 видеосигнала может предоставлять исходные видеопоследовательности, подлежащие кодированию кодером 203, в виде цифрового видеопотока отсчетов, который может иметь любую подходящую битовую глубину (например: х бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB, …) и любую подходящую структуру отсчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В обслуживающей медийной системе источник 201 видеосигнала может представлять собой запоминающее устройство, на котором хранятся ранее подготовленные видеоданные. В системе видеоконференц-связи источник 203 видеосигнала может представлять собой камеру, которая захватывает локальную графическую информацию в форме видеопоследовательности. Видеоданные могут предоставляться в виде множества отдельных изображений, которые передают движение при последовательном просмотре. Непосредственно изображения могут быть организованы как пространственный массив пикселей, каждый из которых может содержать одну или более отсчетов, в зависимости от используемых структуры дискретизации, цветового пространства и т.д. Специалисту в этой области техники нетрудно понять взаимосвязь между пикселями и отсчетами. В последующем описании делается акцент на отсчеты.[59] The video source 201 may provide the source video sequences to be encoded by the encoder 203 as a digital video sample stream that may have any suitable bit depth (eg: x bit, 10 bit, 12 bit, ...), any color space (eg, VT.601 Y CrCB, RGB, …) and any suitable sample structure (for example, Y CrCb 4:2:0, Y CrCb 4:4:4). In the serving media system, the video source 201 may be a storage device that stores previously prepared video data. In a videoconferencing system, video source 203 may be a camera that captures local graphics information in the form of a video sequence. The video data may be provided as a plurality of individual images that convey motion when viewed sequentially. The images themselves can be organized as a spatial array of pixels, each of which may contain one or more samples, depending on the sampling structure, color space, etc. used. It is not difficult for a person skilled in the art to understand the relationship between pixels and samples. In the following description, emphasis is placed on readings.

[60] Согласно примеру осуществления, кодер 203 может кодировать и сжимать изображения исходной видеопоследовательности для преобразования ее в кодированную видеопоследовательность 443 в реальном времени или в соответствии с любыми другими ограничениями по времени, в зависимости от предъявляемых требований. Обеспечение подходящей скорости кодирования может являться одной из функций, выполняемых контроллером 450. Контроллер 450 может также управлять другими функциональными блоками, как описывается ниже, и может функционально соединяться с этими блоками. Для простоты эта связь не обозначена на чертеже. Параметры, устанавливаемые контроллером 450, могут включать в свой состав параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда для технологий оптимизации искажения от скорости передачи, …), размер изображения, уровень группы изображений (GOP), максимальный диапазон поиска вектора движения и т.д. Специалист в этой области техники может легко идентифицировать другие функции контроллера 450, в той мере, в какой они могут относиться к видеокодеру (203), оптимизированному для структуры определенной системы.[60] According to an exemplary embodiment, the encoder 203 may encode and compress the images of the original video sequence to convert it to the encoded video sequence 443 in real time or in accordance with any other time constraints, depending on the requirements. Providing a suitable code rate may be one of the functions performed by controller 450. Controller 450 may also control other functional blocks, as described below, and may be operatively connected to these blocks. For simplicity, this connection is not indicated in the drawing. The parameters set by the controller 450 may include parameters related to rate control (picture skip, quantizer, lambda value for rate distortion optimization technologies, ...), picture size, group of pictures (GOP) level, maximum vector search range movements, etc. One skilled in the art can readily identify other functions of controller 450 as they may relate to video encoder (203) optimized for a particular system design.

[61] Некоторые видеокодеры работают в режиме, который специалисту в этой области техники известен как "контур кодирования". В упрощенном описании контур кодирования может состоять из частей кодирования исходного кодера 430 (ответственного за создание символов на основе входного изображения, подлежащего кодированию, и опорного изображения(-ий)) и встроенного в кодер 203 (локального) декодера 433, который восстанавливает символы для создания данных отсчетов, которые (удаленный) декодер также должен создавать, если сжатие между символами и кодированным битовым видеопотоком выполняется без потерь согласно определенным технологиям сжатия видеоданных. Этот восстановленный поток отсчетов может записываться в память 434 опорных изображений. Поскольку декодирование символьного потока приводит к точным битовым результатам независимо от местоположения декодера (локальное или удаленное), память опорных изображений также содержит точные биты между локальным кодером и удаленным кодером. Другими словами, подсистема предсказания кодера "видит" в качестве отсчетов опорных изображений в точности те же значения отсчетов, которые должен "увидеть" декодер при использовании предсказания в процессе декодирования. Этот фундаментальный принцип синхронности опорных изображений (и результирующий сдвиг, если синхронность не может поддерживаться, например, из-за ошибок в канале) известен специалисту в этой области техники.[61] Some video encoders operate in a mode known to those skilled in the art as "coding loop". In a simplified description, an encoding loop may consist of the encoding portions of a source encoder 430 (responsible for generating symbols based on the input image to be encoded and the reference image(s)) and a (local) decoder 433 built into the encoder 203 that decodes the symbols to create sample data that the (remote) decoder must also produce if the compression between the symbols and the encoded video bitstream is lossless according to certain video compression techniques. This reconstructed sample stream may be recorded in reference picture memory 434 . Because character stream decoding produces bit-accurate results regardless of the decoder's location (local or remote), the reference picture memory also contains exact bits between the local encoder and the remote encoder. In other words, the encoder's prediction subsystem "sees" as reference picture samples exactly the same sample values that the decoder would "see" when using prediction in the decoding process. This fundamental principle of reference picture synchronism (and the resulting shift if synchronism cannot be maintained due to, for example, channel errors) is known to those skilled in the art.

[62] Работа "локального" декодера 433, по существу, может быть аналогична функционированию "удаленного" декодера 210, который уже подробно описывался выше со ссылкой на фиг. 3. Однако, поскольку символы доступны и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером 445 и анализатором 320 может выполняться без потерь, часть энтропийного декодирования декодера 210, включая канал 312, приемник 310, буферную память 315 и анализатор 320, может быть не полностью реализована в локальном декодере 433.[62] The operation of the "local" decoder 433 may be substantially similar to the operation of the "remote" decoder 210, which has already been described in detail above with reference to FIG. 3. However, since the symbols are available and encoding/decoding of the symbols into the encoded video sequence by the entropy encoder 445 and parser 320 may be lossless, the entropy decoding portion of decoder 210, including channel 312, receiver 310, buffer memory 315, and parser 320, may not be completely implemented in the local 433 decoder.

[63] Здесь следует заметить, что любая технология декодирования, за исключением анализа/энтропийного декодирования, используемая в декодере, может по существу в идентичном функциональном виде потребоваться в соответствующем кодере. По этой причине при раскрытии предмета настоящего изобретения акцент делается на работе декодера. Описание технологий кодера может быть сокращено, поскольку они могут быть обратными по отношению к всесторонне описанным технологиям декодера. Более подробного описания, приводимого ниже, требуют только определенные области.[63] It should be noted here that any decoding technique, with the exception of analysis/entropy decoding, used in a decoder may be required in a substantially identical functional form in a corresponding encoder. For this reason, in the disclosure of the subject matter of the present invention, emphasis is placed on the operation of the decoder. The description of the encoder technologies may be abbreviated as they may be inverse to the comprehensively described decoder technologies. The more detailed description below is only required for certain areas.

[64] Одной из функций кодера 430 источника может являться выполнение кодирования с предсказанием и компенсацией движения, при котором с предсказанием кодируются входные кадры со ссылкой на один или более ранее кодированных кадров видеопоследовательности, обозначаемых как "опорные кадры". Таким образом, ядро 432 кодирования кодирует разности между блоками пикселей входного кадра и блоками пикселей опорного кадра(-ов), которые могут выбираться в качестве ссылки (-ок) предсказания на входной кадр.[64] One function of the source encoder 430 may be to perform motion-compensated predictive coding, in which input frames are predictively encoded with reference to one or more previously encoded frames of the video sequence, referred to as "reference frames". Thus, the coding core 432 encodes the differences between the pixel blocks of the input frame and the pixel blocks of the reference frame(s), which can be selected as the prediction reference(s) to the input frame.

[65] Локальный видеодекодер 433 может декодировать кодированные видеоданные или кадры, которые могут обозначаться как опорные кадры, на основе символов, созданных исходным кодером 430. Операции ядра 432 кодирования могут преимущественно являться процессами с потерями. Если кодированные видеоданные декодируются в видеодекодере (не показанном на фиг. 4), то восстановленная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер 433 дублирует процессы декодирования, которые могут выполняться видеодекодером с опорными кадрами, которые могут сохраняться в памяти 434 опорных изображений. Таким образом, кодер 203 может локально сохранять копии восстановленных опорных кадров, имеющие то же содержимое, что и восстановленные опорные кадры, которые должны быть получены видеодекодером на дальнем конце (отсутствие ошибок при передаче).[65] The local video decoder 433 may decode the encoded video data or frames, which may be referred to as anchor frames, based on the symbols generated by the source encoder 430. The operations of the encoding core 432 may advantageously be lossy processes. If the encoded video data is decoded in a video decoder (not shown in FIG. 4), then the reconstructed video sequence can typically be a copy of the original video sequence with some errors. The local video decoder 433 duplicates the decoding processes that may be performed by the video decoder with reference frames that may be stored in the reference picture memory 434 . Thus, the encoder 203 can locally store copies of the reconstructed key frames having the same content as the recovered key frames to be received by the far-end video decoder (no transmission errors).

[66] Предсказатель 435 может выполнять поиск с предсказанием для ядра 432 кодирования. То есть, для нового кадра, подлежащего кодированию, предсказатель 435 может осуществлять в памяти 434 опорных изображений поиск данных отсчетов (в качестве подходящих блоков опорных пикселей) или определенных метаданных, таких как векторы движения опорных изображений, формы блоков и т.д., которые могут служить в качестве подходящей ссылки предсказания для новых изображений. Предсказатель 435 может работать на основе блока отсчетов на блок пикселей для поиска подходящих ссылок предсказания. В некоторых случаях, определяемых результатами поиска, получаемыми предсказателем 435, входное изображение может характеризоваться ссылками предсказания, полученными на основе множества опорных изображений, хранимых в памяти 434 опорных изображений.[66] The predictor 435 may perform a predictive search for the encoding core 432 . That is, for a new frame to be encoded, predictor 435 may search reference picture memory 434 for sample data (as appropriate reference pixel blocks) or certain metadata such as reference picture motion vectors, block shapes, etc., which can serve as a suitable prediction reference for new images. Predictor 435 may operate on a block-per-pixel basis to find suitable prediction references. In some cases, determined by the search results obtained by the predictor 435, the input image may be characterized by prediction references obtained from a plurality of reference pictures stored in the reference picture memory 434 .

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

[68] К выходным данным всех упомянутых выше функциональных блоков может применяться энтропийное кодирование в энтропийном кодере 445. Энтропийный кодер транслирует символы, сгенерированные различными функциональными блоками, в кодированную видеопоследовательность путем сжатия символов без потерь в соответствии с технологиями, известными специалисту в этой области техники, например, посредством кодирования по методу Хаффмена, кодирования с переменной длиной, арифметического кодирования.[68] The output of all the functional blocks mentioned above can be entropy encoded in an entropy encoder 445. The entropy encoder translates the symbols generated by the various functional blocks into an encoded video sequence by losslessly compressing the symbols in accordance with techniques known to one skilled in the art, for example, by Huffman coding, variable length coding, arithmetic coding.

[69] Передатчик 440 может буферизировать кодированную видеопоследовательность(-и), созданную энтропийным кодером 445, с целью подготовки ее для передачи по каналу 446 связи, который может представлять собой аппаратную/программную линию связи с запоминающим устройством, в котором должны храниться кодированные видеоданные. Передатчик 440 может объединять кодированные видеоданные из видеокодера 430 с другими данными, подлежащими передаче, например, с кодированными потоками звуковых и/или служебных данных (эти источники не показаны на чертеже).[69] Transmitter 440 may buffer the encoded video sequence(s) generated by entropy encoder 445 in order to prepare it for transmission over communication channel 446, which may be a hardware/software link to a storage device in which the encoded video data is to be stored. Transmitter 440 may combine the encoded video data from video encoder 430 with other data to be transmitted, such as encoded audio and/or service data streams (these sources are not shown).

[70] Контроллер 450 может управлять работой кодера 203. В процессе кодирования контроллер 450 может назначать каждому кодированному изображению определенный тип кодированного изображения, который может влиять на технологию кодирования, которая может применяться к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы: внутреннее изображение (Intra Picture, I-изображение), изображение с предсказанием (Predictive Picture, Р-изображение) или изображение с двунаправленным предсказанием (Bi-directionally Predictive Picture, В-изображение).[70] The controller 450 may control the operation of the encoder 203. During the encoding process, the controller 450 may assign to each encoded picture a certain type of encoded picture, which may affect the encoding technology that can be applied to the corresponding picture. For example, images can often be assigned the following types: intra picture (Intra Picture, I-picture), predictive picture (Predictive Picture, P-picture), or bi-directionally predictive picture (Bi-directionally Predictive Picture, B-picture).

[71] Внутреннее изображение (I-изображение) может представлять собой изображение, которое может кодироваться и декодироваться без использования любого другого кадра в последовательности в качестве источника предсказания. Некоторые видеокодеки предусматривают различные типы внутренних изображений, включая, например, изображения обновления независимого декодера (IDR, Independent Decoder Refresh). Специалист в этой области техники осведомлен об этих вариантах I-изображений, их применениях и признаках.[71] An intra-picture (I-picture) may be an image that can be encoded and decoded without using any other frame in the sequence as a prediction source. Some video codecs provide various types of internal images, including, for example, Independent Decoder Refresh (IDR) images. One of skill in the art is aware of these I-image variants, their uses and features.

[72] Изображение с предсказанием (Р-изображение) может кодироваться и декодироваться с использованием внутреннего или взаимного предсказания с помощью не более чем одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.[72] A predictive picture (P-picture) can be encoded and decoded using intra or inter prediction with no more than one motion vector and a reference index to predict sample values of each block.

[73] Двунаправленное изображение с предсказанием (В-изображение) может кодироваться и декодироваться с использованием внутреннего или взаимного предсказания с помощью не более чем двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Подобным образом, изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.[73] A bi-directional predictive picture (B-picture) can be encoded and decoded using intra or inter prediction with no more than 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.

[74] Исходные изображения в общем случае могут пространственно разделяться на множество блоков отсчетов (например, блоков отсчетов 4×4, 8×8, 4×8 или 16×16) и кодироваться в режиме "блок за блоком". Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки как определяется назначением кодирования, применимого к соответствующим изображениям блоков. Например, блоки I-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на уже кодированные блоки того же изображения (пространственное предсказание или внутреннее предсказание). Блоки пикселей Р-изображений могут кодироваться без предсказания, с использованием пространственного предсказания или временного предсказания со ссылкой на одно предварительно кодированное опорное изображение. Блоки В-изображений могут кодироваться без предсказания, с использованием пространственного предсказания или временного предсказания со ссылкой на одно или два предварительно кодированных опорных изображений.[74] Source images can generally be spatially divided into multiple sample blocks (eg, 4×4, 8×8, 4×8, or 16×16 sample blocks) and encoded in a block-by-block fashion. The blocks may be predictively encoded with reference to other (already encoded) blocks as determined by the purpose of the encoding applicable to the corresponding block images. For example, I-picture blocks may be encoded without prediction or predictively with reference to already encoded blocks of the same picture (spatial prediction or intra prediction). P-picture pixel blocks may be encoded without prediction, using spatial prediction or temporal prediction with reference to one pre-coded reference picture. Blocks of B-pictures may be encoded without prediction, using spatial prediction or temporal prediction with reference to one or two pre-coded reference pictures.

[75] Видеокодер 430 может выполнять операции кодирования в соответствии с заранее заданной технологией или стандартом кодирования видеоданных, таким как рекомендация Н.265 ITU-T. В процессе функционирования видеокодер 430 может выполнять различные операции сжатия, включая операции кодирования с предсказанием, в которых используется временная или пространственная избыточность во входной видеопоследовательности. Кодированные видеоданные, таким образом, могут соответствовать синтаксису, указанному используемыми технологией или стандартом видеокодирования.[75] Video encoder 430 may perform encoding operations in accordance with a predetermined video coding technology or standard, such as ITU-T H.265 recommendation. In operation, video encoder 430 may perform various compression operations, including predictive coding operations that exploit temporal or spatial redundancy in the input video sequence. The encoded video data may thus conform to the syntax specified by the video coding technology or standard used.

[76] Согласно примеру осуществления, передатчик 440 может передавать дополнительные данные вместе с кодированной видеоинформацией. Видеокодер 430 может включать такие данные в кодированную видеопоследовательность. Дополнительные данные могут включать в свой состав усовершенствованные временные/пространственные/SNPv уровни, другие виды избыточных данных, такие как избыточные изображения и слайсы, сообщения дополнительной усовершенствованной информации (SEI), фрагменты набора параметров применимости визуальной информации (VUI) и т.д.[76] According to an exemplary embodiment, transmitter 440 may transmit additional data along with encoded video information. Video encoder 430 may include such data in an encoded video sequence. Additional data may include advanced temporal/spatial/SNPv layers, other types of redundant data such as redundant images and slices, enhanced supplemental information (SEI) messages, visual information applicability parameter set (VUI) fragments, and so on.

[77] Кодеры и декодеры, согласно раскрытию настоящего изобретения, могут реализовывать управление буфером декодированных изображений с учетом такого буфера декодированных изображений (DPB, Decoded Picture Buffer), например, как память 357 опорных изображений и память 434 опорных изображений.[77] Encoders and decoders according to the disclosure of the present invention may implement decoded picture buffer management in view of such a decoded picture buffer (DPB) such as reference picture memory 357 and reference picture memory 434, for example.

[78] В буфере декодированных изображений могут храниться декодированные изображения, которые должны быть доступны для ссылки с целью восстановления последующих изображений в процессе декодирования. Например, изображения, хранимые в буфере декодированных изображений, могут быть доступны для использования в качестве ссылок в процессе предсказания одного или более последующих изображений.[78] The decoded picture buffer may store decoded pictures that need to be available for reference in order to reconstruct subsequent pictures during the decoding process. For example, pictures stored in the decoded picture buffer may be available for use as references in the process of predicting one or more subsequent pictures.

[79] Кодеры и декодеры согласно раскрытию настоящего изобретения могут создавать и/или использовать один или более списков опорных изображений (например, синтаксический элемент "RefPicList[i]"), в каждом из которых перечисляются изображения, хранящиеся в буфере декодированных изображений. Например, каждый индекс в списке опорных изображений может относиться к соответствующему изображению в буфере декодированных изображений. Список опорных изображений может, например, ссылаться на список опорных изображений, которые могут использоваться для взаимного предсказания.[79] Encoders and decoders according to the disclosure of the present invention may create and/or use one or more reference picture lists (eg, the "RefPicList[i]" syntax element), each of which lists the pictures stored in the decoded picture buffer. For example, each index in the reference picture list may refer to a corresponding picture in the decoded picture buffer. The reference picture list may, for example, refer to a list of reference pictures that can be used for inter prediction.

[80] Ниже описываются некоторые аспекты управления буфером декодированных изображений в соответствии с раскрытием настоящего изобретения.[80] Some aspects of decoded picture buffer management in accordance with the disclosure of the present invention are described below.

[81] Некоторые примеры раскрытия настоящего изобретения позволяют улучшить способ управления буфером декодированных изображений с помощью, например, настройки адаптации временного подуровня. Термин "подуровень" может ссылаться на временный масштабируемый уровень временного масштабируемого битового потока, который содержит блоки VCLNAL с конкретным значением переменной TemporalId и связанные блоки, не являющиеся блоками VCLNAL.[81] Some examples of the disclosure of the present invention allow to improve the method of managing the decoded picture buffer by, for example, adjusting the adaptation of the temporal sublayer. The term "sublayer" may refer to a temporal scalable layer of a temporal scalable bitstream that contains VCLNAL units with a particular TemporalId variable value and associated non-VCLNAL units.

[82] Например, согласно примеру осуществления, блоки уровня абстракции сети (NAL), а именно: "TRAIL_NUT", "STSA_NUT", "RASL_NUT" и "RADL_NUT", переопределяются как ("TRAIL_N", "TRAIL_R"), ("STSA_N", "STSA_R"), ("RASL_N, RASL_R"), и ("RADL_N, RASL_R"), соответственно, для указания являются ли изображения в том же временном подуровне опорными изображениями. Изображения, отличные от опорных, с временным идентификатором, равным идентификатору текущего изображения, подлежащего декодированию, могут включаться в список RefPicList[i].[82] For example, according to the exemplary embodiment, Network Abstraction Layer (NAL) blocks, namely: "TRAIL_NUT", "STSA_NUT", "RASL_NUT", and "RADL_NUT", are redefined as ("TRAIL_N", "TRAIL_R"), (" STSA_N", "STSA_R"), ("RASL_N, RASL_R"), and ("RADL_N, RASL_R"), respectively, to indicate whether the pictures in the same temporal sublayer are reference pictures. Pictures other than reference pictures with a temp ID equal to the ID of the current picture to be decoded may be included in RefPicList[i].

[83] Согласно примеру осуществления, sps_max_dec_pic_buffering_minus1 сообщается для каждого наибольшего временного идентификатора в наборе параметров последовательности (SPS, Sequence Parameter Set).[83] According to an exemplary implementation, sps_max_dec_pic_buffering_minus1 is reported for each largest temporal identifier in the sequence parameter set (SPS, Sequence Parameter Set).

[84] Согласно примеру осуществления, список неиспользуемых опорных изображений для каждого наибольшего временного идентификатора сообщается в заголовке группы тайлов.[84] According to an exemplary embodiment, a list of unused reference pictures for each highest temporal identifier is reported in the tile group header.

[85] Согласно примеру осуществления, все опорные изображения с временным идентификатором (например, синтаксический элемент "TemporalId"), большим указанного наибольшего временного идентификатора (например, синтаксический элемент "HighestTid"), помечаются как "неиспользуемые для ссылки", если значение указанного наибольшего временного идентификатора не равно "sps_max_sub_layers_minus1".[85] According to an exemplary embodiment, all reference pictures with a temporal identifier (e.g., the "TemporalId" syntax element) greater than the specified highest temporal identifier (e.g., the "HighestTid" syntax element) are marked as "unused for reference" if the value of the specified highest temporary id is not equal to "sps_max_sub_layers_minus1".

[86] В соответствии с некоторыми примерами раскрытия настоящего изобретения блоки NAL, не используемые для предсказания и восстановления других блоков NAL, следующих за ними в том же временном подуровне, могут, возможно, отбрасываться из буфера декодированных изображений, в зависимости от целевого битового потока или доступного битового потока сети.[86] In accordance with some examples of the disclosure of the present invention, NAL units not used to predict and recover other NAL units following them in the same temporal sublayer may optionally be discarded from the decoded picture buffer, depending on the target bitstream or available network bitstream.

[87] Например, на фиг. 5 показан алгоритм, иллюстрирующий, каким образом кодеры и декодеры, согласно раскрытию настоящего изобретения, могут обрабатывать соответствующие блоки NAL путем анализа и интерпретации типов блоков NAL. Как показано на фиг. 5, декодер (или кодер) может выполнять процесс 500. Процесс 500 может включать анализ заголовка блока NAL (501) и идентификацию типа блока NAL, представленного в текущий момент (502). Далее декодер (или кодер) может определить, используется ли блок NAL, представленный в текущий момент, для предсказания и восстановления последующих блоков NAL в том же временном подуровне (503). На основе определения декодер (или кодер) может восстановить/переслать последующий блок NAL с использованием блока NAL, представленного в текущий момент (504), или, в альтернативном варианте, отбросить блок NAL, представленный в текущий момент, из буфера декодированных изображений (505) без использования блока NAL для предсказания и восстановления последующего блока NAL. Например, если определяется, что блок NAL, представленный в текущий момент, используется для предсказания и восстановления последующих блоков NAL в том же временном подуровне, декодер (или кодер) может восстановить/переслать последующий блок NAL с использованием блока NAL, представленного в текущий момент (504) и сохраненного в буфере декодированных изображений. Если блок NAL, представленный в текущий момент, не используется для предсказания и восстановления последующего блока NAL, декодер (или кодер) может отбросить блок NAL, представленный в текущий момент, из буфера декодированных изображений (505) без использования блока NAL для предсказания и восстановления последующего блока NAL. Предсказание и восстановление последующего блока NAL может относиться к декодированию, использующему буфер декодированных изображений, текущего изображения посредством предсказания и восстановления текущего изображения.[87] For example, in FIG. 5 is a flowchart illustrating how encoders and decoders according to the disclosure of the present invention can process respective NAL units by parsing and interpreting NAL unit types. As shown in FIG. 5, a decoder (or encoder) may perform process 500. Process 500 may include parsing a NAL unit header (501) and identifying the type of NAL unit currently present (502). Next, the decoder (or encoder) may determine if the NAL unit currently presented is being used to predict and reconstruct subsequent NAL units in the same temporal sublayer (503). Based on the definition, the decoder (or encoder) may recover/forward a subsequent NAL unit using the currently presented NAL unit (504), or alternatively discard the currently presented NAL unit from the decoded picture buffer (505) without using the NAL unit to predict and reconstruct the next NAL unit. For example, if it is determined that the currently presented NAL unit is used to predict and recover subsequent NAL units in the same temporal sublayer, the decoder (or encoder) may reconstruct/forward the subsequent NAL unit using the currently presented NAL unit ( 504) and stored in the decoded picture buffer. If the currently presented NAL unit is not used to predict and recover the subsequent NAL unit, the decoder (or encoder) may discard the currently presented NAL unit from the decoded picture buffer (505) without using the NAL unit to predict and recover the subsequent NAL unit. block NAL. Prediction and recovery of a subsequent NAL block may refer to decoding using a decoded picture buffer of a current picture by predicting and recovering the current picture.

[88] Примеры раскрытия настоящего изобретения могут использоваться отдельно или в сочетании друг с другом в любом порядке. Кроме того, каждый из способов, кодеров и декодеров, соответствующих раскрытию настоящего изобретения, могут быть реализованы схемой обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном из примеров один или более процессоров исполняют программу, записанную на машиночитаемом носителе, для выполнения функций способов, кодеров и декодеров, описанных в рамках раскрытия настоящего изобретения.[88] Examples of the disclosure of the present invention can be used alone or in combination with each other in any order. In addition, each of the methods, encoders and decoders according to the disclosure of the present invention may be implemented by a processing circuit (eg, one or more processors or one or more integrated circuits). In one example, one or more processors execute a program recorded on a computer-readable medium to perform the functions of the methods, encoders, and decoders described within the scope of the disclosure of the present invention.

[89] Как описано выше, типы блоков NAL, а именно: "TRAIL_NUT", "STSA_NUT", "RASL_NUT" и "RADL_NUT", разделяются и определяются как ("TRAIL_N", "TRAIL_R"), ("STSA_N", "STSA_R"), ("RASL_N, RASL_R"), и ("RADL_N, RASL_R") для указания не опорных изображений в том же подуровне. Соответственно, кодеры и декодеры, согласно раскрытию настоящего изобретения, могут использовать, например, блоки NAL, описанные ниже в таблице 1.[89] As described above, NAL unit types, namely "TRAIL_NUT", "STSA_NUT", "RASL_NUT", and "RADL_NUT", are separated and defined as ("TRAIL_N", "TRAIL_R"), ("STSA_N", " STSA_R"), ("RASL_N, RASL_R"), and ("RADL_N, RASL_R") to indicate non-reference pictures in the same sublayer. Accordingly, encoders and decoders according to the disclosure of the present invention may use, for example, the NAL units described in Table 1 below.

Figure 00000001
Figure 00000001

[90] Тип изображения подуровня может быть одним из представленных выше типов блока NAL. Если тип блока NAL изображения (например, синтаксический элемент "nal_unit_type") равен "TRAIL_N", "TSA_N", "STSA_N", "RADL_N" или "RASL_N", то изображение не является опорным в подуровне (SLNR). В противном случае, изображение является опорным в подуровне. Изображение SLNR может представлять собой изображение, содержащее отсчеты, которые не могут использоваться для взаимного предсказания в процессе декодирования последующих изображений того же подуровня в порядке декодирования. Опорное изображение подуровня может представлять собой изображение, содержащее отсчеты, которые могут использоваться для взаимного предсказания в процессе декодирования последующих изображений того же подуровня в порядке декодирования. Опорное изображение подуровня может также использоваться для взаимного предсказания в процессе декодирования последующих изображений более высокого подуровня в порядке декодирования.[90] The sublayer picture type may be one of the above NAL unit types. If the picture NAL unit type (eg, "nal_unit_type" syntax element) is "TRAIL_N", "TSA_N", "STSA_N", "RADL_N", or "RASL_N", then the picture is not a sublayer reference (SLNR). Otherwise, the image is the reference in the sublevel. An SLNR picture may be a picture containing samples that cannot be used for inter prediction in the process of decoding subsequent pictures of the same sublayer in the decoding order. A sublayer reference image may be an image containing samples that can be used for inter prediction in the decoding process of subsequent images of the same sublayer in decoding order. The sublayer reference picture may also be used for inter prediction in the process of decoding subsequent higher sublayer pictures in the decoding order.

[91] Путем предоставления блоков NAL (таких, например, как блоки VCLNAL), указывающих не опорные изображения, лишние блоки NAL могут отбрасываться для адаптации битовой скорости. Изображения, отличные от опорных, с временным идентификатором (указывающим временный подуровень, которому принадлежит изображение), равным идентификатору текущего изображения, могут включаться в список RefPicList[i]. В этом отношении, согласно примеру осуществления, не опорные изображения могут помечаться как "неиспользуемое опорное изображение" и могут сразу удаляться из буфера декодированных изображений.[91] By providing NAL units (such as, for example, VCLNAL units) indicating non-reference pictures, extra NAL units can be discarded for bit rate adaptation. Non-reference pictures with a temporal identifier (indicating the temporal sublayer to which the picture belongs) equal to the current picture's identifier may be included in RefPicList[i]. In this regard, according to an exemplary embodiment, non-reference pictures may be marked as an "unused reference picture" and may be immediately removed from the decoded picture buffer.

[92] Например, согласно примеру осуществления, декодер (или кодер) может определять, является ли изображение изображением SLNR, на основе блока NAL, связанного с изображением, и если изображение является изображением SLNR, отмечать изображение как "неиспользуемое опорное изображение". Изображение, которое может сохраняться в буфере декодированных изображений, может отмечаться путем ввода идентификатора в элемент, соответствующий изображению в списке опорных изображений, и идентификатор, например, может быть следующим: "не опорное изображение" или "неиспользуемое опорное изображение". Декодер (или кодер) может выполнять такие операции на шаге 503 процесса 500, как показано на фиг. 5. Далее декодер (или кодер) может удалять изображение из буфера декодированных изображений на основе значения отметки изображения. Декодер (или кодер) может выполнять такую операцию в качестве части шага 505 процесса 500, как показано на фиг. 5.[92] For example, according to an exemplary embodiment, a decoder (or encoder) may determine if an image is an SLNR image based on the NAL unit associated with the image, and if the image is an SLNR image, mark the image as an "unused reference image". A picture that can be stored in the decoded picture buffer may be marked by entering an identifier into an element corresponding to the picture in the reference picture list, and the identifier may be "not a reference picture" or "an unused reference picture", for example. The decoder (or encoder) may perform such operations at step 503 of process 500, as shown in FIG. 5. Next, the decoder (or encoder) may remove a picture from the decoded picture buffer based on the image's flag value. The decoder (or encoder) may perform such an operation as part of step 505 of process 500, as shown in FIG. five.

[93] Согласно примеру осуществления, списки опорных изображений "RefPicList[0]" и "RefPicList[1]" могут формироваться следующим образом:[93] According to an embodiment, reference picture lists "RefPicList[0]" and "RefPicList[1]" may be formed as follows:

Figure 00000002
Figure 00000002

Figure 00000003
Figure 00000003

[94] Согласно примеру осуществления, для согласования битового потока могут применяться ограничения. Например, в кодере или декодере может применяться ограничение, заключающееся в том, что в RefPicList[0] или RefPicList[1] отсутствует активный элемент, для которого истинно одно или более следующих утверждений: (1) значение элемента равно "не опорное изображение"; (2) изображение является изображением SLNR и его идентификатор "TemporalId" равен идентификатору текущего изображения.[94] According to an exemplary embodiment, restrictions may be applied to match the bitstream. For example, an encoder or decoder may apply the constraint that there is no active element in RefPicList[0] or RefPicList[1] for which one or more of the following is true: (1) the element's value is "not a reference picture"; (2) the image is an SLNR image and its "TemporalId" is equal to the current image's ID.

[95] Как описывалось выше, согласно примеру осуществления, синтаксический элемент "sps_max_dec_pic_buffering_minus1" может сигнализироваться для каждого наибольшего временного идентификатора (например, синтаксический элемент "HighestTid") в SPS.[95] As described above, according to the exemplary embodiment, the "sps_max_dec_pic_buffering_minus1" syntax element may be signaled for each highest temporal identifier (eg, the "HighestTid" syntax element) in the SPS.

[96] Значение переменной "HighestTid" может определяться внешними средствами, если они доступны. В противном случае, значение "HighestTid" может устанавливаться равным значению синтаксического элемента "sps_max_sub_layers_minus1". Затем декодер может оценить максимальный требуемый размер буфера декодированных изображений для заданного значения "HighestTid".[96] The value of the variable "HighestTid" may be determined by external means, if available. Otherwise, the "HighestTid" value may be set to the value of the "sps_max_sub_layers_minus1" syntax element. The decoder may then estimate the maximum required decoded picture buffer size for a given value of "HighestTid".

[97] Согласно примеру осуществления, SPS может включать типовой синтаксис, показанный в качестве примера в таблице 2.[97] According to an exemplary embodiment, the SPS may include the exemplary syntax shown in Table 2 as an example.

Figure 00000004
Figure 00000004

[98] Значение "sps_max_dec_pic_buffering_minus1[i]" плюс 1 указывает максимальный требуемый размер буфера декодированных изображений для кодированной видеопоследовательности (CVS, Coded Video Sequence) в блоках буферов хранения изображений, если значение "HighestTid" равно i. Значение "sps_max_dec_pic_buffering_ minus1[i]" может находиться в диапазоне от 0 до "MaxDpbSize" - 1 включительно, где "MaxDpbSize" указывается в другом месте.[98] The value "sps_max_dec_pic_buffering_minus1[i]" plus 1 indicates the maximum required decoded picture buffer size for the coded video sequence (CVS, Coded Video Sequence) in picture storage buffer blocks if the value "HighestTid" is equal to i. The value of "sps_max_dec_pic_buffering_ minus1[i]" can range from 0 to "MaxDpbSize" - 1 inclusive, where "MaxDpbSize" is specified elsewhere.

[99] Как описывается выше, в примере список неиспользуемых опорных изображений для каждого наибольшего временного идентификатора сообщается в заголовке группы тайлов.[99] As described above, in the example, a list of unused reference pictures for each highest temporal identifier is reported in the tile group header.

[100] В зависимости от значения "HighestTid" некоторые опорные изображения каждого временного подуровня могут не использоваться в качестве ссылки для последующих изображений. Согласно примеру осуществления, неиспользуемые опорные изображения, соответствующие каждому значению "HighestTid" в заголовке группы тайлов, могут сообщаться явным образом. Путем явной сигнализации неиспользуемых опорных изображений, соответствующих каждому значению "HighestTid" в заголовке группы тайлов, неиспользуемые декодированные опорные изображения могут сразу удаляться из DPB.[100] Depending on the value of "HighestTid", some reference pictures of each temporal sublayer may not be used as a reference for subsequent pictures. According to an exemplary embodiment, unused reference pictures corresponding to each "HighestTid" value in a tile group header may be explicitly reported. By explicitly signaling unused reference pictures corresponding to each "HighestTid" value in the tile group header, unused decoded reference pictures can be immediately removed from the DPB.

[101] Согласно примеру осуществления, SPS может включать типовой синтаксис, показанный в качестве примера в таблице 3.[101] According to an exemplary embodiment, the SPS may include the exemplary syntax shown in Table 3 as an example.

Figure 00000005
Figure 00000005

[102] Значение "unused_ref_pic_signaling_enabled_flag", равное 0, указывает на то, что "num_unused_ref_pic" и "delta_poc_unused_ref_pic[i]" отсутствуют в заголовке группы тайлов, и неявно определяется интервал времени удаления декодированного изображения из DPB. Значение "unused_ref_pic_signaling_enabled_flag", равное 1, указывает на то, что "num_unused_ref_pic" и "delta_poc_unused_ref_pic[i]" находятся в заголовке группы тайлов, и посредством анализа "delta_poc_unused_ref_pic[i]" явно определяется интервал времени удаления декодированного изображения из DPB.[102] The value of "unused_ref_pic_signaling_enabled_flag" equal to 0 indicates that "num_unused_ref_pic" and "delta_poc_unused_ref_pic[i]" are not present in the tile group header, and the decoded image removal time interval from the DPB is implicitly determined. The value of "unused_ref_pic_signaling_enabled_flag" equal to 1 indicates that "num_unused_ref_pic" and "delta_poc_unused_ref_pic[i]" are in the tile group header, and by parsing "delta_poc_unused_ref_pic[i]", the decoded picture removal time interval from the DPB is explicitly determined.

[103] Согласно примеру осуществления, заголовок группы тайлов может включать типовой синтаксис, показанный в качестве примера в таблице 4.[103] According to an exemplary embodiment, a tile group header may include the exemplary syntax shown in Table 4 as an example.

Figure 00000006
Figure 00000006

[104] Значение "num_unused_ref_pic" указывает количество элементов для неиспользуемых опорных изображений. Если они отсутствуют, значение этого поля может устанавливаться равным 0.[104] The value "num_unused_ref_pic" indicates the number of elements for unused reference pictures. If they are absent, the value of this field can be set to 0.

[105] Значение "delta_poc_unused_ref_pic[i]" указывает абсолютную разность между порядковыми значениями счетчика текущего изображения и неиспользуемого декодированного опорного изображения, на которое ссылается i-й элемент. Значение "delta_poc_unused_ref_pic[i]" может находиться в диапазоне от 0 до 215-1 включительно.[105] The value "delta_poc_unused_ref_pic[i]" indicates the absolute difference between the ordinal values of the counter of the current picture and the unused decoded reference picture referred to by the i-th element. The value of "delta_poc_unused_ref_pic[i]" may range from 0 to 2 15 -1 inclusive.

[106] Если "unused_ref_pic_signaling_enabled_flag" равно 1, применимо следующее:[106] If "unused_ref_pic_signaling_enabled_flag" is 1, the following applies:

Figure 00000007
Figure 00000007

[107] Согласно примеру осуществления, декодер (или кодер) может определять, должно ли изображение отмечаться как "неиспользуемое опорное изображение", на основе представленного выше определения. Декодер (или кодер) могут выполнять такие операции на шаге 503 процесса 500, показанного на фиг. 5. Далее декодер (или кодер) может удалять изображение из буфера декодированных изображений на основе отмеченного изображения. Декодер (или кодер) может выполнять такую операцию в качестве части шага 505 процесса 500, показанного на фиг. 5.[107] According to an exemplary embodiment, a decoder (or encoder) may determine whether a picture should be marked as an "unused reference picture" based on the definition above. The decoder (or encoder) may perform such operations at step 503 of the process 500 shown in FIG. 5. Next, the decoder (or encoder) may remove a picture from the decoded picture buffer based on the marked picture. The decoder (or encoder) may perform such an operation as part of step 505 of process 500 shown in FIG. five.

[108] В соответствии с аспектом примера осуществления все опорные изображения с "Temporal Id", большим HighestTid, могут отмечаться как "неиспользуемые для ссылки", если значение "HighestTid" не равно "sps_max_sub_layers_minus1".[108] According to an aspect of the exemplary embodiment, all reference pictures with a "Temporal Id" greater than HighestTid may be marked as "unused for reference" if the value of "HighestTid" is not equal to "sps_max_sub_layers_minus1".

[109] Значение "HighestTid" может сразу заменяться внешними средствами. Процесс извлечения битового подпотока может применяться с использованием значения "HighestTid" в качестве входного.[109] The "HighestTid" value can be directly replaced by external means. The bit substream extraction process may be applied using the "HighestTid" value as input.

[110] Например, процесс может вызываться один раз для изображения после декодирования заголовка группы тайлов и процесса декодирования для создания списка опорных изображений для группы тайлов, но перед декодированием данных группы тайлов. В результате выполнения процесса одно или более опорных изображений отмечаются в DPB как "неиспользуемое для ссылки" или "используемое для долгосрочной ссылки".[110] For example, the process may be called once per image after decoding the tilegroup header and the decoding process to generate the reference picture list for the tilegroup, but before decoding the tilegroup data. As a result of the process, one or more reference pictures are marked in the DPB as "unused for reference" or "used for long-term reference".

[111] Согласно примеру осуществления, декодированное изображение в DPB может отмечаться как "неиспользуемое для ссылки", "используемое для краткосрочной ссылки" или "используемое для долгосрочной ссылки", но в заданный момент времени в процессе декодирования может использоваться только одна отметка из трех указанных. Назначение одной из этих отметок изображению может неявно привести к удалению другой из этих отметок, если это применимо. Если изображение, на которое осуществляется ссылка, отмечается как "используемое для ссылки", это совокупно рассматривается как ссылки на изображение, отмеченное как "используемое для краткосрочной ссылки" или "используемое для долгосрочной ссылки" (но не обе отметки).[111] According to an exemplary embodiment, a decoded image in the DPB may be marked as "unused for reference", "used for short-term reference", or "used for long-term reference", but at a given point in time, only one of the three indicated marks can be used in the decoding process. . Assigning one of these labels to an image may implicitly remove the other of these labels, if applicable. If a referenced image is marked as "linked", it is collectively considered to be links to an image marked as "short-term linked" or "long-term linked" (but not both).

[112] Декодированное изображение в DPB может идентифицироваться (например, индексироваться) отдельно или сохраняться в DPB в соответствии со своей отметкой. Например, краткосрочные опорные изображения (STRP, Short Term Reference Picture) могут идентифицироваться своими значениями "PicOrderCntVal". Долгосрочные опорные изображения (LTRP, Long Term Reference Picture) могут идентифицироваться блоками LSB Log2(MaxLtPicOrderCntLsb) их значений "PicOrderCntVal".[112] The decoded image in the DPB may be identified (eg, indexed) separately or stored in the DPB according to its mark. For example, Short Term Reference Picture (STRP) may be identified by their "PicOrderCntVal" values. Long Term Reference Picture (LTRP) can be identified by LSB Log2(MaxLtPicOrderCntLsb) blocks of their "PicOrderCntVal" values.

[113] Если текущее изображение является изображением IRAP с флагом "NoRaslOutputFlag", равным 1, все опорные изображения, в настоящий момент находящиеся в DPB (если такие имеются), отмечаются как "неиспользуемые для ссылки". Значение "NoRaslOutputFlag", равное 1, может указывать на то, что декодер не выводит изображения RASL.[113] If the current picture is an IRAP picture with "NoRaslOutputFlag" set to 1, all reference pictures currently in the DPB (if any) are marked as "unused for reference". A "NoRaslOutputFlag" value of 1 may indicate that the decoder does not output RASL images.

[114] Все опорные изображения с "TemporalId", большим HighestTid, отмечаются как "неиспользуемые для ссылки", если значение "HighestTid" не равно "sps_max_sub_layers_minus1".[114] All reference pictures with "TemporalId" greater than HighestTid are marked as "unused for reference" if the value of "HighestTid" is not equal to "sps_max_sub_layers_minus1".

[115] В примере, показанном на фиг. 6, декодеры и кодеры в соответствии с раскрытием настоящего изобретения могут выполнять процесс 600. Процесс 600 может выполняться на основе определения, что значение "HighestTid" не равно "sps_max_sub_layers_minus1". Как показано на фиг. 6, декодер (или кодер) может определять значение временного идентификатора опорного изображения (601). Например, первое опорное изображение перечисляется в DPB или в списке опорных изображений. Далее декодер (или кодер) может сравнивать значение временного идентификатор опорного изображения с заранее заданным значением (например, со значением "HighestTid") (602). Если значение временного идентификатора больше заранее заданного значения, декодер (или кодер) может отметить опорное изображение как "неиспользуемое для ссылки" (603). Согласно примеру осуществления, декодер (или кодер) может ставить метку в DPB или в списке опорных изображений.[115] In the example shown in FIG. 6, decoders and encoders in accordance with the disclosure of the present invention may perform process 600. Process 600 may be performed based on determining that the "HighestTid" value is not equal to "sps_max_sub_layers_minus1". As shown in FIG. 6, the decoder (or encoder) may determine the value of the temporary reference picture identifier (601). For example, the first reference picture is listed in the DPB or reference picture list. The decoder (or encoder) may then compare the value of the reference picture temporal ID with a predetermined value (eg, with a "HighestTid" value) (602). If the value of the temporary identifier is greater than a predetermined value, the decoder (or encoder) may mark the reference picture as "not used for reference" (603). According to an exemplary embodiment, a decoder (or encoder) may flag the DPB or reference picture list.

[116] Независимо от того, превосходит ли значение временного идентификатора заранее заданное значение, декодер (или кодер) может затем определить, существует ли другое опорное изображение в DPB (или в списке опорных изображений), собственное значение временного идентификатора которого не сравнивалось с заранее заданным значением идентификатора на шаге 602 (604). Если декодер (или кодер) определяет, что существует другое опорное изображение в DPB (или в списке опорных изображений), собственное значение временного идентификатора которого не сравнивалось с заранее заданным значением идентификатора на шаге 602, декодер (или кодер) может повторить шаги 601-604 для всех опорных изображений в DPB (или в списке опорных изображений). После того как декодер (или кодер) определяет, что все опорные изображения в DPB (или в списке опорных изображений) имеют собственные соответствующие значения временного идентификатора, которые сравнивались с заранее заданным значением идентификатора на шаге 602, декодер (или кодер) может удалить опорные изображения, отмеченные как "неиспользуемые для ссылки" из DPB (605). Декодер (или кодер) может декодировать текущее изображение с использованием DPB с любым количеством изображений, удаленных из DPB (606).[116] Regardless of whether the temporal ID value is greater than a predetermined value, the decoder (or encoder) may then determine if another reference picture exists in the DPB (or in the reference picture list) whose own temporal ID value has not been compared to the predefined value. the identifier value in step 602 (604). If the decoder (or encoder) determines that there is another reference picture in the DPB (or reference picture list) whose own temporal ID value has not been compared to the predefined ID value in step 602, the decoder (or encoder) may repeat steps 601-604 for all reference pictures in the DPB (or reference picture list). After the decoder (or encoder) determines that all reference pictures in the DPB (or reference picture list) have their own respective temporal ID values that have been compared to the predefined ID value in step 602, the decoder (or encoder) may remove the reference pictures. , marked as "unused for reference" from DPB (605). The decoder (or encoder) may decode the current picture using the DPB with any number of pictures removed from the DPB (606).

[117] Согласно примерам осуществления, декодер (или кодер) может также выполнять другие функции для декодирования текущего изображения с использованием DPB. Например, декодеры (и кодеры) могут альтернативно или дополнительно применять следующие функции: (1) для каждого элемента LTRP в RefPicList[0] или RefPicList[1], если опорное изображение является изображением STRP, декодер (или кодер) может отметить изображение как "используемое для долгосрочной ссылки"; (2) декодер (или кодер) может отметить каждое опорное изображение в DPB, на которое не осуществляется ссылка любым из элементов в RefPicList[0] или RefPicList[1], как "неиспользуемое для ссылки".[117] According to the embodiments, the decoder (or encoder) may also perform other functions to decode the current picture using the DPB. For example, decoders (and encoders) may alternatively or additionally apply the following functions: (1) for each LTRP entry in RefPicList[0] or RefPicList[1], if the reference picture is an STRP picture, the decoder (or encoder) may mark the picture as " used for long-term reference"; (2) a decoder (or encoder) may mark each reference picture in the DPB that is not referenced by any of the elements in RefPicList[0] or RefPicList[1] as "unused for reference".

[118] Согласно примеру осуществления, декодер (или кодер) может удалить все опорные изображения в DPB, которые отмечены как "неиспользуемые для ссылки", перед декодированием текущего изображения с использованием DPB или сохранить такие опорные изображения в DPB и проигнорировать опорные изображения при использовании DPB для декодирования текущего изображения.[118] According to an exemplary embodiment, a decoder (or encoder) may remove all reference pictures in the DPB that are marked "not used for reference" before decoding the current picture using the DPB, or store such reference pictures in the DPB and ignore the reference pictures when using the DPB. to decode the current image.

[119] Согласно примерам осуществления, устройство 800 может содержать компьютерный программный код, хранящийся в памяти, при исполнении которого по меньшей мере один процессор выполняет функции декодеров и кодеров, описанные выше.[119] According to embodiments, device 800 may include computer program code stored in memory, upon execution of which at least one processor performs the decoder and encoder functions described above.

[120] Например, на фиг. 7 компьютерный программный код устройства 800 может содержать код 810 сохранения, код 820 определения, код 830 удаления и код 840 декодирования.[120] For example, in FIG. 7, the computer program code of device 800 may include a store code 810, a determine code 820, a delete code 830, and a decode code 840.

[121] Код 810 сохранения может быть сконфигурирован для выполнения по меньшей мере одним процессором сохранения предварительно декодированных изображений видеопотока в буфере декодированных изображений, включая множество первых изображений одного временного подуровня, при этом множество первых изображений включает по меньшей мере одно опорное изображение подуровня для предсказания текущего изображения видеопотока.[121] The storage code 810 may be configured to cause at least one processor to store pre-decoded images of the video stream in a decoded image buffer, including a plurality of first images of the same temporal sublayer, wherein the plurality of first images includes at least one sublayer reference image for predicting the current video stream images.

[122] Код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором выполнения определений с использованием одной или более технологий, описанных выше. Например, код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором определения, является ли изображение, входящее в состав множества первых изображений, не опорным изображением подуровня (SLNR). В альтернативном варианте или дополнительно код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором идентификации типа блока изображения уровня абстракции сети (NAL) и определения, является ли изображение изображением SLNR, на основе идентифицированного типа блока NAL. В альтернативном варианте или дополнительно, код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором определения, является ли значение временного подуровня изображения больше заранее заданного значения (например, значения "HighestTid"). В альтернативном варианте или дополнительно код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором сравнения заранее заданного значения (например, значения "HighestTid") со значением, соответствующим наибольшему номеру идентификации временного подуровня. В альтернативном варианте или дополнительно код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором определения, является ли значение временного подуровня изображения(-й) больше заранее заданного значения (например, значения "HighestTid"), если заранее заданное значение определяется не равным значению, соответствующему наибольшему номеру идентификации временного подуровня. В альтернативном варианте или дополнительно код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором определения, является ли значение текущего изображения изображением внутренней точки произвольного доступа (IRAP), и определения, указывает ли флаг на то, что отсутствует вывод пропущенного опережающего изображения произвольного доступа (RASL).[122] The determination code 820 may be configured to be performed by at least one determination processor using one or more of the techniques described above. For example, the determination code 820 may be configured to be configured by at least one processor to determine whether a picture included in the set of first pictures is a non-sublayer reference picture (SLNR). Alternatively or additionally, determination code 820 may be configured to perform at least one processor identifying a network abstraction layer (NAL) image block type and determining whether the image is an SLNR image based on the identified NAL block type. Alternatively or additionally, the determination code 820 may be configured to make at least one processor determine whether the value of the temporal sublayer of the image is greater than a predetermined value (eg, the "HighestTid" value). Alternatively or additionally, the determination code 820 may be configured for at least one processor to compare a predetermined value (eg, the "HighestTid" value) with the value corresponding to the highest temporal sublayer identification number. Alternatively or additionally, the determination code 820 may be configured to make at least one processor determine whether the value of the temporal sublayer of the image(s) is greater than a predetermined value (e.g., "HighestTid" value) if the predetermined value is not determined to be the value corresponding to the highest time sublayer identification number. Alternatively or additionally, the determination code 820 may be configured to perform at least one processor determining whether the current picture value is an internal random access point (IRAP) image and determining whether a flag indicates that there is no output of a skipped random forward picture. access (RASL).

[123] Код 830 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором удаления одного или более изображений из буфера декодированных изображений в соответствии с одной или более технологий, описанных выше. Например, код 830 удаления может быть сконфигурирован для выполнения по меньшей мере одним процессором удаления изображения SLNR из буфера декодированных изображений на основе определения изображения в качестве изображения SLNR. В альтернативном варианте или дополнительно код 830 удаления может быть сконфигурирован для выполнения по меньшей мере одним процессором удаления изображения(-ий) из буфера декодированных изображений на основе определения, что значение временного подуровня изображения(-ий) больше заранее заданного значения (например, значения "HighestTid"). Согласно примерам осуществления, код 830 удаления может конфигурироваться для выполнения по меньшей мере одним процессором удаления изображений из буфера декодированных изображений на основе идентификаторов (например, отмеченных как "неиспользуемые для ссылки" или "не опорные").[123] The determination code 830 may be configured to perform at least one processor deleting one or more pictures from the decoded picture buffer in accordance with one or more of the techniques described above. For example, deletion code 830 may be configured to perform at least one processor deleting an SLNR picture from a decoded picture buffer based on determining the picture as an SLNR picture. Alternatively or additionally, the deletion code 830 may be configured to perform at least one processor deletion of the picture(s) from the decoded picture buffer based on determining that the value of the temporal sublayer of the picture(s) is greater than a predetermined value (e.g., the value " HighestTid"). According to exemplary embodiments, deletion code 830 may be configured to perform at least one processor deletion of pictures from a decoded picture buffer based on identifiers (eg, marked "unused for reference" or "not referenced").

[124] Код 840 декодирования может быть сконфигурирован для выполнения по меньшей мере одним процессором декодирования текущего изображения с использованием буфера декодированных изображений в соответствии с одной или более технологий, описанных выше. Например, согласно примеру осуществления, код 840 декодирования содержит код предсказания, сконфигурированный для выполнения по меньшей мере одним процессором предсказания текущего изображения с использованием одного или более изображений из по меньшей мере одного опорного изображения подуровня, хранящегося в буфере декодированных изображений, после удаления изображений из буфера декодированных изображений (например, изображений SLNR или изображений, отмеченных таким идентификатором, как "неиспользуемые для ссылки" или "не опорные изображения").[124] The decoding code 840 may be configured to perform at least one processor decoding the current picture using the decoded picture buffer in accordance with one or more of the techniques described above. For example, according to an exemplary embodiment, decoding code 840 comprises a prediction code configured to be performed by at least one current picture prediction processor using one or more pictures from at least one sublayer reference picture stored in a decoded picture buffer after the pictures are removed from the buffer. decoded pictures (eg, SLNR pictures or pictures marked with an identifier such as "not used for reference" or "not reference pictures").

[125] Согласно примерам осуществления, компьютерный программный код может также содержать код 850 предоставления идентификатора и код 860 формирования.[125] According to exemplary embodiments, the computer program code may also include an identifier grant code 850 and a generation code 860.

[126] Код 850 предоставления идентификатора может быть сконфигурирован для выполнения по меньшей мере одним процессором предоставления идентификаторов с использованием одной или более технологий, описанных выше. Идентификаторы могут указывать, например, что заданное изображение является "неиспользуемым для ссылки", "используемым для кратковременной ссылки" или "используемым для долговременной ссылки". Например, код 850 предоставления идентификатора может конфигурироваться для выполнения по меньшей мере одним процессором предоставления идентификатора (например, такой отметки как "неиспользуемое для ссылки" или "не опорное изображение") для изображения, определенного как изображение SLNR, на основе изображения, определяемого как изображение SLNR. В альтернативном варианте или дополнительно, код 850 предоставления идентификатора может быть сконфигурирован для выполнения по меньшей мере одним процессором предоставления идентификатора элемента списка опорных изображений, соответствующего изображению, определенному как изображение SLNR. В альтернативном варианте или дополнительно, код 850 предоставления идентификатора может быть сконфигурирован для выполнения по меньшей мере одним процессором предоставления идентификатора изображения(-ий) на основе определения, что значение временного подуровня изображения(-ий) больше заранее заданного значения (например, значения "HighestTid"). В альтернативном варианте или дополнительно, код 850 предоставления идентификатора может быть сконфигурирован для выполнения по меньшей мере одним процессором установки идентификатора каждого опорного изображения, в настоящий момент хранящегося в DPB, указывающего, что каждое опорное изображение, хранимое в настоящий момент, должно удаляться из DPB в том случае, если текущее изображение определяется как изображение IRAP, и флаг указывает на то, что нет вывода изображения RASL.[126] Identifier grant code 850 may be configured to be performed by at least one identifier grant processor using one or more of the technologies described above. The identifiers may indicate, for example, that the given image is "unused for link", "used for short term link" or "used for long term link". For example, the identifier grant code 850 may be configured to perform an identifier grant (e.g., a mark such as "not used for reference" or "not a reference picture") for an image determined to be an SLNR image based on an image determined to be an SLNR image to be performed by at least one processor. SLNR. Alternatively or additionally, the ID grant code 850 may be configured to perform at least one processor providing a reference picture list item ID corresponding to the picture determined to be the SLNR picture. Alternatively, or additionally, the identifier grant code 850 may be configured to be performed by at least one processor to provide the identifier of the image(s) based on a determination that the value of the temporal sublayer of the image(s) is greater than a predetermined value (e.g., the value "HighestTid "). Alternatively or additionally, the ID grant code 850 may be configured to cause at least one processor to set an ID of each reference picture currently stored in the DPB indicating that each reference picture currently stored should be removed from the DPB at if the current image is defined as an IRAP image and the flag indicates that no RASL image is being output.

[127] Код 860 формирования может быть сконфигурирован для выполнения по меньшей мере одним процессором формирования одного или более списков опорных изображений в соответствии с одной или более технологий, описанных выше. Например, код 860 формирования может быть сконфигурирован для выполнения по меньшей мере одним процессором формирования списка опорных изображений, содержащего элемент для одного или более изображений в DPB.[127] Generating code 860 may be configured to perform at least one processor generating one or more reference picture lists in accordance with one or more of the techniques described above. For example, generating code 860 may be configured to be performed by at least one processor generating a reference picture list containing an entry for one or more pictures in the DPB.

[128] Технологии, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций, которые физически хранятся на одном или более машиночитаемых носителях. Например, на фиг. 8 показана компьютерная система 900, подходящая для реализации определенных примеров раскрытия настоящего изобретения.[128] The techniques described above may be implemented in computer software using computer-readable instructions that are physically stored on one or more computer-readable media. For example, in FIG. 8 shows a computer system 900 suitable for implementing certain examples of the disclosures of the present invention.

[129] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или языка программирования, который может ассемблироваться, компилироваться, компоноваться или с помощью подобных механизмов формировать код, содержащий команды, которые могут выполняться непосредственно или интерпретироваться, выполняться в виде микрокоманд и т.п. центральными процессорами компьютера (CPU, Central Processing Unit), графическими процессорами (GPU, Graphics Processing Unit) и т.п.[129] Computer software may be coded using any suitable machine code or programming language that can be assembled, compiled, linked, or similar mechanisms to form code containing instructions that can be directly executed or interpreted, executed as microinstructions, etc. .P. computer central processing units (CPU, Central Processing Unit), graphic processors (GPU, Graphics Processing Unit), etc.

[130] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшеты, серверы, смартфоны, игровые устройства, устройства "Интернета вещей" и т.п.[130] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablets, servers, smartphones, gaming devices, IoT devices, and the like.

[131] Компоненты, показанные на фиг. 8 для компьютерной системы 900, являются примерами, и не предполагается, что они каким-либо образом ограничивают объем использования или функциональность компьютерного программного обеспечения, реализующего примеры раскрытия настоящего изобретения. Кроме того, конфигурация компонентов не должна рассматриваться в плане какой-либо зависимости или требований, связанных с любым компонентом или с комбинацией компонентов, показанных в рамках неограниченного примера компьютерной системы 900.[131] The components shown in FIG. 8 for computer system 900 are examples and are not intended to limit in any way the scope of use or functionality of computer software implementing the examples of the disclosure of the present invention. In addition, the component configuration should not be considered in terms of any dependency or requirement associated with any component or combination of components shown within the non-limiting example of computer system 900.

[132] Компьютерная система 900 может включать устройства ввода пользовательского интерфейса. Такое устройство ввода пользовательского интерфейса может отвечать за ввод одним или более пользователями с помощью, например, тактильных средств ввода (таких как нажатие клавиш, сдвиг экрана, движения информационной перчаткой), звукового ввода (например, голосом, хлопками), визуального ввода (например, жестикуляцией), обонятельного ввода (не изображено на чертеже). Устройства пользовательского интерфейса также могут применяться для захвата определенной медийной информации, не обязательно непосредственно связанной с сознательным вводом пользователя, такой как звуковой сигнал (например, речь, музыка, звуковое сопровождение), изображения (например, отсканированные изображения, фотографии, полученные с помощью камеры получения неподвижных изображений), видеоинформация (такая как двумерное видео, трехмерное видео, включая стереоскопическое видео).[132] Computer system 900 may include user interface input devices. Such a user interface input device may be responsible for input by one or more users through, for example, tactile input (such as keystrokes, screen shift, glove movements), audio input (eg, voice, claps), visual input (eg, gestures), olfactory input (not shown in the drawing). User interface devices may also be used to capture certain media information not necessarily directly related to the user's conscious input, such as audio (e.g. speech, music, audio), images (e.g. scanned images, photographs taken with a capture camera). still images), video information (such as 2D video, 3D video including stereoscopic video).

[133] Устройства пользовательского интерфейса могут включать в свой состав (на чертеже показано только одно устройство каждого типа) клавиатуру 901, мышь 902, сенсорную панель 903, сенсорный экран 910, информационную перчатку, джойстик 905, микрофон 906, сканер 907, камеру 908.[133] The user interface devices may include (only one device of each type is shown in the drawing) a keyboard 901, a mouse 902, a touch pad 903, a touch screen 910, an information glove, a joystick 905, a microphone 906, a scanner 907, a camera 908.

[134] Компьютерная система 900 может также включать в свой состав устройства вывода пользовательского интерфейса. Такие устройства вывода пользовательского интерфейса могут стимулировать восприятие одного или более пользователей с помощью, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода пользовательского интерфейса могут включать в свой состав устройства тактильного вывода (например, тактильную обратную связь через сенсорный экран 910, информационную перчатку или джойстик 905, но также могут существовать устройства тактильной обратной связи, которые не являются устройствами ввода). Например, такими устройствами могут быть устройства звукового вывода (такие как громкоговорители 909, наушники (не показаны на чертеже)), устройства визуального вывода (такие как экраны 910, включая экраны CRT, жидкокристаллические экраны, плазменные экраны, OLED-экраны, каждый из которых может быть оснащен средствами сенсорного ввода, средствами тактильной обратной связи, некоторые из которых могут выводить двумерные изображения или изображения с размерностью, большей, чем три измерения, через такие средства, как стереографический вывод; очки виртуальной реальности (не показаны на чертеже), голографические дисплеи и дымовые баки (не показаны на чертеже)) и принтеры (не показаны на чертеже).[134] Computer system 900 may also include user interface output devices. Such user interface output devices may stimulate the experience of one or more users through, for example, tactile output, sound, light, and smell/taste. Such user interface output devices may include tactile output devices (eg, tactile feedback through a 910 touch screen, data glove, or 905 joystick, but there may also be haptic feedback devices that are not input devices). For example, such devices may be audio output devices (such as speakers 909, headphones (not shown)), visual output devices (such as screens 910, including CRT screens, liquid crystal screens, plasma screens, OLED screens, each of which can be equipped with touch input, tactile feedback, some of which can output two-dimensional images or images with a dimension greater than three dimensions, through such means as stereographic output; virtual reality glasses (not shown in the drawing), holographic displays and smoke tanks (not shown in the drawing)) and printers (not shown in the drawing).

[135] Компьютерная система 900 также может содержать доступные пользователю запоминающие устройства и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW 920 с CD/DVD или похожие носители 921, флеш-накопитель 922, съемный или несъемный жесткий диск 923, традиционные магнитные носители, такие как дискета (не показана на чертеже), специализированные устройства, основанные на ROM/ASIC/PLD, такие как аппаратные ключи (не показаны на чертеже) и т.п.[135] Computer system 900 may also include user-accessible storage devices and associated media such as optical media, including CD/DVD ROM/RW 920 with CD/DVD or similar media 921, flash drive 922, removable or non-removable hard disk disk 923, conventional magnetic media such as a floppy disk (not shown in the drawing), specialized ROM/ASIC/PLD based devices such as dongles (not shown in the drawing), and the like.

[136] Специалистам в этой области техники должно быть понятно, что термин "машиночитаемый носитель", используемый в связи с предметом раскрытия настоящего изобретения, не охватывает средства передачи, сигналы несущей или другие кратковременные сигналы.[136] Those skilled in the art will appreciate that the term "computer-readable medium" as used in connection with the subject matter of the present invention does not encompass transmission media, carrier signals, or other transient signals.

[137] Компьютерная система 900 также может содержать интерфейс с одной или более сетями связи. Сети, например, могут быть беспроводными, проводными, оптическими. Сети также могут быть локальными, глобальными, городскими, транспортными и промышленными, реального времени, устойчивыми к задержке и т.д. Примеры сетей включают локальные сети, такие как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., телевизионные проводные или беспроводные глобальные цифровые сети, включая кабельное ТВ, спутниковое TV и наземное телевизионное вещание, транспортные и промышленные сети, включая CANBus и т.д. В определенных сетях обычно требуются внешние адаптеры сетевого интерфейса, которые подключаются к определенным портам данных общего назначения или к периферийным шинам 949 (такие, например, как USB-порты компьютерной системы 900); другие обычно интегрируются в ядро компьютерной системы 900 путем подключения к системной шине, как описано ниже (например, Ethernet-интерфейс в персональном компьютере или сотовый сетевой интерфейс в компьютерной системе смартфона). При использовании любой из этих сетей компьютерная система 900 может взаимодействовать с другими объектами. Такая связь может быть однонаправленной, только в приемном направлении (например, телевизионное вещание), однонаправленной, только в передающем направлении (например, CANbus с определенными устройствами CANbus), или двунаправленной, например, с другими компьютерными системами с использованием локальных или глобальных цифровых сетей. Такая связь может включать связь со средой 955 облачных вычислений. Определенные протоколы и стеки протоколов могут использоваться в каждой из этих сетей и сетевых интерфейсов, как описано выше.[137] Computer system 900 may also include an interface to one or more communication networks. Networks, for example, can be wireless, wired, optical. Networks can also be local, global, urban, transport and industrial, real-time, delay-tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., wired or wireless digital wide area television networks including cable TV, satellite TV and terrestrial television broadcasting. , transport and industrial networks, including CANBus, etc. Certain networks typically require external network interface adapters that connect to certain general purpose data ports or peripheral buses 949 (such as, for example, the USB ports of the computer system 900); others are typically integrated into the core of the computer system 900 by connecting to a system bus as described below (eg, an Ethernet interface on a personal computer or a cellular network interface on a smartphone computer system). When using any of these networks, computer system 900 can communicate with other entities. Such communication can be unidirectional, in the receive direction only (for example, television broadcasts), unidirectional, in the transmit direction only (for example, CANbus with certain CANbus devices), or bidirectional, for example, with other computer systems using local or wide area networks. Such communication may include communication with the cloud computing environment 955 . Certain protocols and protocol stacks may be used on each of these networks and network interfaces, as described above.

[138] Вышеупомянутые пользовательские интерфейсные устройства, доступные пользователю запоминающие устройства и сетевые интерфейсы 954 могут подключаться к ядру 940 компьютерной системы 900.[138] The aforementioned user interface devices, user accessible storage devices, and network interfaces 954 may be connected to the core 940 of the computer system 900.

[139] Ядро 940 может содержать один или более центральных процессоров (CPU) 941, графических процессоров (GPU) 942, специализированных программируемых процессорных блоков в виде программируемых пользователем вентильных матриц (FPGA, Field Programmable Gate Area) 943, аппаратных ускорителей 944 для определенных задач и т.д. Эти устройства совместно с постоянной памятью (ROM, Read-Only Memory) 945, оперативной памятью 946, внутренними массовыми запоминающими устройствами 947, такими как внутренние, не доступные пользователю жесткие диски, SSD и т.п., могут соединяться через системную шину 948. В некоторых компьютерных системах доступ к системной шине 948 может осуществляться в виде одного или более физических разъемов, позволяющих добавлять CPU, GPU и т.п. Периферийные устройства могут подключаться либо непосредственно к системной шине 948 ядра, либо через периферийную шину 949. Архитектуры периферийной шины включают PCI, USB и т.п. Графический адаптер 950 может включаться в ядро 940.[139] The core 940 may include one or more central processing units (CPUs) 941, graphics processing units (GPUs) 942, dedicated field programmable gate area (FPGA) 943 field programmable gate area (FPGA) 943, hardware accelerators 944 for specific tasks etc. These devices, together with read-only memory (ROM) 945, random access memory 946, internal mass storage devices 947, such as internal, non-user accessible hard drives, SSDs, etc., can be connected via the system bus 948. In some computer systems, the system bus 948 may be accessed in the form of one or more physical connectors allowing the addition of a CPU, GPU, and the like. Peripherals may connect either directly to the kernel system bus 948 or via a peripheral bus 949. Peripheral bus architectures include PCI, USB, and the like. Graphics adapter 950 may be included in core 940.

[140] CPU 941, GPU 942, FPGA 943 и ускорители 944 могут исполнять определенные инструкции, которые в совокупности могут компенсировать недостатки упомянутого выше компьютерного кода. Компьютерный код может храниться в ROM 945 или RAM 946. Промежуточные данные могут также храниться в RAM 946, в то время как постоянные данные могут храниться, например, во внутреннем массовом запоминающем устройстве 947. Быстрая запись и извлечение данных из любых запоминающих устройств может выполняться с использованием кэш-памяти, которая может быть тесно связана с одним или более CPU 941, GPU 942, внутренними массовыми запоминающими устройствами 947, ROM 945, RAM 946 и т.п.[140] CPU 941, GPU 942, FPGA 943, and accelerators 944 may execute certain instructions, which together may compensate for the shortcomings of the computer code mentioned above. The computer code may be stored in ROM 945 or RAM 946. Intermediate data may also be stored in RAM 946, while persistent data may be stored in internal mass storage 947, for example. using cache memory, which may be closely associated with one or more CPU 941, GPU 942, internal mass storage devices 947, ROM 945, RAM 946, and the like.

[141] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых на компьютере. Медийный и компьютерный код может быть специально разработан и составлен в целях раскрытия настоящего изобретения, или эти коды могут быть хорошо известны и доступны специалистам в области компьютерного программного обеспечения.[141] The computer-readable medium may contain computer code for performing various operations implemented on the computer. The media and computer code may be specially designed and compiled for the purpose of disclosing the present invention, or these codes may be well known and available to those skilled in the art of computer software.

[142] Без ограничения приведенным примером, компьютерная система 900 определенной архитектуры и, в частности, ядро 940 может обеспечивать функциональность в результате выполнения процессором(-ами) (включая CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, реализованного на одном или более машиночитаемых носителях. Такой машиночитаемый носитель, как указывалось выше, может представлять собой носитель, связанный с соответствующим массовым запоминающим устройством, доступным пользователю, а также определенный носитель ядра 940, являющийся по своей природе долговременным носителем информации, таким как массовое запоминающее устройство 947, расположенное внутри ядра, или ROM 945. Программное обеспечение, реализующее различные примеры раскрытия настоящего изобретения, может храниться на таких устройствах и выполняться ядром 940. Машиночитаемый носитель может содержать одно или более запоминающих устройств или микросхем в соответствии с конкретными требованиями. Программное обеспечение может инициализировать ядро 940 и, в частности, процессоры, расположенные в нем (включая CPU, GPU, FPGA и т.п.), для выполнения конкретных процессов или частей конкретных процессов, приведенных в этом описании, включая определение структур данных в RAM 946 и модификацию таких структур данных в соответствии с процессами, определенными программным обеспечением. Кроме того, или в качестве альтернативы, компьютерная система может обеспечивать функциональность в результате логических аппаратных решений или встроенных в схему (например, ускорителя 944) решений, которые могут работать вместо или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей конкретных процессов, приведенных в этом описании. Ссылка на программное обеспечение может охватывать логические схемы и наоборот, где это приемлемо. Ссылка на машиночитаемый носитель может охватывать схему (например, интегральную микросхему (IC, Integrated Circuit)), в которой хранится исполняемое программное обеспечение, схему, в которой реализованы исполняемые логические команды, или оба этих компонента, где это приемлемо. Раскрытие настоящего изобретения охватывает любую подходящую комбинацию аппаратуры и программного обеспечения.[142] Without being limited to the above example, a computer system 900 of a certain architecture, and in particular, the core 940, may provide functionality as a result of the execution by the processor(s) (including CPUs, GPUs, FPGAs, accelerators, etc.) of the software implemented on one or more computer-readable media. Such computer-readable media, as discussed above, may be media associated with an appropriate user-accessible mass storage device, as well as certain core media 940 that is inherently durable storage media, such as mass storage device 947 located within the kernel, or ROM 945. Software implementing various examples of the disclosure of the present invention may be stored on such devices and executed by the core 940. The computer-readable medium may contain one or more memory devices or chips in accordance with specific requirements. The software may initialize the core 940, and in particular the processors located therein (including CPUs, GPUs, FPGAs, etc.), to execute specific processes or parts of specific processes described in this description, including the definition of data structures in RAM 946 and modification of 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 logical hardware or circuitry (e.g., accelerator 944) solutions that may operate in place of or in conjunction with software to perform specific processes, or specific parts of specific processes, given in this description. Reference to software may cover logic diagrams and vice versa where appropriate. Reference to a computer-readable medium may include a circuit (eg, an integrated circuit (IC)) that stores executable software, a circuit that implements executable logic instructions, or both, where appropriate. The disclosure of the present invention covers any suitable combination of hardware and software.

[143] Хотя изобретение было описано посредством нескольких не ограничивающих его примеров осуществления, существуют изменения, перестановки и различные заменяющие эквиваленты в объеме настоящего изобретения. Следует отметить, что специалисты в этой области техники способны разработать ряд систем и способов, которые, хотя явно не показаны и не описаны, но реализуют принципы раскрытия настоящего изобретения и, следовательно, соответствуют его сущности и объему.[143] Although the invention has been described through several non-limiting examples of implementation, there are changes, permutations and various replacement equivalents within the scope of the present invention. It should be noted that those skilled in the art are able to develop a number of systems and methods that, although not explicitly shown or described, implement the principles of the disclosure of the present invention and therefore fall within its spirit and scope.

Claims (36)

1. Способ декодирования видеопотока, включающий:1. Method for decoding a video stream, including: сохранение предварительно декодированных изображений из видеопотока в буфере изображений, включая множество первых изображений одного и того же временного подуровня, при этом множество первых изображений включает по меньшей мере одно опорное изображение подуровня для предсказания текущего изображения видеопотока;storing pre-decoded pictures from the video stream in an picture buffer including a plurality of first pictures of the same temporal sublayer, wherein the plurality of first pictures includes at least one sublayer reference picture for predicting a current picture of the video stream; определение, является ли изображение, входящее в множество первых изображений, неопорным изображением подуровня (SLNR), на основе индикатора, представленного в заголовке слайса и/или в заголовке изображения;determining whether an image included in the plurality of first images is a non-reference sublayer image (SLNR) based on an indicator provided in the slice header and/or the image header; удаление, на основе определения изображения в качестве изображения SLNR, изображения SLNR из буфера изображений;deleting, based on determining the image as an SLNR image, the SLNR image from the image buffer; предсказание текущего изображения с использованием одного или более изображений из по меньшей мере одного опорного изображения подуровня, хранящегося в буфере изображений, после удаления изображения SLNR из буфера изображений;predicting the current picture using one or more pictures from at least one sublayer reference picture stored in the picture buffer after deleting the SLNR picture from the picture buffer; определение, является ли текущее изображение изображением внутренней точки произвольного доступа (IRAP);determining whether the current image is an indoor random access point (IRAP) image; определение, указывает ли флаг на то, что отсутствует вывод пропущенного опережающего изображения произвольного доступа (RASL); иdetermining whether a flag indicates that there is no skipped random access advance picture (RASL) output; and определение, следует ли устанавливать соответствующий идентификатор для каждого опорного изображения, хранимого в буфере изображений, при этом соответствующий идентификатор для каждого опорного изображения указывает, должно ли каждое опорное изображение удаляться из буфера изображений, на основе того, определяется ли текущее изображение как изображение IRAP, и определяется ли флаг, указывающий на отсутствие вывода изображения RASL.determining whether to set a corresponding ID for each reference picture stored in the picture buffer, wherein the respective ID for each reference picture indicates whether each reference picture should be removed from the picture buffer, based on whether the current picture is determined to be an IRAP picture, and whether a flag is defined indicating that no RASL image is being output. 2. Способ по п. 1, отличающийся тем, что2. The method according to p. 1, characterized in that определение, является ли изображение из множества первых изображений изображением SLNR, включает:determining whether an image from the set of first images is an SLNR image includes: идентификацию типа блока уровня абстракции сети (NAL) этого изображения иidentification of the network abstraction layer (NAL) block type of that image, and определение, является ли изображение изображением SLNR, на основе идентифицированного типа блока NAL.determining whether the picture is an SLNR picture based on the identified NAL unit type. 3. Способ по п. 1, включающий также:3. The method according to p. 1, including also: предоставление идентификатора для изображения, определенного в качестве изображения SLNR, на основе определения изображения в качестве изображения SLNR, при этомproviding an identifier for an image determined as an SLNR image based on determining the image as an SLNR image, wherein удаление включает удаление изображения SLNR из буфера изображений на основе идентификатора.deletion involves deleting the SLNR image from the image buffer based on the ID. 4. Способ по п. 3, включающий также:4. The method according to p. 3, including also: формирование списка опорных изображений, включающего элемент списка для каждого изображения из множества первых изображений, при этомgenerating a reference picture list including a list item for each picture from the plurality of first pictures, wherein предоставление идентификатора включает предоставление идентификатора в элементе списка опорных изображений, который соответствует изображению, определенному как изображение SLNR.providing the identifier includes providing an identifier in the reference picture list entry that corresponds to the picture identified as the SLNR picture. 5. Способ по п. 1, отличающийся тем, что5. The method according to p. 1, characterized in that упомянутые предварительно декодированные изображения, хранящиеся в буфере изображений, содержат второе изображение, которое является опорным изображением, иsaid pre-decoded pictures stored in the picture buffer contain a second picture which is a reference picture, and способ также включает:the method also includes: определение, превышает ли значение временного подуровня второго изображения заранее заданное значение; иdetermining whether the value of the temporal sublayer of the second image exceeds a predetermined value; and удаление второго изображения из буфера изображений на основе определения того, что значение временного подуровня второго изображения больше заранее заданного значения.deleting the second image from the image buffer based on determining that the second image temporal sublayer value is greater than a predetermined value. 6. Способ по п. 5, включающий также:6. The method according to p. 5, including also: предоставление идентификатора для второго изображения на основе определения того, что значение временного подуровня второго изображения больше заранее заданного значения, при этом удаление второго изображения включает удаление второго изображения из буфера изображений на основе идентификатора.providing an identifier for the second image based on determining that the second image temporal sublayer value is greater than a predetermined value, wherein deleting the second image includes deleting the second image from the image buffer based on the identifier. 7. Способ по п. 6, включающий также:7. The method according to p. 6, including also: сравнение заранее заданного значения со значением, соответствующим наибольшему номеру идентификации временного подуровня, при этомcomparing the predetermined value with the value corresponding to the highest temporal sublayer identification number, wherein определение, превышает ли значение временного подуровня второго изображения заранее заданное значение, осуществляют на основе определения заранее заданного значения как отличающегося от значения, соответствующего наибольшему номеру идентификации временного подуровня.determining whether the value of the temporal sublayer of the second image exceeds a predetermined value is performed based on determining the predetermined value as being different from the value corresponding to the highest temporal sublayer identification number. 8. Способ по п. 5, отличающийся тем, что8. The method according to p. 5, characterized in that значение временного подуровня второго изображения больше, чем значение временного подуровня множества первых изображений, хранящихся в буфере изображений.the temporal sublayer value of the second image is greater than the temporal sublayer value of the plurality of first images stored in the image buffer. 9. Способ по п. 4, включающий также:9. The method according to p. 4, including also: удаление изображений из буфера изображений, на которые отсутствует ссылка в списке опорных изображений, на основе отсутствия ссылки на изображения в списке опорных изображений.deleting images from the image buffer that are not referenced in the reference image list based on the absence of image reference in the reference image list. 10. Декодер для декодирования видеопотока, включающий:10. A decoder for decoding a video stream, including: память, сконфигурированную для хранения компьютерного программного кода, иa memory configured to store computer program code, and по меньшей мере один процессор, сконфигурированный для доступа к компьютерному программному коду и работающий под управлением компьютерного программного кода для выполнения способа по любому из пп. 1-9.at least one processor configured to access the computer program code and operable under the control of the computer program code to perform the method of any one of claims. 1-9. 11. Машиночитаемый носитель информации, содержащий компьютерные инструкции, при исполнении которых по меньшей мере одним процессором по меньшей мере один процессор выполняет способ по любому из пп. 1-9.11. A computer-readable storage medium containing computer instructions, when executed by at least one processor, at least one processor performs the method according to any one of paragraphs. 1-9.
RU2021127724A 2019-03-15 2020-03-12 Managing a buffer of decoded images for encoding video signals RU2787711C1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/819,460 2019-03-15
US16/815,710 2020-03-11

Publications (1)

Publication Number Publication Date
RU2787711C1 true RU2787711C1 (en) 2023-01-11

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2641475C2 (en) * 2012-09-24 2018-01-17 Квэлкомм Инкорпорейтед Sequence level flag for buffer parameters coded at level of sub-pictures of pictures
US9900605B2 (en) * 2013-10-14 2018-02-20 Qualcomm Incorporated Device and method for scalable coding of video information

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2641475C2 (en) * 2012-09-24 2018-01-17 Квэлкомм Инкорпорейтед Sequence level flag for buffer parameters coded at level of sub-pictures of pictures
US9900605B2 (en) * 2013-10-14 2018-02-20 Qualcomm Incorporated Device and method for scalable coding of video information

Similar Documents

Publication Publication Date Title
CN113892260B (en) Video encoding and decoding method and related device
KR20200125733A (en) Method and apparatus for video coding
CN113711605B (en) Method, apparatus, system and computer readable medium for video encoding and decoding
KR20200140364A (en) Simplified Best Probability Mode List Generation Method
US11516486B2 (en) Decoded picture buffer management for video coding
CN113348666A (en) Method for identifying group of graph blocks
KR20210036408A (en) Method and apparatus for video coding
CN118694978A (en) Video encoding and decoding method, method for processing code stream, storage medium and electronic device
JP7237410B2 (en) Method, Apparatus, and Computer Program for Efficient Signaling of Picture Size and Segmentation Information in Video Bitstreams
CN113508582B (en) Video encoding and decoding methods, devices and readable media
CN113491128B (en) Method and related apparatus for decoded picture memory management
CN110557632B (en) Video decoding method, video decoder, and computer-readable medium
RU2787711C1 (en) Managing a buffer of decoded images for encoding video signals
CN118679740A (en) Multi-template-based intra-frame template matching prediction