Reference picture management method for video decoding
By detecting the syntax elements of the reference image list in the video sequence code stream and building the corresponding list, or using the sliding window method when it does not exist, the problem of low reference image management efficiency in video decoding is solved, and the compression of the video sequence is improved Efficiency and image quality.
Patent Information
- Application Number
- CN202180008975.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-01-27
- Filing Date
- 2021-01-22
- Publication Date
- 2025-02-21
- Estimated Expiration
- 2041-01-22
AI Technical Summary
During the video decoding process, it is difficult for the prior art to efficiently manage the reference image list, especially in the inter-frame prediction process, resulting in low compression efficiency and poor image quality.
The presence of a reference image list syntax element (RPL) is detected in the code stream of the video sequence, and a reference image list for inter prediction is constructed based on its value, or it is managed using a sliding window method when it does not exist.
It realizes efficient reference image management, improves the compression efficiency and image quality of video sequences, and is suitable for different video encoding standards such as VVC and AVC.
Smart Images

Figure CN114946181B_ABST
Abstract
Description
[0001] Cross-reference to related applications
[0002] This patent application claims priority to PCT / RU2020 / 000027 filed on January 23, 2020 and PCT / RU2020 / 000035 filed on January 27, 2020. The disclosures of the above patent applications are incorporated herein by reference in their entirety. Technical Field
[0003] Embodiments of the present application generally relate to the field of image processing, and more specifically to video decoding. Background Art
[0004] Video coding (video encoding and decoding) is widely used in digital video applications such as broadcast digital television, video transmission over the Internet and mobile networks, real-time conversation applications such as video chat and video conferencing, DVD and Blu-ray Discs, video content acquisition and editing systems, and camcorders for security applications.
[0005] Even in the case of shorter videos, a large amount of video data is required to describe it, which can cause difficulties when the data is to be sent or otherwise transmitted over a communication network with limited bandwidth capacity. Therefore, video data is typically compressed before being transmitted over modern telecommunications networks. Since memory resources may be limited, the size of the video may also be a problem when storing the video in a storage device. Video compression devices typically use software and / or hardware on the source side to decode the video data before sending or storing, thereby reducing the amount of data required to represent the digital video image. The video decompression device that decodes the video data then receives the compressed data on the destination side. With limited network resources and a growing demand for higher video quality, there is a need for improved compression and decompression techniques that can increase the compression ratio with little impact on image quality.
[0006] In particular, efficient implementation of reference picture management schemes in the context of inter prediction processing still poses an urgent problem in terms of efficient handling and selection of different schemes that could in principle be used. Summary of the invention
[0007] Embodiments of the present application provide an apparatus and method for encoding and decoding as described in the independent claims.
[0008] The above and other objects are achieved by the subject matter claimed in the independent claims. Other implementations are apparent from the dependent claims, the description and the drawings.
[0009] Particular embodiments are outlined in the accompanying independent claims, further embodiments are outlined in the dependent claims.
[0010] According to one aspect, there is provided a method for decoding a coded video sequence, the method comprising:
[0011] Acquire a value of a reference picture list (RPL) syntax element (e.g., sps_rpl_flag) from a bitstream of the video sequence, wherein the RPL syntax element indicates whether a syntax element related to the reference picture list exists in the bitstream;
[0012] When the RPL syntax element indicates that the syntax element related to the reference picture list exists in the codestream: (a) obtaining the value of the syntax element related to the reference picture list from the codestream;
[0013] (b) constructing at least one reference picture list for inter-frame prediction using the acquired value of the syntax element related to the reference picture list.
[0014] Specifically, a method for decoding a coded video sequence is provided, the method comprising:
[0015] Acquire a value of a reference picture list (RPL) syntax element from a bitstream of the video sequence, wherein the RPL syntax element indicates whether a syntax element related to the reference picture list exists in the bitstream;
[0016] When the RPL syntax element indicates that the syntax element related to the reference picture list exists in the code stream, a value of the syntax element related to the reference picture list is obtained from the code stream.
[0017] The value of the RPL syntax element can be obtained by parsing the code stream. Different from the prior art, a syntax element (RPL syntax element) is provided, which enables (for example, by a decoding device) to detect whether a syntax element related to a reference picture list is present in the code stream, and therefore, to detect whether the reference picture list method can be used for the inter-frame prediction process. Therefore, the management of the inter-frame prediction process, in particular the reference picture management, can be efficiently controlled.
[0018] According to an implementation, the method further includes: when the RPL syntax element indicates that the syntax element related to the reference picture list does not exist in the code stream, constructing at least one reference picture list for inter-frame prediction without further obtaining the value of the syntax element from the code stream. The constructing at least one reference picture list for inter-frame prediction without further obtaining the value of the syntax element from the code stream may include: performing a sliding window method to construct at least one reference picture list for inter-frame prediction.
[0019] Thus, reference picture list management that is not based on a reference picture list can be performed. In this case, a sliding window approach can be performed. Thus, efficient management of different reference picture management schemes can be provided, including reference picture list management used by VVC on the one hand and the sliding window approach used by AVC on the other hand.
[0020] According to an implementation, the method further comprises: when the RPL syntax element indicates that the syntax element related to the reference picture list does not exist in the code stream, obtaining a value of a second syntax element (e.g., max_num_tid0_ref_pics) related to a reference picture identifier from the code stream (as used by AVC). The reference picture identifier may provide information about the maximum number of reference pictures (in temporal layer 0) that may be used for inter-frame prediction of pictures of the video sequence. This information may be easily used to determine the size of a decoded picture buffer.
[0021] According to an implementation, the syntax elements related to the reference picture list are first syntax elements related to the construction of the reference picture list (such as used by VVC). These first syntax elements related to the construction of the reference picture list may be included in at least one reference picture list syntax structure, wherein each reference picture list syntax structure is used to construct a (single) reference picture list. Using such a reference picture list syntax structure enables efficient decoding of the information required to construct the reference picture list.
[0022] According to an implementation, the RPL syntax element is a flag (e.g., named "sps_rpl_flag", see also the detailed description below), wherein a first value of the flag (e.g., 1) indicates that the syntax element related to the reference picture list is present in the codestream, and a second value of the flag different from the first value (e.g., 0) indicates that the syntax element related to the reference picture list is not present in the codestream. In terms of the bit size of decoding, it is very efficient to detect / indicate whether the syntax element related to the reference picture list is present in the codestream through such a flag.
[0023] In principle, the value of the RPL syntax element can be obtained from one of the sequence parameter set, the picture parameter set and the slice header. Therefore, it is envisaged to indicate at different hierarchy levels of the parameter set.
[0024] According to an implementation, the syntax elements related to the reference picture list are obtained from a sequence parameter set and / or a slice header. Likewise, different hierarchical levels of the parameter set may be used appropriately.
[0025] According to an implementation, the decoding method includes: when the RPL syntax element indicates that the syntax element related to the reference picture list exists in the code stream, obtaining the value of at least one third syntax element (for example, ref_pic_list_sps_flag) from the slice header, and the value of the at least one third syntax element indicates whether the syntax element related to the reference picture list can be obtained from the sequence parameter set or the slice header. Therefore, the management of the inter-frame prediction process based on the reference picture list can be efficiently implemented.
[0026] According to one implementation, the at least one third syntax element includes two third syntax elements, wherein the value of one of the two third syntax elements is obtained for a first reference picture list, and when a fourth syntax element (e.g., rpl1_idx_present_flag) obtained from the codestream indicates that the other third syntax element of the two third syntax elements is present in the codestream, the value of the other third syntax element is obtained for a second reference list.
[0027] The fourth syntax element may be another flag, the value 1 of the another flag indicating that the second reference list exists in the code stream. Using such a flag can efficiently indicate in terms of the bit size of decoding.
[0028] According to one implementation, the at least one value of the third syntax element is obtained when there is at least one reference picture list syntax structure indicated at a sequence parameter set level in the code stream, wherein each reference picture list syntax structure is used to construct a reference picture list.
[0029] The at least one value of the third syntax element may be obtained from a slice header, the slice header comprising
[0030] According to another implementation, the at least one value of the third syntax element is obtained from a slice header, the slice header comprising
[0031]
[0032]
[0033] According to a second aspect, a method for encoding a video sequence is provided, which corresponds to the above decoding method and has the same or similar advantages as the above decoding method. The method for encoding a video sequence according to the second aspect comprises:
[0034] determining whether a value of a syntax element associated with a reference picture list is used (by a decoding device) to construct at least one reference picture list for inter prediction;
[0035] Generate a codestream including an RPL syntax element, wherein the RPL syntax element indicates whether a syntax element related to a reference picture list exists in the codestream, wherein, in a case where it is determined that the value of the syntax element related to the reference picture list is to be used (by a decoding device) to construct at least one reference picture list for inter-frame prediction, the RPL syntax element indicates that the syntax element related to the reference picture list exists in the codestream.
[0036] According to an implementation manner, when it is determined that the value of the syntax element related to the reference picture list is not used to construct at least one reference picture list for inter-frame prediction, the code stream includes a second syntax element related to the reference picture identifier.
[0037] The syntax element related to the reference picture list may be the first syntax element related to construction of the reference picture list.
[0038] The first syntax element related to reference picture list construction may be included in at least one reference picture list syntax structure, wherein each reference picture list syntax structure is used to construct a reference picture list.
[0039] According to one implementation, the second syntax element related to reference picture identification provides information about a maximum number of reference pictures (in temporal layer 0) that can be used for inter-frame prediction of pictures of the video sequence.
[0040] According to one implementation, the RPL syntax element is a flag, and a first value of the flag (e.g., 1) indicates that a syntax element related to a reference picture list is present in the codestream, and a second value of the flag different from the first value (e.g., 0) indicates that a syntax element related to a reference picture list is not present in the codestream.
[0041] The RPL syntax element may be indicated in one of a sequence parameter set, a picture parameter set, and a slice header.
[0042] The syntax elements related to the reference picture list may be included in a sequence parameter set and / or a slice header.
[0043] According to an implementation, when it is determined that a value of a syntax element related to a reference picture list is to be used to construct at least one reference picture list for inter prediction, at least one third syntax element is indicated in a slice header, and the at least one third syntax element indicates whether the syntax element related to the reference picture list can be obtained from a sequence parameter set or a slice header.
[0044] According to an implementation manner, the codestream includes a fourth syntax element, and the at least one third syntax element includes two third syntax elements, wherein one of the two third syntax elements is used for a first reference picture list, and when a value of the fourth syntax element indicates that another third syntax element of the two third syntax elements exists in the codestream, the other third syntax element is used for a second reference list.
[0045] The fourth syntax element may be another flag, wherein a value of 1 of the another flag indicates that the another third syntax element exists in the codestream.
[0046] According to an implementation manner, the at least one reference picture list syntax structure is indicated at a sequence parameter set level in the codestream, wherein each reference picture list syntax structure is used to construct a reference picture list.
[0047] The third syntax element may be indicated in a slice header, wherein the slice header includes
[0048]
[0049]
[0050] According to another implementation, the third syntax element is indicated in a slice header, and the slice header includes
[0051] In addition, a decoder for executing the above-mentioned embodiment of the decoding method of the present invention and an encoder for executing the above-mentioned embodiment of the encoding method of the present invention are provided. Specifically, a decoder is provided, the decoder includes a processing circuit for executing the above-mentioned embodiment of the decoding method of the present invention, and an encoder includes a processing circuit for executing the above-mentioned embodiment of the encoding method of the present invention.
[0052] Furthermore, a computer program product is provided, the computer program product comprising a program code, which is used to perform the above method when executed on a computer or a processor.
[0053] A decoder is provided, comprising: one or more processors; and a non-transitory computer-readable storage medium coupled to the processor and storing a program for execution by the processor, wherein when the program is executed by the processor, the decoder performs the above method.
[0054] An encoder is provided, comprising: one or more processors; and a non-transitory computer-readable storage medium coupled to the processor and storing a program for execution by the processor, wherein when the program is executed by the processor, the encoder executes the above method.
[0055] In addition, a non-transitory computer-readable medium is provided, which carries a program code, and when the program code is executed by a computer device, the computer device executes the above method.
[0056] Furthermore, there is provided a decoding and encoding apparatus which provides the same or similar advantages as discussed above.
[0057] According to another aspect, there is provided a decoding device for decoding a coded video sequence, the decoding device comprising:
[0058] an acquiring unit, configured to acquire a value of a reference picture list (RPL) syntax element from a bitstream of the video sequence, wherein the RPL syntax element indicates whether a syntax element related to the reference picture list exists in the bitstream,
[0059] When the RPL syntax element indicates that the syntax element related to the reference picture list exists in the code stream, obtaining a value of the syntax element related to the reference picture list from the code stream;
[0060] An RPL construction unit is used to construct at least one reference picture list for inter-frame prediction using the acquired value of the syntax element related to the reference picture list when the RPL syntax element indicates that the syntax element related to the reference picture list exists in the code stream.
[0061] Specifically, a decoding device for decoding a coded video sequence is provided, the decoding device comprising: an acquisition unit, configured to acquire a value of a reference picture list (reference picture list, RPL) syntax element from a bitstream of the video sequence, the RPL syntax element indicating whether a syntax element related to the reference picture list exists in the bitstream,
[0062] When the RPL syntax element indicates that the syntax element related to the reference picture list exists in the code stream, a value of the syntax element related to the reference picture list is obtained from the code stream.
[0063] According to one implementation, the RPL construction unit is used to construct at least one reference image list for inter-frame prediction when the RPL syntax element indicates that the syntax element related to the reference image list does not exist in the code stream, without further obtaining the value of the syntax element from the code stream.
[0064] The constructing at least one reference picture list for inter-frame prediction without further obtaining the value of the syntax element from the code stream may include: performing a sliding window method to construct at least one reference picture list for inter-frame prediction.
[0065] According to an implementation manner, the acquisition unit is used to acquire a value of a second syntax element related to a reference picture identifier from the codestream when the RPL syntax element indicates that the syntax element related to the reference picture list does not exist in the codestream.
[0066] The syntax element related to the reference picture list may be the first syntax element related to construction of the reference picture list.
[0067] According to an implementation, the first syntax element related to reference picture list construction is included in at least one reference picture list syntax structure, and the RPL construction unit is used to construct a reference picture list using each reference picture list syntax structure.
[0068] The second syntax element related to reference picture identification may provide information about a maximum number of reference pictures that can be used for inter-frame prediction of pictures of the video sequence.
[0069] The RPL syntax element may be a flag, wherein a first value of the flag (e.g., 1) indicates that a syntax element related to a reference picture list is present in the codestream, and a second value of the flag (e.g., 0) different from the first value indicates that a syntax element related to a reference picture list is not present in the codestream.
[0070] According to an implementation manner, the acquisition unit is configured to acquire the value of the RPL syntax element from one of a sequence parameter set, a picture parameter set, and a slice header.
[0071] According to an implementation manner, the acquisition unit is used to acquire the syntax elements related to the reference picture list from a sequence parameter set and / or a slice header.
[0072] According to an implementation manner, the acquisition unit is used to, when the RPL syntax element indicates that the syntax element related to the reference picture list exists in the code stream, obtain the value of at least one third syntax element from the slice header, and the value of the at least one third syntax element indicates whether the syntax element related to the reference picture list can be obtained from the sequence parameter set or the slice header.
[0073] According to an implementation manner, the at least one third syntax element includes two third syntax elements, wherein the acquisition unit is used to acquire the value of one of the two third syntax elements for a first reference picture list, and when a fourth syntax element acquired from the codestream indicates that another third syntax element of the two third syntax elements exists in the codestream, acquire the value of the other third syntax element for a second reference list.
[0074] According to an implementation manner, the fourth syntax element is another flag, and a value of 1 of the another flag indicates that the another third syntax element exists in the code stream.
[0075] According to one implementation, the acquisition unit is used to obtain the at least one value of the third syntax element when there is at least one reference image list syntax structure indicated at the sequence parameter set level in the code stream, and wherein the RPL construction unit is used to construct a reference image list using each reference image list syntax structure.
[0076] According to an implementation, the acquisition unit is configured to acquire the at least one value of the third syntax element from a slice header, wherein the slice header includes
[0077]
[0078]
[0079] In addition, the obtaining unit may be configured to obtain the at least one value of the third syntax element from a slice header, wherein the slice header includes
[0080]
[0081] According to another aspect, there is provided an encoding device for encoding a video sequence, the encoding device comprising:
[0082] a determining unit, configured to determine whether a value of a syntax element related to a reference picture list is used to construct at least one reference picture list for inter-frame prediction;
[0083] A code stream generating unit, configured to generate a code stream including an RPL syntax element, wherein the RPL syntax element indicates whether a syntax element related to a reference picture list exists in the code stream, wherein, in a case where the value of the syntax element related to the reference picture list is determined by the determining unit to be used to construct at least one reference picture list for inter-frame prediction, the RPL syntax element indicates that the syntax element related to the reference picture list exists in the code stream.
[0084] When the determining unit determines that the value of the syntax element related to the reference picture list is not used to construct at least one reference picture list for inter-frame prediction, the code stream includes a second syntax element related to the reference picture identifier.
[0085] The syntax element related to the reference picture list may be the first syntax element related to construction of the reference picture list.
[0086] According to an implementation manner, the first syntax element related to reference picture list construction is included in at least one reference picture list syntax structure, wherein each reference picture list syntax structure is used to construct a reference picture list.
[0087] According to an implementation, the second syntax element related to reference picture identification provides information about a maximum number of reference pictures that can be used for inter-frame prediction of pictures of the video sequence.
[0088] According to one implementation, the RPL syntax element is a flag, and a first value of the flag (e.g., 1) indicates that a syntax element related to a reference picture list is present in the codestream, and a second value of the flag different from the first value (e.g., 0) indicates that a syntax element related to a reference picture list is not present in the codestream.
[0089] The RPL syntax element may be included in one of a sequence parameter set, a picture parameter set, and a slice header.
[0090] The syntax elements related to the reference picture list may be included in a sequence parameter set and / or a slice header.
[0091] According to an implementation manner, when it is determined by the determination unit that the value of the syntax element related to the reference picture list is to be used to construct at least one reference picture list for inter-frame prediction, at least one third syntax element is included in the slice header, and the at least one third syntax element indicates whether the syntax element related to the reference picture list can be obtained from a sequence parameter set or a slice header.
[0092] According to an implementation manner, the codestream includes a fourth syntax element, and the at least one third syntax element includes two third syntax elements, wherein one of the two third syntax elements is used for a first reference picture list, and when a value of the fourth syntax element indicates that another third syntax element of the two third syntax elements exists in the codestream, the other third syntax element is used for a second reference list.
[0093] The fourth syntax element may be another flag, wherein a value of 1 of the another flag indicates that the another third syntax element exists in the codestream.
[0094] According to one implementation, at least one reference picture list syntax structure is included in a sequence parameter set, wherein each reference picture list syntax structure is used to construct a reference picture list.
[0095] The third syntax element may be included in a slice header, the slice header including
[0096]
[0097]
[0098] The third syntax element may be included in a slice header, the slice header including
[0099]
[0100] One or more embodiments will be described in detail in the drawings and the following description. Other features, objects, and advantages will be apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0101] The following is a detailed description of the embodiments of the present invention in conjunction with the accompanying drawings. In the accompanying drawings:
[0102] Figure 1A A block diagram of an example of a video decoding system for implementing an embodiment of the present invention;
[0103] Figure 1B is a block diagram of another example of a video decoding system for implementing an embodiment of the present invention;
[0104] Figure 2 A block diagram of an example of a video encoder for implementing an embodiment of the present invention;
[0105] Figure 3 A block diagram of an example of a video decoder for implementing an embodiment of the present invention;
[0106] Figure 4 A block diagram of an example of an encoding device or a decoding device;
[0107] Figure 5 A block diagram of another example of an encoding device or a decoding device;
[0108] Figure 6 A block diagram of an exemplary structure of a content provision system 3100 for implementing a content distribution service;
[0109] Figure 7 A block diagram showing an example structure of a terminal device;
[0110] Figure 8 A flowchart of a method for decoding a coded video sequence provided by an embodiment;
[0111] Fig. 9 A flowchart of a method for encoding a video sequence provided by an embodiment;
[0112] Fig.10 A block diagram of a decoding device provided in an embodiment;
[0113] Fig.11 A block diagram of an encoding device provided for an embodiment.
[0114] In the following, unless explicitly stated otherwise, identical reference signs refer to identical or at least functionally equivalent features. DETAILED DESCRIPTION
[0115] In the following description, reference is made to the accompanying drawings that form part of the present invention and show, by way of illustration, specific aspects of embodiments of the present invention or specific aspects in which embodiments of the present invention may be used. It should be understood that embodiments of the present invention may be used in other aspects and may include structural changes or logical changes not depicted in the accompanying drawings. Therefore, the following detailed description should not be understood in a restrictive sense, and the scope of the present invention is defined by the appended claims.
[0116] For example, it should be understood that the disclosure related to the described method is also applicable to the corresponding device or system for performing the method, and vice versa. For example, if one or more specific method steps are described, the corresponding device may include one or more units (e.g., functional units) to perform the described one or more method steps (e.g., one unit performs one or more steps, or multiple units each perform one or more steps in multiple steps), even if such one or more units are not explicitly described or shown in the drawings. On the other hand, for example, if a specific device is described according to one or more units (e.g., functional units), the corresponding method may include a step to perform the function of one or more units (e.g., one step performs the function of one or more units, or multiple steps each perform the function of one or more units in multiple units), even if such one or more units are not explicitly described or shown in the drawings. In addition, it should be understood that, unless otherwise explicitly stated, the features of the various exemplary embodiments and / or aspects described herein may be combined with each other.
[0117] Video decoding generally refers to the processing of a sequence of images that constitute a video or video sequence. In the field of video decoding, the terms "frame" and "picture / image" can be used as synonyms. Video decoding (or generally decoding) includes two parts: video encoding and video decoding. Video encoding is performed on the source side and generally includes processing (for example, by compression) the original video image to reduce the amount of data required to represent the video image (thereby more efficiently storing and / or transmitting). Video decoding is performed on the destination side and generally includes inverse processing relative to the encoder to reconstruct the video image. The "decoding" of the video image (or generally the image) involved in the embodiment should be understood as the "encoding" or "decoding" of the video image or the corresponding video sequence. The encoding part and the decoding part are also collectively referred to as codec (encoding and decoding, CODEC).
[0118] In the case of lossless video coding, the original video image can be reconstructed, that is, the reconstructed video image has the same quality as the original video image (assuming no transmission loss or other data loss during storage or transmission). In the case of lossy video coding, further compression is performed by quantization, etc. to reduce the amount of data required to represent the video image, but the decoder side cannot fully reconstruct the video image, that is, the quality of the reconstructed video image is lower or worse than the quality of the original video image.
[0119] Several video coding standards belong to the group of "lossy hybrid video codecs" (i.e., combining spatial and temporal prediction in the sample domain with 2D transform coding in the transform domain for quantization). Each picture in a video sequence is usually divided into a set of non-overlapping blocks, which are usually decoded at the block level. In other words, on the encoder side, the video is usually processed (i.e., encoded) at the block (video block) level, for example, a prediction block is generated by spatial (intra-frame) prediction and / or temporal (inter-frame) prediction; the prediction block is subtracted from the current block (currently processed / to be processed block) to obtain a residual block; the residual block is transformed in the transform domain and quantized to reduce the amount of data to be sent (compressed), while on the decoder side, the coded or compressed block is processed inversely with respect to the encoder to reconstruct the current block for representation. In addition, the encoder replicates the decoder processing cycle so that the encoder and decoder generate the same prediction (e.g., intra-frame prediction and inter-frame prediction) and / or reconstruction to process (i.e., decode) subsequent blocks.
[0120] In the following embodiment of the video decoding system 10, the video encoder 20 and the video decoder 30 are configured according to FIG. 1 to FIG. Figure 3 Give a description.
[0121] Figure 1A 1 is a schematic block diagram of an exemplary decoding system 10, for example, a video decoding system 10 (or simply a decoding system 10) that can utilize the techniques of the present application. The video encoder 20 (or simply an encoder 20) and the video decoder 30 (or simply a decoder 30) in the video decoding system 10 are examples of devices that can be used to perform various techniques according to various examples described in the present application.
[0122] like Figure 1A As shown, the decoding system 10 includes a source device 12 for providing the encoded image data 21 to a destination device 14 or the like for decoding the encoded image data 13 .
[0123] The source device 12 includes an encoder 20 , and may additionally (ie, optionally) include an image source 16 , a pre-processor (or pre-processing unit) 18 (eg, image pre-processor 18 ), and a communication interface or communication unit 22 .
[0124] The image source 16 may include or may be any type of image capture device, such as a camera for capturing real-world images; and / or any type of image generation device, such as a computer graphics processor for generating computer-animated images; or any type of other device for acquiring and / or providing real-world images, computer-generated images (e.g., screen content, virtual reality (VR) images), and / or any combination thereof (e.g., augmented reality (AR) images). The image source may be any type of memory / storage for storing any of the above images.
[0125] In order to distinguish the pre-processor 18 and the processing performed by the pre-processing unit 18 , the image or image data 17 may also be referred to as a raw image or raw image data 17 .
[0126] The preprocessor 18 is used to receive (raw) image data 17 and perform preprocessing on the image data 17 to obtain a preprocessed image 19 or preprocessed image data 19. The preprocessing performed by the preprocessor 18 may include trimming, color format conversion (e.g., from RGB to YCbCr), color adjustment or denoising, etc. It should be understood that the preprocessing unit 18 may be an optional component.
[0127] The video encoder 20 is used to receive the pre-processed image data 19 and provide the encoded image data 21 (hereinafter referred to as Figure 2 etc. are described in further detail).
[0128] The communication interface 22 in the source device 12 can be used to receive the encoded image data 21 and send the encoded image data 21 (or data obtained after further processing of the encoded image data 21) to another device (for example, the destination device 14) or any other device through the communication channel 13 for storage or direct reconstruction.
[0129] The destination device 14 includes a decoder 30 (eg, a video decoder 30 ), and may additionally (ie, optionally) include a communication interface or communication unit 28 , a post-processor 32 (or a post-processing unit 32 ), and a display device 34 .
[0130] The communication interface 28 in the destination device 14 is used to receive the encoded image data 21 (or data obtained after further processing of the encoded image data 21) directly from the source device 12 or from any other source such as a storage device (such as an encoded image data storage device), and provide the encoded image data 21 to the decoder 30.
[0131] Communication interface 22 and communication interface 28 may be used to send or receive encoded image data 21 or encoded data 13 via a direct communication link (e.g., a direct wired or wireless connection) between source device 12 and destination device 14, or via any type of network (e.g., a wired or wireless network or any combination thereof, or any type of private network and public network), or any combination thereof.
[0132] For example, the communication interface 22 may be used to encapsulate the encoded image data 21 into a suitable format (eg, data packets), and / or process the encoded image data by any type of transmission coding or processing for transmission over a communication link or communication network.
[0133] For example, the communication interface 28 corresponding to the communication interface 22 may be used to receive the transmission data and process the transmission data by any type of corresponding transmission decoding or processing and / or decapsulation to obtain the encoded image data 21 .
[0134] Both the communication interface 22 and the communication interface 28 can be configured as Figure 1A The unidirectional communication interface represented by the arrow of the communication channel 13 pointing from the source device 12 to the destination device 14 may be configured as a bidirectional communication interface and may be used to send and receive messages, etc. to establish a connection, confirm and exchange any other information related to the communication link and / or data transmission (e.g., encoded image data transmission), etc.
[0135] The decoder 30 is used to receive the encoded image data 21 and provide decoded image data 31 or decoded image 31 (hereinafter referred to as Figure 3 or Figure 5 etc. are described in further detail).
[0136] The post-processor 32 in the destination device 14 is used to post-process the decoded image data 31 (also referred to as reconstructed image data) (e.g., the decoded image 31) to obtain the post-processed image data 33 (e.g., the post-processed image 33). For example, the post-processing performed by the post-processing unit 32 may include color format conversion (e.g., from YCbCr to RGB), color matching, cropping or resampling, or any other processing, for example, for providing the decoded image data 31 for display by the display device 34 or the like.
[0137] The display device 34 in the destination device 14 is used to receive the post-processed image data 33 so as to display the image to a user or viewer, etc. The display device 34 can be or include any type of display for displaying the reconstructed image, such as an integrated or external display or display screen. For example, the display can include a liquid crystal display (LCD), an organic light emitting diode (OLED) display, a plasma display, a projector, a micro LED display, a liquid crystal on silicon (LCoS) display, a digital light processor (DLP), or any other type of display.
[0138] although Figure 1A The source device 12 and the destination device 14 are described as separate devices, but the device embodiments may also include two devices or two functions, namely the source device 12 or the corresponding functions and the destination device 14 or the corresponding functions. In these embodiments, the source device 12 or the corresponding functions and the destination device 14 or the corresponding functions may be implemented using the same hardware and / or software, or using separate hardware and / or software, or any combination thereof.
[0139] According to the description, Figure 1A The presence and (exact) division of different units or functions in the source device 12 and / or destination device 14 shown may vary depending on the actual device and application, as will be apparent to the skilled person.
[0140] The encoder 20 (eg, video encoder 20) or the decoder 30 (eg, video decoder 30), or both the encoder 20 and the decoder 30 may be configured as follows: Figure 1B The processing circuitry shown may be implemented, for example, one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, video decoding dedicated processors, or any combination thereof. The encoder 20 may be implemented by processing circuitry 46 to include a combination of Figure 2 The decoder 30 may be implemented by processing circuitry 46 to include a combination of Figure 3The various modules discussed in the decoder 30 and / or any other decoder system or subsystem described herein. The processing circuits may be used to perform the various operations described below. Figure 5 As shown, if the technology is partially implemented in software, the device can store the instructions of the software in a suitable non-transitory computer-readable storage medium, and can use one or more processors to execute the instructions in hardware to perform the technology of the present invention. One of the video encoder 20 and the video decoder 30 can be integrated into a single device as part of a combined codec (encoder / decoder, CODEC), such as Figure 1B shown.
[0141] Source device 12 and destination device 14 may include any of a variety of devices, including any type of handheld or fixed device, such as a notebook or laptop computer, a mobile phone, a smart phone, a tablet / tabletcomputer, a camera, a desktop computer, a set-top box, a television, a display device, a digital media player, a video game console, a video streaming device (e.g., a content service server or a content distribution server), a broadcast receiver device, a broadcast transmitter device, etc., and may not use or use any type of operating system. In some cases, source device 12 and destination device 14 may be equipped for wireless communication. Therefore, source device 12 and destination device 14 may be wireless communication devices.
[0142] In some cases, Figure 1A The video decoding system 10 shown is merely exemplary, and the techniques in the present application can be applied to video decoding settings (e.g., video encoding or video decoding) that do not necessarily include any data communication between the encoding device and the decoding device. In other examples, the data can be retrieved from a local memory, transmitted over a network, etc. The video encoding device can encode the data and store the data in a memory, and / or the video decoding device can retrieve the data from the memory and decode the data. In some examples, the encoding and decoding are performed by devices that do not communicate with each other but only encode the data to the memory and / or retrieve the data from the memory and decode the data.
[0143] For ease of description, this document describes embodiments of the present invention with reference to high-efficiency video coding (HEVC) or versatile video coding (VVC) (next generation video coding standard) reference software developed by the ITU-T video coding experts group (VCEG) and the ISO / IEC motion picture experts group (MPEG) video coding joint collaboration team (JCT-VC) (next generation video coding standard). Those skilled in the art understand that embodiments of the present invention are not limited to HEVC or VVC.
[0144] Encoders and encoding methods
[0145] Figure 2 FIG. 2 is a schematic block diagram of an exemplary video encoder 20 for implementing the technology of the present application. Figure 2 In the example of , the video encoder 20 includes an input terminal 201 (or an input interface 201), a residual calculation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210 and an inverse transform processing unit 212, a reconstruction unit 214, a loop filtering unit 220, a decoded picture buffer (DPB) 230, a mode selection unit 260, an entropy coding unit 270 and an output terminal 272 (or an output interface 272). The mode selection unit 260 may include an inter-frame prediction unit 244, an intra-frame prediction unit 254 and a segmentation unit 262. The inter-frame prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). Figure 2 The illustrated video encoder 20 may also be referred to as a hybrid video encoder or a video encoder according to a hybrid video codec.
[0146] The residual calculation unit 204, the transform processing unit 206, the quantization unit 208 and the mode selection unit 260 may constitute a forward signal path of the encoder 20, and the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoded picture buffer (DPB) 230, the inter-frame prediction unit 244 and the intra-frame prediction unit 254 may constitute a backward signal path of the video encoder 20, wherein the backward signal path of the video encoder 20 corresponds to the decoder (see Figure 3The inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter-frame prediction unit 244 and the intra-frame prediction unit 254 also constitute the “built-in decoder” of the video encoder 20.
[0147] High level syntax (HLS)
[0148] There are several sets of high-level syntax elements designed for transmitting different high-level syntax elements that may be reused, for example, by specific pictures, slices or blocks of pictures, such as control flags for tools, video sequence specific parameters (e.g. resolution, external and internal bit depth, etc.) and some codec routines.
[0149] In modern codecs such as VVC and EVC, the following three parameter sets are commonly used: (1) sequence parameter set (SPS); (2) picture parameter set (PPS); (3) slice header (SH). SPS is the most general set and includes information that does not change for several coded pictures or within several coded pictures. For example, video resolution, internal and external bit depths are usually indicated in SPS (or at SPS level). PPS includes information that may vary from picture to picture, such as block or PPS level incremental QP information. SH includes information that may vary from slice to slice, and such picture-related information that is relatively small or only relevant to certain slices or picture types. SPS, PPS and SH can be considered to form a hierarchy of high-level syntax sets, where SPS defines the highest level, PPS defines the next lower level, and SH defines the lower level in this hierarchy. Embodiments can be used to implement these three parameter sets and other parameter sets.
[0150] Images and image segmentation (images and blocks)
[0151] The encoder 20 may be configured to receive an image 17 (or image data 17), such as an image in a sequence of images forming a video or a video sequence, via an input 201 or the like. The received image or image data may also be a pre-processed image 19 (or pre-processed image data 19). For simplicity, the following description uses image 17. Image 17 may also be referred to as a current image or a picture to be decoded (particularly in video decoding to distinguish a current image from other images (e.g., previously encoded and / or decoded images) in the same video sequence (i.e., a video sequence that also includes the current image)).
[0152] A (digital) image is or can be considered as a two-dimensional array or matrix of samples with intensity values. The samples in the array can also be called pixels (pixel / pel) (short for picture elements). The number of samples in the horizontal and vertical directions (or axes) of the array or image defines the size and / or resolution of the image. In order to represent color, three color components are usually used, that is, the image can be represented as or can include three sample arrays. In the RGB format or color space, an image includes corresponding arrays of red, green and blue samples. However, in video decoding, each pixel is usually represented in a brightness and chrominance format or color space, such as YCbCr, including a brightness component represented by Y (sometimes also represented by L) and two chrominance components represented by Cb and Cr. The brightness (luminance, abbreviated as luma) component Y represents the brightness or grayscale intensity (for example, the two are the same in grayscale images), while the two chrominance (chrominance, abbreviated as chroma) components Cb and Cr represent the chrominance or color information components. Accordingly, an image in YCbCr format includes a luma sample array of luma sample values (Y) and two chroma sample arrays of chroma values (Cb and Cr). An image in RGB format can be converted or transformed into YCbCr format and vice versa, a process also referred to as color conversion or color transformation. If the image is black and white, the image may include only a luma sample array. Accordingly, for example, an image may be a luma sample array in black and white format or a luma sample array and two corresponding chroma sample arrays in 4:2:0, 4:2:2 and 4:4:4 color formats.
[0153] An embodiment of the video encoder 20 may include an image segmentation unit ( Figure 2 ), for partitioning the image 17 into a plurality of (usually non-overlapping) image blocks 203. These blocks may also be referred to as root blocks, macroblocks (H.264 / AVC), or (in H.265 / HEVC and VVC) coding tree blocks (CTB) or coding tree units (CTU). The image partitioning unit may be used to use the same block size for all images in a video sequence and a corresponding grid of defined block sizes, or to vary the block size between images or subsets or groups of images, and to partition each image into a plurality of corresponding blocks.
[0154] In other embodiments, the video encoder may be configured to directly receive the block 203 in the image 17, for example, one, several or all blocks constituting the image 17. The image block 203 may also be referred to as a current image block or an image block to be encoded.
[0155] Similar to the image 17, the image block 203 is also or can be regarded as a two-dimensional array or matrix of samples with intensity values (sample values), but the size of the image block 203 is smaller than that of the image 17. In other words, according to the color format applied, the block 203 may include (for example) one sample array (such as a brightness array in the case of the black and white image 17 or a brightness array or a chrominance array in the case of a color image) or three sample arrays (such as one brightness array and two chrominance arrays in the case of the color image 17) or any other number and / or type of arrays. The number of samples in the horizontal direction and the vertical direction (or axis) of the block 203 defines the size of the block 203. Accordingly, a block may be an M×N (M columns×N rows) sample array, or an M×N transform coefficient array, etc.
[0156] Figure 2 The illustrated embodiment of the video encoder 20 may be used to encode the image 17 block by block, for example, by encoding and predicting the block 203 .
[0157] Figure 2 The illustrated embodiment of the video encoder 20 may also be used to segment and / or encode an image using slices (also referred to as video slices), wherein an image may be segmented or encoded using one or more slices (usually non-overlapping). Each slice may include one or more blocks (e.g., CTUs) or one or more groups of blocks (e.g., tiles (H.265 / HEVC and VVC) or bricks (VVC)).
[0158] Figure 2 The illustrated embodiment of the video encoder 20 may also be used to segment and / or encode an image using slice / block groups (also referred to as video block groups) and / or blocks (also referred to as video blocks), wherein one or more slice / block groups (usually non-overlapping) may be used to segment or encode an image. Each slice / block group may include one or more blocks (e.g., CTUs) or one or more blocks, etc., wherein each block may be rectangular or other shaped, and may include one or more blocks (e.g., CTUs), such as complete or partial blocks.
[0159] Residual calculation
[0160] The residual calculation unit 204 can be used to calculate the residual block 205 (also referred to as residual 205) based on the image block 203 and the prediction block 265 (more details of the prediction block 265 are provided later), for example, by subtracting the sample value of the prediction block 265 from the sample value of the image block 203 sample by sample (pixel by pixel) to obtain the residual block 205 in the sample domain.
[0161] Transform
[0162] The transform processing unit 206 may be used to perform discrete cosine transform (DCT) or discrete sine transform (DST) on the sample values of the residual block 205 to obtain transform coefficients 207 in the transform domain. The transform coefficients 207 may also be called transform residual coefficients, representing the residual block 205 in the transform domain.
[0163] The transform processing unit 206 can be used to apply an integer approximation of a DCT / DST (e.g., a transform specified for H.265 / HEVC). Compared to an orthogonal DCT transform, this integer approximation is typically scaled by a factor. In order to maintain the norm of the residual block processed by the forward transform and the inverse transform, other scaling factors are applied as part of the transform process. The scaling factor is typically selected based on certain constraints, such as whether the scaling factor is a power of 2 for the shift operation, the bit depth of the transform coefficients, a trade-off between precision and implementation cost, etc. For example, a specific scaling factor is specified for the inverse transform by the inverse transform processing unit 212, etc. (and on the video decoder 30 side, the corresponding inverse transform by the inverse transform processing unit 312, etc.); accordingly, a corresponding scaling factor can be specified for the forward transform by the transform processing unit 206, etc. on the encoder 20 side.
[0164] Embodiments of the video encoder 20 (and accordingly, the transform processing unit 206) may be configured to encode or compress output transform parameters (e.g., one or more transform types) directly or via an entropy coding unit 270, such that, for example, the video decoder 30 may receive and use the transform parameters for decoding.
[0165] Quantification
[0166] The quantization unit 208 may be configured to quantize the transform coefficients 207 by applying scalar quantization or vector quantization, etc., to obtain quantized coefficients 209 . The quantized coefficients 209 may also be referred to as quantized transform coefficients 209 or quantized residual coefficients 209 .
[0167] The quantization process may reduce the bit depth associated with some or all of the transform coefficients 207. For example, an n-bit transform coefficient may be rounded down to an m-bit transform coefficient during quantization, where n is greater than m. The degree of quantization may be modified by adjusting a quantization parameter (QP). For example, for scalar quantization, different degrees of scaling may be applied to achieve finer or coarser quantization. A smaller quantization step size corresponds to a finer quantization, while a larger quantization step size corresponds to a coarser quantization. A suitable quantization step size may be represented by a quantization parameter (QP). For example, a quantization parameter may be an index of a predefined set of suitable quantization step sizes. For example, a smaller quantization parameter may correspond to fine quantization (a smaller quantization step size), a larger quantization parameter may correspond to coarse quantization (a larger quantization step size), and vice versa. Quantization may include dividing by a quantization step size, and corresponding dequantization and / or corresponding inverse dequantization, for example, performed by an inverse quantization unit 210 may include multiplying by a quantization step size. According to embodiments of some standards such as HEVC, a quantization parameter may be used to determine a quantization step size. Typically, a quantization step size may be calculated using a fixed-point approximation of an equation including division according to a quantization parameter. Other scaling factors may be introduced for quantization and dequantization to recover the norm of the residual block that may be modified due to the scaling used in the fixed-point approximation of the equations for the quantization step size and the quantization parameter. In one exemplary implementation, the scales for the inverse transform and dequantization may be combined. Alternatively, a custom quantization table may be used and signaled from the encoder to the decoder in the bitstream, etc. Quantization is a lossy operation, where the larger the quantization step size, the greater the loss.
[0168] In an embodiment, the video encoder 20 (correspondingly, the quantization unit 208) can be used to output a quantization parameter (QP), for example, directly output or output after being encoded by the entropy coding unit 270, so that, for example, the video decoder 30 can receive and use the quantization parameter for decoding.
[0169] Dequantization
[0170] The inverse quantization unit 210 is used to perform inverse quantization of the quantization unit 208 on the quantized coefficients to obtain dequantized coefficients 211, for example, according to or using the same quantization step size as the quantization unit 208, and perform an inverse quantization scheme of the quantization scheme performed by the quantization unit 208. The dequantized coefficients 211 may also be referred to as dequantized residual coefficients 211, corresponding to the transform coefficients 207, but due to the loss caused by quantization, the dequantized coefficients 211 are usually different from the transform coefficients.
[0171] Inverse Transform
[0172] The inverse transform processing unit 212 is used to perform an inverse transform of the transform performed by the transform processing unit 206, such as an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST), to obtain a reconstructed residual block 213 (or a corresponding dequantized coefficient 213) in the sample domain. The reconstructed residual block 213 may also be referred to as a transform block 213.
[0173] reconstruction
[0174] The reconstruction unit 214 (e.g., adder or summer 214) is used to add the transform block 213 (i.e., the reconstructed residual block 213) to the prediction block 265 by adding the sample values of the reconstructed residual block 213 and the sample values of the prediction block 265 sample by sample to obtain the reconstructed block 215 in the sample domain.
[0175] Filtering
[0176] The loop filter unit 220 (or simply "loop filter" 220) is used to filter the reconstructed block 215 to obtain a filtered block 221, or is generally used to filter the reconstructed sample to obtain a filtered sample value. For example, the loop filter unit is used to smoothly perform pixel conversion or otherwise improve video quality. The loop filter unit 220 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as an adaptive loop filter (ALF), a noise suppression filter (NSF), or any combination thereof. In one example, the loop filter unit 220 may include a deblocking filter, an SAO filter, and an ALF filter. The order of the filtering process may be deblocking filtering, SAO filtering, and ALF filtering. In another example, a process called lumamapping with chroma scaling (LMCS) (i.e., an adaptive in-loop shaper) is added. This process is performed before deblocking filtering. In another example, the deblocking filtering process may also be applied to internal sub-block edges, such as affine sub-block edges, ATMVP sub-block edges, sub-block transform (SBT) edges, and intra sub-partition (ISP) edges. Figure 2 2 is shown as an in-loop filter, but in other configurations, the loop filtering unit 220 may be implemented as a post-loop filter. The filtered block 221 may also be referred to as a filtered reconstruction block 221.
[0177] In an embodiment of the video encoder 20, the video encoder 20 (correspondingly, the loop filter unit 220) can be used to, for example, directly output or output loop filter parameters (e.g., SAO filter parameters, ALF filter parameters, or LMCS parameters) after being encoded by the entropy coding unit 270, so that the decoder 30 can receive and use the same or different loop filter parameters for decoding.
[0178] Decode image buffer
[0179] The decoded picture buffer (DPB) 230 may be a memory that stores reference images or generally stores reference image data for use by the video encoder 20 when encoding video data. The DPB 230 may be formed by any of a variety of memory devices, such as a dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM) or other types of memory devices. The decoded picture buffer (DPB) 230 may be used to store one or more filtered blocks 221. The decoded picture buffer 230 may also be used to store other previously filtered blocks (e.g., previously filtered reconstructed blocks 221) in the same current image or in different images (e.g., previously reconstructed images), and may provide previously fully reconstructed (i.e., decoded) images (and corresponding reference blocks and samples) and / or partially reconstructed current images (and corresponding reference blocks and samples) for inter-frame prediction, etc. If the reconstructed block 215 is not filtered by the loop filter unit 220, the decoded picture buffer (DPB) 230 can also be used to store one or more unfiltered reconstructed blocks 215, or generally store unfiltered reconstructed samples, or reconstructed blocks or reconstructed samples without any other processing.
[0180] In the video codec specification, images are identified for a variety of purposes, including use as reference images in inter-frame prediction, for outputting images from the decoded picture buffer (DPB), for scaling of motion vectors, for weighted prediction, and so on. In AVC and HEVC, images can be identified by picture order count (POC). In AVC and HEVC, images in the DPB can be identified as "for short-term reference", "for long-term reference", or "not for reference". Once an image is identified as "not for reference", the image can no longer be used for prediction. When the image no longer needs to be output, the image can be deleted from the DPB.
[0181] There are two types of reference images in AVC: short-term reference images and long-term reference images. When a reference image is no longer used for prediction reference, the reference image can be identified as "not used for reference". The conversion between the three states (short-term reference, long-term reference, not used for reference) is controlled by the decoding reference image identification process. There are two optional decoding reference image identification mechanisms: an implicit sliding window process and an explicit memory management control operation (MMCO) process. When the number of reference frames is equal to the given maximum number (max_num_ref_frames in the sequence parameter set (SPS)), the sliding window process identifies the short-term reference image as "not used for reference". These short-term reference images are stored in a first-in-first-out manner, so that the most recently decoded short-term image is saved in the DPB.
[0182] The explicit MMCO process may include multiple MMCO commands. The MMCO command may identify one or more short-term reference pictures or long-term reference pictures as "not used for reference", may identify all pictures as "not used for reference", or may identify the current reference picture or an existing short-term reference picture as a long-term reference picture and then assign a long-term picture index to the long-term reference picture.
[0183] In AVC, the reference picture identification operation and the process of outputting and removing the picture from the DPB are performed after the picture is decoded. Embodiments of the present invention can be used to implement any of these methods and can be used to use an implicit sliding window process, an explicit memory management control operation (MMCO), or both.
[0184] Another reference picture management method is used in VVC. The method is called the reference picture list (RPL) method and includes the following aspects, each of which can be applied separately and some of which can be applied in combination. (1) Reference picture identification is directly based on two reference picture lists, namely reference picture list 0 and reference picture list 1. (1a) Information for deriving the two reference picture lists is indicated according to syntax elements and syntax structures in the SPS, PPS and / or slice header. (1b) Each of the two reference picture lists of a picture is explicitly indicated in the reference picture list structure. (1b.i) One or more reference picture list structures can be indicated in the SPS, and each of them can be referenced by an index in the slice header. (1b.ii) Each of reference picture list 0 and reference picture list 1 can be directly indicated in the slice header. (2) Information for deriving the two reference picture lists is indicated for all types of slices, namely B (bidirectional prediction) slices, P (unidirectional prediction) slices and I (intra) slices. The term "slice" refers to a set of coding tree units, such as slices in HEVC or the latest VVC WD or EVC WD; it may also refer to some other sets of coding tree units, such as blocks in HEVC. (3) Two reference picture lists are generated for all types of slices (i.e., B slices, P slices, and I slices). (4) The two reference picture lists are directly constructed without using the reference picture list initialization process and the reference picture list modification process. (5) In each of the two reference picture lists, the reference pictures that can be used for inter-frame prediction of the current picture can only be referenced by multiple entries at the beginning of the list. These entries are called active entries in the list, and the other entries are called inactive entries in the list. The total number of entries in the list and the number of active entries can be derived. (6) The picture referenced by the inactive entry in the reference picture list is not allowed to be referenced by another entry in the reference picture list or any entry in another reference picture list. (7) Long-term reference pictures are only identified by a certain number of POC LSBs, where the number can be greater than the number of POC LSBs indicated in the slice header for deriving the POC value, and the number is indicated in the SPS. (8) The reference picture list structure is indicated only in the slice header, and both the short-term reference picture and the long-term reference picture are identified by their POC LSBs. Their POC LSBs can be represented by a number of bits that is different from the number of bits used to represent the POC LSB indicated in the slice header for deriving the POC value, and the number of bits used to represent the POC LSB for identifying the short-term reference picture and the long-term reference picture can be different.(9) The reference picture list structure is indicated only in the slice header, short-term reference pictures and long-term reference pictures are not distinguished, all reference pictures are only called reference pictures, and reference pictures are identified by their POC LSBs, and their POC LSBs can be represented by a number of bits, which is different from the number of bits used to represent the POC LSB indicated in the slice header for deriving the POC value. The embodiments of the present invention can be used to implement any of these methods.
[0185] The general implementation of the RPL method assumes that the following syntax elements are present in the codestream.
[0186]
[0187]
[0188]
[0189] The semantics of the newly added RPL-related syntax elements are as follows: rpl1_same_as_rpl0_flag equal to 1 indicates that the syntax structure num_ref_pic_lists_in_sps[1] and ref_pic_list_struct(1,rplsIdx,ltrpFlag) do not exist.
[0190] num_ref_pic_lists_in_sps[i] indicates the number of syntax structures ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag) included in the SPS and having listIdx equal to i. The value of num_ref_pic_lists_in_sps[i] shall be in the range of 0 to 64 (inclusive).
[0191] The syntax structure ref_pic_list_struct (listIdx, rplsIdx, ltrpFlag) is directly indicated in the slice header of the current picture.
[0192] rpl1_idx_present_flag equal to 0 indicates that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] do not exist in the slice header. rpl1_idx_present_flag equal to 1 indicates that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] may be present in the slice header.
[0193] ref_pic_list_sps_flag[i] equal to 1 indicates that the reference picture list i of the current picture is derived from one of the syntax structures ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag) with listIdx equal to i in the active SPS. ref_pic_list_sps_flag[i] equal to 0 indicates that the reference picture list i of the current picture is derived from the syntax structure ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag) with listIdx equal to i directly included in the slice header of the current picture. When num_ref_pic_lists_in_sps[i] is equal to 0, the value of ref_pic_list_sps_flag[i] shall be equal to 0. When rpl1_idx_present_flag is equal to 0 and ref_pic_list_sps_flag[0] is present, the value of ref_pic_list_sps_flag[1] is inferred to be equal to the value of ref_pic_list_sps_flag[0]. When rep_pic_list_sps_flag[i] is not present, the value of rep_pic_list_sps_flag[i] is inferred to be equal to 0.
[0194] ref_pic_list_idx[i] represents the index of the syntax structure ref_pic_list_struct(listIdx,rplsIdx,ltrpFlag) with listIdx equal to i included in the active SPS for deriving the reference picture list i of the current picture. The syntax element ref_pic_list_idx[i] is represented by Ceil(Log2(num_ref_pic_lists_in_sps[i])) bits. When ref_pic_list_idx[i] is not present, the value of ref_pic_list_idx[i] is inferred to be equal to 0. The value of ref_pic_list_idx[i] shall be in the range of 0 to num_ref_pic_lists_in_sps[i]–1, inclusive. When rpl1_idx_present_flag is equal to 0 and ref_pic_list_sps_flag[0] is present, the value of ref_pic_list_idx[1] is inferred to be equal to the value of ref_pic_list_idx[0].
[0195] num_strp_entries[listIdx][rplsIdx] indicates the number of STRP entries in the syntax structure ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag). When num_ltrp_entries[listIdx][rplsIdx] does not exist, the value of num_ltrp_entries[listIdx][rplsIdx] is inferred to be equal to 0. The value of num_strp_entries[listIdx][rplsIdx] shall be in the range of 0 to sps_max_dec_pic_buffering_minus1, inclusive.
[0196] num_ltrp_entries[listIdx][rplsIdx] indicates the number of LTRP entries in the syntax structure ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag). When num_ltrp_entries[listIdx][rplsIdx] does not exist, the value of num_ltrp_entries[listIdx][rplsIdx] is inferred to be equal to 0.
[0197] The variable NumEntriesInList[listIdx][rplsIdx] is derived as follows:
[0198] NumEntriesInList[listIdx][rplsIdx]=
[0199] num_strp_entries[listIdx][rplsIdx]+num_ltrp_entries[listIdx][rplsIdx](123)
[0200] The value of NumEntriesInList[listIdx][rplsIdx] shall be in the range of 0 to sps_max_dec_pic_buffering_minus1 (inclusive).
[0201] lt_ref_pic_flag[listIdx][rplsIdx][i] equal to 1 indicates that the i-th entry in the syntax structure ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag) is an LTRP entry. lt_ref_pic_flag[listIdx][rplsIdx][i] equal to 0 indicates that the i-th entry in the syntax structure ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag) is a STRP entry. When lt_ref_pic_flag[listIdx][rplsIdx][i] is not present, the value of lt_ref_pic_flag[listIdx][rplsIdx][i] is inferred to be equal to 0.
[0202] For all values i in the range 0 to NumEntriesInList[listIdx][rplsIdx]–1, inclusive, the sum of lt_ref_pic_flag[listIdx][rplsIdx][i] shall be equal to num_ltrp_entries[listIdx][rplsIdx].
[0203] delta_poc_st[listIdx][rplsIdx][i] indicates the absolute difference between the picture sequence number value of the current picture and the picture sequence number value of the picture referenced by the i-th entry when the i-th entry is the first STRP entry in the syntax structure ref_pic_list_struct(rplsIdx,ltrpFlag), or indicates the absolute difference between the picture sequence number value of the picture referenced by the i-th entry and the picture sequence number value of the picture referenced by the previous STRP entry in the syntax structure ref_pic_list_struct(listIdx,rplsIdx,ltrpFlag) when the i-th entry is a STRP entry but not the first STRP entry in the syntax structure ref_pic_list_struct(rplsIdx,ltrpFlag).
[0204] The value of delta_poc_st[listIdx][rplsIdx][i] shall be between –2 15 To 2 15 The value is in the range of –1 (inclusive).
[0205] strp_entry_sign_flag[listIdx][rplsIdx][i] equal to 1 indicates that the value of the i-th entry in the syntax structure ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag) is greater than or equal to 0. strp_entry_sign_flag[listIdx][rplsIdx] equal to 0 indicates that the value of the i-th entry in the syntax structure ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag) is less than 0. When strp_entry_sign_flag[i][j] is not present, the value of strp_entry_sign_flag[i][j] is inferred to be equal to 1.
[0206] The list DeltaPocSt[listIdx][rplsIdx] is derived as follows:
[0207]
[0208] poc_lsb_lt[listIdx][rplsIdx][i] represents the value of the picture order number modulo MaxPicOrderCntLsb of the picture referenced by the ith entry in the syntax structure ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag). The length of the syntax element poc_lsb_lt[listIdx][rplsIdx][i] is log2_max_pic_order_cnt_lsb_minus4+4 bits.
[0209] Embodiments of the present invention may be used to implement any of these methods.
[0210] Mode selection (segmentation and prediction)
[0211] The mode selection unit 260 includes a segmentation unit 262, an inter-frame prediction unit 244, and an intra-frame prediction unit 254, and is used to receive or obtain original image data such as the original block 203 (the current block 203 in the current image 17) and reconstructed image data (such as filtered and / or unfiltered reconstructed samples or blocks in the same (current) image and / or one or more previously decoded images) from the decoded image buffer 230 or other buffers (such as line buffers, not shown in the figure). The reconstructed image data is used as reference image data required for prediction such as inter-frame prediction or intra-frame prediction to obtain a prediction block 265 or a prediction value 265.
[0212] The mode selection unit 260 can be used to determine or select a segmentation method for the current block prediction mode (including non-segmentation) and determine or select a prediction mode (such as an intra-frame prediction mode or an inter-frame prediction mode), generate a corresponding prediction block 265, so as to calculate the residual block 205 and reconstruct the reconstruction block 215.
[0213] Embodiments of the mode selection unit 260 may be used to select a segmentation and prediction mode (e.g., from those modes supported or available by the mode selection unit 260). The prediction mode provides the best match or minimum residual (minimum residual means better compression in transmission or storage), or provides minimum indication overhead (minimum indication overhead means better compression in transmission or storage), or considers or balances both of the above. The mode selection unit 260 may be used to determine the segmentation and prediction mode based on rate distortion optimization (RDO), that is, to select the prediction mode that provides the minimum rate distortion. The terms "best", "minimum", "optimal", etc. in this document do not necessarily mean "best", "minimum", "optimal", etc. in general, but may also refer to situations where termination or selection criteria are met, such as values exceeding or below a threshold or other constraints may result in a "suboptimal selection", but will reduce complexity and reduce processing time.
[0214] In other words, the segmentation unit 262 can be used to segment the image of the video sequence into a series of coding tree units (CTUs), and the CTU 203 can be further segmented into smaller partitions or sub-blocks (forming blocks again), for example, using quad-tree (QT) segmentation, binary-tree (BT) segmentation or triple-tree (TT) segmentation or any combination thereof iteratively, and predicting each block partition or sub-block, etc., wherein the mode selection includes selecting a tree structure of the partition block 203, and applying a prediction mode to each block partition or sub-block.
[0215] The segmentation (eg, performed by segmentation unit 260) and prediction processes (performed by inter-prediction unit 244 and intra-prediction unit 254) performed by exemplary video encoder 20 are described in detail below.
[0216] segmentation
[0217] The partitioning unit 262 can be used to partition an image in a video sequence into a series of coding tree units (CTUs). The partitioning unit 262 can partition (or divide) the coding tree unit (CTU) 203 into smaller partitions, such as square or rectangular tiles. For an image with three sample arrays, the CTU consists of an N×N luma sample block and two corresponding chroma sample blocks. The maximum allowed size of a luma block in a CTU is specified as 128×128 in the developing universal video coding (VVC), but may be specified as a value different from 128×128 in the future, such as 256×256. The CTUs of an image can be aggregated / grouped into stripe / block groups, blocks, or bricks. Blocks cover rectangular areas of an image, and blocks can be partitioned into one or more bricks. A brick consists of multiple CTU rows within a block. Blocks that are not partitioned into multiple bricks can be called bricks. However, bricks are a proper subset of blocks and are not called blocks. VVC supports two block group modes, namely raster scan strip / block group mode and rectangular strip mode. In the raster scan block group mode, a strip / block group includes a sequence of blocks when the image is raster scanned in blocks. In the rectangular strip mode, the strip includes multiple bricks in an image, which together constitute a rectangular area of the image. The bricks in the rectangular strip are arranged in the order of the brick raster scan in the strip. These smaller blocks (also called sub-blocks) can be further divided into even smaller partitions. This is also called tree partitioning or hierarchical tree partitioning, in which the root block of, for example, the root tree level 0 (hierarchical level 0, depth 0) can be recursively partitioned, for example, into two or more blocks of the next lower tree level, such as nodes of tree level 1 (hierarchical level 1, depth 1). These blocks can be partitioned again into two or more blocks of the next lower level, such as tree level 2 (hierarchical level 2, depth 2), etc., until the partitioning ends, for example, because the end criteria are met (for example, the maximum tree depth or the minimum block size is reached). Blocks that are not further divided are also called leaf blocks or leaf nodes of the tree. A tree divided into two parts is called a binary tree (BT), a tree divided into three parts is called a ternary tree (TT), and a tree divided into four parts is called a quadtree (QT).
[0218] For example, a coding tree unit (CTU) may be or may include one CTB of luma samples in an image with three sample arrays, two corresponding CTBs of chroma samples in the image, or one CTB of samples in a black and white image or in an image coded using three separate color planes and syntax structures. These syntax structures are used to decode the samples. Accordingly, a coding tree block (CTB) may be an N×N block of samples, where N may be set to a certain value, so that the component is divided into multiple CTBs, which is segmentation. A coding unit (CU) may be or may include one coding block of luma samples in an image with three sample arrays, two corresponding coding blocks of chroma samples, or one coding block of samples in a black and white image or in an image coded using three separate color planes and syntax structures. These syntax structures are used to decode the above samples. Accordingly, a coding block (CB) may be an M×N block of samples, where M and N may be set to a certain value, so that one CTB is divided into multiple coding blocks, which is segmentation.
[0219] In an embodiment, for example, according to HEVC, a coding tree unit (CTU) can be divided into multiple CUs by a quadtree structure represented as a coding tree. It is decided at the leaf CU level whether to use inter-frame (temporal) prediction or intra-frame (spatial) prediction to decode the image area. Each leaf CU can also be divided into 1, 2 or 4 PUs according to the PU partition type. The same prediction process is applied within a PU, and relevant information is sent to the decoder in units of PUs. After obtaining the residual block by performing the prediction process, according to the PU partition type, the leaf CU can be divided into transform units (TUs) according to another quadtree structure similar to the coding tree of the CU.
[0220] In an embodiment, for example, according to the latest video coding standard currently under development called universal video coding (VVC), a combined quadtree nested multi-type tree (using binary tree partitioning and ternary tree partitioning) segmentation structure is used, for example, to segment coding tree units. In the coding tree structure within the coding tree unit, the CU can be square or rectangular. For example, the coding tree unit (CTU) is first split by a quadtree. Then, the quadtree leaf nodes can be further split by a multi-type tree structure. In the multi-type tree structure, there are four types of splitting: vertical binary tree splitting (SPLIT_BT_VER), horizontal binary tree splitting (SPLIT_BT_HOR), vertical ternary tree splitting (SPLIT_TT_VER), and horizontal ternary tree splitting (SPLIT_TT_HOR). The multi-type leaf nodes are called coding units (CUs), and unless the size of the CU is too large for the maximum transform length, such segmentation is used for prediction and transform processing without any further segmentation. In most cases, this means that CU, PU, and TU have the same block size in the coding block structure of the quadtree nested multi-type tree. This anomaly occurs when the maximum supported transform length is less than the width or height of the color component of the CU. VVC has formulated a unique indication mechanism for segmentation information in the coding tree structure of the quadtree nested multi-type tree. In this indication mechanism, the coding tree unit (CTU) is used as the root of the quadtree and is first segmented by the quadtree structure. Then, each quadtree leaf node (when it is too large to be segmented) is further segmented by the multi-type tree structure. In the multi-type tree structure, the first flag (mtt_split_cu_flag) is indicated to indicate whether the node is further segmented; when the node is further segmented, the second flag (mtt_split_cu_vertical_flag) is first indicated to indicate the division direction, and then the third flag (mtt_split_cu_binary_flag) is indicated to indicate whether the division is a binary tree division or a ternary tree division. According to the values of mtt_split_cu_vertical_flag and mtt_split_cu_binary_flag, the multi-type tree split mode (MttSplitMode) of the CU can be derived by the decoder according to predefined rules or tables. It should be noted that for certain designs, such as the 64×64 luma block and 32×32 chroma pipeline design in the VVC hardware decoder, when the width or height of the luma coding block is greater than 64, TT splitting is prohibited, such as Figure 6As shown. TT partitioning is also prohibited when the width or height of the chroma coding block is greater than 32. The pipeline design partitions the image into virtual pipeline data units (VPDUs), which are defined as non-overlapping units in the image. In the hardware decoder, consecutive VPDUs are processed simultaneously by multiple pipeline stages. In most pipeline stages, the VPDU size is roughly proportional to the buffer size, so it is important to keep the VPDU size small. In most hardware decoders, the VPDU size can be set to the maximum transform block (TB) size. However, in VVC, ternary tree (TT) and binary tree (BT) partitioning may increase the size of the VPDU.
[0221] In addition, it should be noted that when a part of the tree node block exceeds the bottom boundary or the right boundary of the image, the tree node block is forcibly divided until all samples of each decoded CU are located within the image boundary.
[0222] For example, the intra sub-partition (ISP) tool may divide the luma intra prediction block into 2 or 4 sub-partitions vertically or horizontally, depending on the block size.
[0223] In one example, mode selection unit 260 in video encoder 20 may be used to perform any combination of the segmentation techniques described herein.
[0224] As described above, the video encoder 20 is used to determine or select the best or optimal prediction mode from a (eg, predetermined) prediction mode set. The prediction mode set may include intra-frame prediction mode and / or inter-frame prediction mode, etc.
[0225] Intra prediction
[0226] The intra prediction mode set may include 35 different intra prediction modes, for example, non-directional modes such as DC (or mean) mode and plane mode, or directional modes as defined in HEVC, or may include 67 different intra prediction modes, for example, non-directional modes such as DC (or mean) mode and plane mode, or directional modes as defined in VVC. For example, several traditional angle intra prediction modes are adaptively replaced by wide-angle intra prediction modes for non-square blocks defined in VVC. For another example, in order to avoid the division operation of DC prediction, only the longer side is used to calculate the average value of non-square blocks. Moreover, the intra prediction result of the plane mode can also be modified by the position-dependent intra prediction combination (PDPC) method.
[0227] The intra prediction unit 254 is configured to generate an intra prediction block 265 using reconstructed samples of neighboring blocks of the same current image according to an intra prediction mode in the intra prediction mode set.
[0228] The intra-frame prediction unit 254 (or generally the mode selection unit 260) is also used to output intra-frame prediction parameters (or generally information representing the selected intra-frame prediction mode of the block) to the entropy coding unit 270 in the form of syntax elements 266 to be included in the encoded image data 21, so that, for example, the video decoder 30 can receive and use the prediction parameters for decoding.
[0229] Inter prediction
[0230] The set of (possible) inter-frame prediction modes is based on the available reference image (i.e., for example, the at least partially decoded image stored in the DPB 230 as mentioned above) and other inter-frame prediction parameters, for example, based on whether the entire reference image is used or only a part of the reference image is used (e.g., a search window area around the area of the current block) to search for the best matching reference block, and / or for example, based on whether pixel interpolation is performed, such as half / half pixel interpolation, quarter pixel interpolation and / or 1 / 16 pixel interpolation.
[0231] In addition to the above-mentioned prediction modes, skip mode, direct mode and / or other inter-frame prediction modes may also be applied.
[0232] For example, in extended fusion prediction, the fusion candidate list in this mode consists of the following five candidate types in order: spatial MVP of spatially adjacent CUs, temporal MVP of juxtaposed CUs, history-based MVP of FIFO tables, paired average MVP, and zero MV. Decoder side motion vector refinement (DMVR) based on bidirectional matching can be used to increase the accuracy of MV in fusion mode. Merge mode with MVD (MMVD) comes from fusion mode with motion vector difference. The MMVD flag is indicated immediately after the skip flag and merge flag are sent to indicate whether the MMVD mode is used for the CU. In addition, the CU-level adaptive motion vector resolution (AMVR) scheme can be applied. The AMVR scheme supports decoding of the MVD of the CU with different precisions. According to the prediction mode of the current CU, the MVD of the current CU can be adaptively selected. When the CU is decoded in fusion mode, the combined inter / intra prediction (CIIP) mode can be applied to the current CU. The CIIP prediction is obtained by weighted averaging the inter prediction signal and the intra prediction signal. In affine motion compensation prediction, the affine motion field of the block is described by the motion information of two control points (4-parameter) or three control points (6-parameter) motion vectors. Subblock-based temporal motion vector prediction (SbTMVP) is similar to the temporal motion vector prediction (TMVP) in HEVC, but the motion vector of the sub-CU in the current CU is predicted. Bidirectional optical flow (BDOF), formerly known as BIO, is a simplified version that requires less computation (especially in terms of the number of multiplications and the size of the multipliers); in triangle partitioning mode, the CU is evenly divided into two triangular parts by diagonal partitioning and anti-diagonal partitioning. In addition, the bidirectional prediction mode is extended on the basis of simple averaging to allow weighted averaging of the two prediction signals.
[0233] The inter-frame prediction unit 244 may include a motion estimation (ME) unit and a motion compensation (MC) unit (neither of which is in Figure 2). The motion estimation unit may be configured to receive or acquire an image block 203 (a current image block 203 of a current image 17) and a decoded image 231, or at least one or more previously reconstructed blocks (e.g., reconstructed blocks of one or more other / different previously decoded images 231) for motion estimation. For example, a video sequence may include a current image and a previously decoded image 231, or in other words, the current image and the previously decoded image 231 may be part of or constitute a series of images, which constitute a video sequence.
[0234] For example, the encoder 20 may be configured to select a reference block from a plurality of reference blocks of the same or different images in a plurality of other images, and provide the reference image (or reference image index) and / or the offset (spatial offset) between the position (x coordinate, y coordinate) of the reference block and the position of the current block as an inter-frame prediction parameter to the motion estimation unit. This offset is also referred to as a motion vector (MV).
[0235] The motion compensation unit is used to obtain (e.g., receive) inter-frame prediction parameters, and perform inter-frame prediction based on or using the inter-frame prediction parameters to obtain an inter-frame prediction block 265. The motion compensation performed by the motion compensation unit may include extracting or generating a prediction block based on a motion / block vector determined by motion estimation, and may also include performing interpolation to obtain sub-pixel accuracy. Interpolation filtering can generate other pixel samples based on known pixel samples, thereby potentially increasing the number of candidate prediction blocks that can be used to decode the image block. Once the motion vector corresponding to the PU of the current image block is received, the motion compensation unit can locate the prediction block pointed to by the motion vector in one of the reference image lists.
[0236] The motion compensation unit may also generate syntax elements associated with blocks and video slices for use by the video decoder 30 when decoding image blocks of the video slices. In addition to or as an alternative to slices and corresponding syntax elements, partition groups and / or partitions and corresponding syntax elements may also be generated or used.
[0237] Entropy Coding
[0238] The entropy coding unit 270 is used to apply or not apply an entropy coding algorithm or scheme (e.g., a variable length coding (VLC) scheme, a context adaptive VLC (CAVLC) scheme, an arithmetic coding scheme, binarization, context adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding or other entropy coding methods or techniques) to (uncompressed) quantization coefficients 209, inter-frame prediction parameters, intra-frame prediction parameters, loop filter parameters and / or other syntax elements to obtain encoded image data 21 that can be output through an output terminal 272 in the form of an encoded bitstream 21, etc., so that, for example, the video decoder 30 can receive and use these parameters for decoding. The encoded bitstream 21 can be sent to the video decoder 30, or stored in a memory for later transmission or retrieval by the video decoder 30.
[0239] The video stream may be encoded using other receiving forms of the video encoder 20. For example, a non-transform based encoder 20 may directly quantize the residual signal for certain blocks or frames without the transform processing unit 206. In another implementation, the encoder 20 may include the quantization unit 208 and the inverse quantization unit 210 combined into a single unit.
[0240] Decoder and decoding method
[0241] Figure 3 An exemplary video decoder 30 for implementing the technology of the present application is shown. The video decoder 30 is used to receive the encoded image data 21 (e.g., the encoded code stream 21) encoded by the encoder 20 (e.g., to obtain a decoded image 331. The encoded image data or code stream includes information for decoding the encoded image data, such as data representing image blocks of encoded video slices (and / or partition groups or partitions) and related syntax elements.
[0242] exist Figure 3In the example of FIG. 3 , the decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., a summer 314), a loop filter 320, a decoded picture buffer (DPB) 330, a mode application unit 360, an inter-frame prediction unit 344, and an intra-frame prediction unit 354. The inter-frame prediction unit 344 may be or include a motion compensation unit. In some examples, the video decoder 30 may perform substantially the same as the reference Figure 2 The encoding pass described in the video encoder 100 is the inverse of the decoding pass.
[0243] As described with respect to the encoder 20, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter prediction unit 344, and the intra prediction unit 354 are also referred to as the “built-in decoder” constituting the video encoder 20. Accordingly, the inverse quantization unit 310 may be functionally identical to the inverse quantization unit 110, the inverse transform processing unit 312 may be functionally identical to the inverse transform processing unit 212, the reconstruction unit 314 may be functionally identical to the reconstruction unit 214, the loop filter 320 may be functionally identical to the loop filter 220, and the decoded picture buffer 330 may be functionally identical to the decoded picture buffer 230. Therefore, the explanation of the corresponding units and functions of the video encoder 20 applies accordingly to the corresponding units and functions of the video decoder 30.
[0244] Entropy decoding
[0245] The entropy decoding unit 304 is used to parse the code stream 21 (or generally the encoded image data 21) and perform entropy decoding on the encoded image data 21 to obtain the quantization coefficients 309 and / or the decoded encoding parameters ( Figure 3 The entropy decoding unit 304 may be used to apply a decoding algorithm or scheme corresponding to the coding scheme described with reference to the entropy coding unit 270 in the encoder 20. The entropy decoding unit 304 may also be used to provide the inter-frame prediction parameters, intra-frame prediction parameters and / or other syntax elements to the mode application unit 360, and to provide other parameters to other units of the decoder 30. The video decoder 30 may receive syntax elements at the video slice level and / or the video block level. In addition to or as an alternative to the slices and the corresponding syntax elements, block groups and / or blocks and corresponding syntax elements may also be received and / or used.
[0246] Dequantization
[0247] The inverse quantization unit 310 may be configured to receive a quantization parameter (QP) (or generally referred to as information related to inverse quantization) and a quantization coefficient from the encoded image data 21 (e.g., parsed and / or decoded by the entropy decoding unit 304, etc.), and inverse quantize the decoded quantization coefficient 309 according to the quantization parameters to obtain a dequantized coefficient 311. The dequantized coefficient 311 may also be referred to as a transform coefficient 311. The inverse quantization process may include using the quantization parameter determined by the video encoder 20 for each video block in a video slice (or partition or group of partitions) to determine a degree of quantization, and also determine a degree of inverse quantization that needs to be applied.
[0248] Inverse Transform
[0249] The inverse transform processing unit 312 can be used to receive the dequantized coefficients 311 (also called transform coefficients 311) and transform the dequantized coefficients 311 to obtain a reconstructed residual block 213 in the sample domain. The reconstructed residual block 213 can also be called a transform block 313. The transform can be an inverse transform, such as an inverse DCT, an inverse DST, an inverse integer transform, or a conceptually similar inverse transform process. The inverse transform processing unit 312 can also be used to receive transform parameters or corresponding information from the encoded image data 21 (e.g., parsed and / or decoded by the entropy decoding unit 304, etc.) to determine the transform to be performed on the dequantized coefficients 311.
[0250] reconstruction
[0251] The reconstruction unit 314 (eg, adder or summer 314 ) may be configured to add the reconstructed residual block 313 to the prediction block 365 to obtain the reconstructed block 315 in the sample domain by, for example, adding sample values of the reconstructed residual block 313 and sample values of the prediction block 365 .
[0252] Filtering
[0253] The loop filter unit 320 (in or after the decoding loop) is used to filter the reconstructed block 315 to obtain a filtered block 321, so as to smoothly perform pixel conversion or improve video quality in other ways. The loop filter unit 320 may include one or more loop filters, such as a deblocking filter, a sample adaptive offset (sample-adaptiveoffset, SAO) filter or one or more other filters, such as an adaptive loop filter (adaptive loopfilter, ALF), a noise suppression filter (noise suppression filter, NSF) or any combination thereof. In one example, the loop filter unit 220 may include a deblocking filter, an SAO filter and an ALF filter. The order of the filtering process may be deblocking filtering, SAO filtering and ALF filtering. In another example, a process called luma mapping with chroma scaling (LMCS) (i.e., an adaptive in-loop shaper) is added. This process is performed before deblocking filtering. In another example, the deblocking filtering process may also be applied to internal sub-block edges, such as affine sub-block edges, ATMVP sub-block edges, sub-block transform (SBT) edges, and intra sub-partition (ISP) edges. Figure 3 3. Although shown as an in-loop filter in FIG. 3, in other configurations, the loop filtering unit 320 may be implemented as a post-loop filter.
[0254] Decode image buffer
[0255] The decoded video block 321 of one picture is then stored in a decoded picture buffer 330, which stores the decoded picture 331 as a reference picture for subsequent motion compensation and / or output or display of other pictures.
[0256] The decoder 30 is used to output the decoded image 311 through an output terminal 312, etc., for display to a user or for viewing by the user.
[0257] predict
[0258] The inter-frame prediction unit 344 may be functionally identical to the inter-frame prediction unit 244 (particularly the motion compensation unit), and the intra-frame prediction unit 354 may be functionally identical to the inter-frame prediction unit 254, and may perform partitioning or segmentation decisions and predictions based on the segmentation mode and / or prediction parameters or corresponding information received from the coded image data 21 (e.g., parsed and / or decoded by the entropy decoding unit 304, etc.). The mode application unit 360 may be configured to perform prediction (intra-frame prediction or inter-frame prediction) on each block based on the reconstructed image, block, or corresponding sample (filtered or unfiltered), and obtain a prediction block 365.
[0259] When the video slice is decoded as an intra-coded (I) slice, the intra-prediction unit 354 in the mode application unit 360 is used to generate a prediction block 365 for the image block of the current video slice based on the signaled intra-prediction mode and data from the previously decoded block of the current image. When the video image is decoded as an inter-coded (i.e., B or P) slice, the inter-prediction unit 344 (e.g., motion compensation unit) in the mode application unit 360 is used to generate the prediction block 365 for the video block of the current video slice based on the motion vector and other syntax elements received from the entropy decoding unit 304. For inter-prediction, these prediction blocks can be generated based on one of the reference pictures in one of the reference picture lists. The video decoder 30 can construct the reference frame list 0 and list 1 using a default construction technique based on the reference pictures stored in the DPB 330. The same or similar processes may be applied to or by embodiments using partition groups (e.g., video partition groups) and / or partitions (e.g., video partitions) in addition to or as an alternative to slices (e.g., video slices), e.g., video may be decoded using I, P, or B partition groups and / or partitions.
[0260] The mode application unit 360 is used to determine prediction information for video blocks of the current video slice by parsing motion vectors or related information and other syntax elements, and use the prediction information to generate prediction blocks for the current video block being decoded. For example, the mode application unit 360 uses some received syntax elements to determine the prediction mode (e.g., intra-frame or inter-frame prediction) for decoding the video blocks of the video slice, the inter-frame prediction slice type (e.g., B slice, P slice, or GPB slice), the construction information of one or more reference picture lists for the slice, the motion vector for each inter-frame encoded video block of the slice, the inter-frame prediction state for each inter-frame decoded video block of the slice, and other information to decode the video blocks in the current video slice. In addition to slices (e.g., video slices) or as an alternative to slices, the same or similar process can be applied to or by embodiments using block groups (e.g., video block groups) and / or blocks (e.g., video blocks), for example, the video can be decoded using I, P, or B block groups and / or blocks.
[0261] Figure 3 The illustrated embodiment of the video decoder 30 may be used to segment and / or decode an image using slices (also referred to as video slices), wherein an image may be segmented or decoded using one or more slices (typically non-overlapping). Each slice may include one or more blocks (e.g., CTUs) or one or more groups of blocks (e.g., partitions (H.265 / HEVC and VVC) or bricks (VVC)).
[0262] exist Figure 3 In the embodiment of the video decoder 30 shown, the video decoder 30 can also be used to segment and / or decode an image using slices / block groups (also called video block groups) and / or blocks (also called video blocks). Among them, an image can be segmented or decoded using one or more slices / block groups (usually non-overlapping slices / block groups). Each slice / block group can include, for example, one or more blocks (such as CTUs) or one or more blocks, and each block can be, for example, rectangular and include one or more complete blocks or partial blocks (such as CTUs).
[0263] Other variations of the video decoder 30 may be used to decode the encoded image data 21. For example, the decoder 30 may generate an output video stream without the loop filter unit 320. For example, a non-transform based decoder 30 may directly dequantize the residual signal without the inverse transform processing unit 312 in certain blocks or frames. In another implementation, the video decoder 30 may include the dequantization unit 310 and the inverse transform processing unit 312 combined into a single unit.
[0264] It should be understood that, in the encoder 20 and the decoder 30, the processing result of the current step may be further processed and then output to the next step. For example, after interpolation filtering, motion vector derivation or loop filtering, the processing result of interpolation filtering, motion vector derivation or loop filtering may be further operated, such as clipping or shifting operation.
[0265] It should be noted that the derived motion vector of the current block (including but not limited to the control point motion vector of the affine mode, the sub-block motion vector of the affine mode, the planar mode, the ATMVP mode, the temporal motion vector, etc.) can be further operated. For example, the value of the motion vector is limited to a predefined range according to the representation bit of the motion vector. If the representation bit of the motion vector is bitDepth, the value range of the motion vector is –2^(bitDepth–1) to 2^(bitDepth–1)–1, where the “^” symbol represents the power. For example, if bitDepth is set to 16, the range is –32768 to 32767; if bitDepth is set to 18, the range is –131072 to 131071. For example, the value of the derived motion vector (for example, the MV of 4 4×4 sub-blocks in an 8×8 block) is limited so that the maximum difference between the integer parts of the MVs of the 4 4×4 sub-blocks does not exceed N pixels, for example, does not exceed 1 pixel. Here are two methods to limit motion vectors based on bitDepth.
[0266] Figure 4 Schematic diagram of a video decoding device 400 provided in an embodiment of the present invention. The video decoding device 400 is suitable for implementing the disclosed embodiments described herein. In one embodiment, the video decoding device 400 may be a decoder (e.g. Figure 1A A video decoder 30) or an encoder (such as Figure 1A video encoder 20).
[0267] The video decoding device 400 includes: an input port 410 (or input port 410) and a receiving unit (Rx) 420 for receiving data; a processor, a logic unit or a central processing unit (CPU) 430 for processing data; a transmitting unit (Tx) 440 and an output port 450 (or output port 450) for transmitting data; and a memory 460 for storing data. The video decoding device 400 may also include an optical-to-electrical (OE) component and an electrical-to-optical (EO) component coupled to the input port 410, the receiving unit 420, the transmitting unit 440 and the output port 450 for inputting and outputting optical signals or electrical signals.
[0268] The processor 430 is implemented by hardware and software. The processor 430 can be implemented as one or more CPU chips, one or more cores (e.g., multi-core processors), one or more FPGAs, one or more ASICs, and one or more DSPs. The processor 430 communicates with the input port 410, the receiving unit 420, the sending unit 440, the output port 450, and the memory 460. The processor 430 includes a decoding module 470. The decoding module 470 implements the disclosed embodiments described above. For example, the decoding module 470 performs, processes, prepares, or provides various decoding operations. Therefore, the inclusion of the decoding module 470 provides substantial improvements to the functions of the video decoding device 400 and affects the conversion of the video decoding device 400 to different states. Optionally, the decoding module 470 is implemented with instructions stored in the memory 460 and executed by the processor 430.
[0269] The memory 460 includes one or more disks, tape drives, and solid-state hard disks, and can be used as an overflow data storage device for storing such programs when such programs are selected for execution, and for storing instructions and data read during program execution. For example, the memory 460 can be volatile and / or non-volatile, and can be a read-only memory (ROM), a random access memory (RAM), a ternary content-addressable memory (TCAM), and / or a static random-access memory (SRAM).
[0270] Figure 5 A simplified block diagram of an apparatus 500 is provided for an exemplary embodiment, wherein the apparatus 500 may be used as either or both of the source device 12 and the destination device 14 in FIG. 1 .
[0271] The processor 502 in the device 500 may be a central processing unit. Alternatively, the processor 502 may be any other type of device or devices that are currently available or will be developed in the future and are capable of manipulating or processing information. Although the disclosed implementations may be implemented using a single processor such as the processor 502 shown in the figure, using multiple processors may improve speed and efficiency.
[0272] In one implementation, the memory 504 in the apparatus 500 may be a read only memory (ROM) device or a random access memory (RAM) device. Any other suitable type of storage device may be used as the memory 504. The memory 504 may include code and data 506 accessed by the processor 502 via a bus 512. The memory 504 may also include an operating system 508 and an application 510, the application 510 including at least one program that enables the processor 502 to perform the methods described herein. For example, the application 510 may include applications 1 to N, including a video decoding application that performs the methods described herein.
[0273] The apparatus 500 may also include one or more output devices, such as a display 518. In one example, the display 518 may be a touch-sensitive display that combines a display with a touch-sensitive element that can be used to sense touch input. The display 518 may be coupled to the processor 502 via the bus 512.
[0274] Although the bus 512 of the device 500 is described herein as a single bus, the bus 512 may include multiple buses. In addition, the auxiliary memory 514 may be directly coupled to other components in the device 500 or may be accessed through a network, and may include a single integrated unit (e.g., one memory card) or multiple units (e.g., multiple memory cards). Therefore, the device 500 may be implemented in a variety of configurations.
[0275] Embodiments of the present invention can implement two or more reference picture management schemes within one codec, for example, an implicit sliding window method (eg, used in AVC) and a reference picture list (RPL) management method (eg, VVC).
[0276] In a first embodiment of the present invention, the implicit sliding window method and the reference picture list (RPL) method are combined into one codec, and either of the two methods can be selected, for example, for sequence (SPS) level.
[0277] The following table provides a snippet of the SPS syntax table that represents a switch in the reference picture management method.
[0278]
[0279] sps_rpl_flag equal to 1 indicates that the syntax elements related to the reference picture list exist and the RPL method is used; sps_rpl_flag equal to 0 indicates that the syntax elements related to the reference picture list do not exist and the AVC method is used.
[0280] The following table provides an example indicating the reference picture syntax associated with the AVC or RPL method.
[0281]
[0282] The syntax parameter (or flag) sps_rpl_flag is sent, for example, at the SPS level (in another embodiment, it can be sent at the PPS or slice header) and indicates whether RPL should be used for reference picture management (flag value "1" indicates that RPL is used, flag value "0" indicates that RPL is not used, but an implicit sliding window mechanism is used instead).
[0283] If the RPL method is not enabled (sps_rpl_flag is equal to 0), max_num_tid0_ref_pics is only indicated for the implicit sliding window reference picture management method.
[0284] max_num_tid0_ref_pics indicates the maximum number of reference pictures in temporal layer 0 that can be used by the decoding process for inter prediction of any picture in the coded video sequence (CVS) (implicit sliding window reference picture management method). The value of max_num_tid0_ref_pics is also used to determine the size of the decoded picture buffer. The value of max_num_tid0_ref_pics is typically in the range of 0 to 5. When max_num_tid0_ref_pics is not present, the value of max_num_tid0_ref_pics is inferred to be equal to 0.
[0285] long_term_ref_pics_flag equal to 0 indicates that LTRP is not used for inter prediction of any coded picture in the CVS. long_term_ref_pics_flag equal to 1 indicates that LTRP may be used for inter prediction of one or more coded pictures in the CVS. When long_term_ref_pics_flag is not present, the value of long_term_ref_pics_flag is inferred to be equal to 0.
[0286] rpl1_same_as_rpl0_flag equal to 1 indicates that the syntax structures num_ref_pic_lists_in_sps[1] and ref_pic_list_struct(1,rplsIdx,ltrpFlag) do not exist and the following apply:
[0287] - The value of num_ref_pic_lists_in_sps[1] is inferred to be equal to the value of num_ref_pic_lists_in_sps[0].
[0288] - The value of each syntax element in ref_pic_list_struct(1,rplsIdx,ltrpFlag) is inferred to be equal to the value of the corresponding syntax element in ref_pic_list_struct(0,rplsIdx,ltrpFlag), where rplsIdx is in the range of 0 to num_ref_pic_lists_in_sps[0]–1.
[0289] num_ref_pic_lists_in_sps[i] represents the number of syntax structures ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag) included in the SPS with listIdx equal to i. The value of num_ref_pic_lists_in_sps[i] shall be in the range of 0 to 64, inclusive. When num_ref_pic_lists_in_sps[i] does not exist, the value of num_ref_pic_lists_in_sps[i] is inferred to be equal to 0.
[0290] Description: For each value of listIdx (equal to 0 or 1), the decoder must allocate memory for a total of num_ref_pic_lists_in_sps[i]+1 syntax structures ref_pic_list_struct(listIdx,rplsIdx,ltrpFlag), because there can be a syntax structure ref_pic_list_struct(listIdx,rplsIdx,ltrpFlag) directly indicated in the slice header of the current picture.
[0291] If the RPL method is enabled (sps_rpl_flag is equal to 1), the following RPL syntax is indicated at the stripe level.
[0292]
[0293]
[0294] According to the slice header syntax table, there is one syntax element (eg, ref_pic_list_sps_flag[i]) indicating whether the reference picture list indicated in the slice header or some reference picture lists indicated at the SPS level are used in the current slice.
[0295] In the current embodiment, ref_pic_list_sps_flag[i] is always indicated in the slice header for list0, and is also indicated for list1 only when rpl1_idx_present_flag is equal to 1.
[0296] In another embodiment similar to the first embodiment, if the RPL method is enabled (sps_rpl_flag is equal to 1), the following RPL syntax is indicated at the slice level.
[0297]
[0298] In this embodiment, if the number of RPL lists within the SPS is equal to 0, the ref_pic_list_sps_flag[i] element is not indicated.
[0299] ref_pic_list_sps_flag[i] equal to 1 indicates that the reference picture list i of the current picture is derived from one of the syntax structures ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag) with listIdx equal to i in the active SPS. ref_pic_list_sps_flag[i] equal to 0 indicates that the reference picture list i of the current picture is derived from the syntax structure ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag) with listIdx equal to i directly included in the slice header of the current picture. When num_ref_pic_lists_in_sps[i] is equal to 0, the value of ref_pic_list_sps_flag[i] shall be equal to 0. When rpl1_idx_present_flag is equal to 0 and ref_pic_list_sps_flag[0] is present, the value of ref_pic_list_sps_flag[1] is inferred to be equal to the value of ref_pic_list_sps_flag[0]. When rep_pic_list_sps_flag[i] is not present, the value of rep_pic_list_sps_flag[i] is inferred to be equal to 0.
[0300] ref_pic_list_idx[i] represents the index of the syntax structure ref_pic_list_struct(listIdx,rplsIdx,ltrpFlag) with listIdx equal to i included in the active SPS for deriving the reference picture list i of the current picture. The syntax element ref_pic_list_idx[i] is represented by Ceil(Log2(num_ref_pic_lists_in_sps[i])) bits. When ref_pic_list_idx[i] is not present, the value of ref_pic_list_idx[i] is inferred to be equal to 0. The value of ref_pic_list_idx[i] shall be in the range of 0 to num_ref_pic_lists_in_sps[i]–1, inclusive. When rpl1_idx_present_flag is equal to 0 and ref_pic_list_sps_flag[0] is present, the value of ref_pic_list_idx[1] is inferred to be equal to the value of ref_pic_list_idx[0].
[0301] The following describes applications of the encoding method and decoding method shown in the above embodiments and systems using these methods.
[0302] Figure 6 A block diagram of a content supply system 3100 for implementing a content distribution service. The content supply system 3100 includes a capture device 3102, a terminal device 3106, and optionally a display 3126. The capture device 3102 communicates with the terminal device 3106 via a communication link 3104. The communication link may include the above-mentioned communication channel 13. The communication link 3104 includes, but is not limited to, WIFI, Ethernet, cable, wireless (3G / 4G / 5G), USB, or any combination thereof.
[0303] Capture device 3102 generates data, and can encode data by the coding method shown in the above embodiment.Or, capture device 3102 can distribute data to stream server (not shown in the figure), and server encodes data and sends coded data to terminal device 3106.Capture device 3102 includes but is not limited to camera, smart phone or tablet computer, computer or notebook computer, video conferencing system, PDA, vehicle-mounted device, or any combination thereof etc.For example, capture device 3102 can include source device 12 as described above.When data includes video, the video encoder 20 included in capture device 3102 can actually perform video coding process.When data includes audio (that is, sound), the audio encoder included in capture device 3102 can actually perform audio coding process.For some actual scenes, capture device 3102 distributes coded video data and coded audio data by multiplexing coded video data and coded audio data together.For other actual scenes, for example, in video conferencing system, coded audio data and coded video data are not multiplexed. The capture device 3102 distributes the encoded audio data and the encoded video data to the terminal device 3106, respectively.
[0304] In the content providing system 3100, the terminal device 310 receives and reproduces the encoded data. The terminal device 3106 may be a device having data receiving and recovery capabilities, such as a smart phone or tablet computer 3108, a computer or laptop computer 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a television 3114, a set top box (STB) 3116, a video conferencing system 3118, a video surveillance system 3120, a personal digital assistant (PDA) 3122, a vehicle-mounted device 3124, or any combination of the above devices capable of decoding the above-mentioned encoded data. For example, the terminal device 3106 may include the destination device 14 as described above. When the encoded data includes video, the video decoder 30 included in the terminal device prioritizes video decoding. When the encoded data includes audio, the audio decoder included in the terminal device prioritizes audio decoding processing.
[0305] For a terminal device with a display, such as a smartphone or tablet 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a personal digital assistant (PDA) 3122, or a vehicle-mounted device 3124, the terminal device can feed the decoded data to the display of the terminal device. For a terminal device without a display (such as an STB 3116, a video conferencing system 3118, or a video surveillance system 3120), an external display 3126 is connected to receive and display the decoded data.
[0306] When performing encoding or decoding, each device in the system may use the image encoding device or the image decoding device as shown in the above embodiments.
[0307] Figure 7 3106. After the terminal device 3106 receives the stream from the capture device 3102, the protocol processing unit 3202 analyzes the transmission protocol of the stream. The protocol includes but is not limited to real-time streaming protocol (RTSP), hypertext transfer protocol (HTTP), HTTP live streaming protocol (HLS), MPEG-DASH, real-time transport protocol (RTP), real-time messaging protocol (RTMP), or any combination thereof.
[0308] After the protocol processing unit 3202 processes the stream, a stream file is generated. The file is output to the demultiplexing unit 3204. The demultiplexing unit 3204 can divide the multiplexed data into encoded audio data and encoded video data. As mentioned above, in other actual scenes, for example, in a video conferencing system, the encoded audio data and the encoded video data are not multiplexed. In this case, the encoded data is sent to the video decoder 3206 and the audio decoder 3208 without passing through the demultiplexing unit 3204.
[0309] Through the demultiplexing process, a video elementary stream (ES), an audio ES, and optional subtitles are generated. The video decoder 3206, including the video decoder 30 described in the above embodiment, decodes the video ES to generate video frames through the decoding method shown in the above embodiment, and feeds this data to the synchronization unit 3212. The audio decoder 3208 decodes the audio ES to generate audio frames, and feeds this data to the synchronization unit 3212. Alternatively, the video frames can be stored in a buffer ( Figure 7 Similarly, the audio frames may be stored in a buffer (not shown) before being fed to the synchronization unit 3212. Figure 7 (not shown).
[0310] The synchronization unit 3212 synchronizes the video frames and the audio frames and provides the video / audio to the video / audio display 3214. For example, the synchronization unit 3212 synchronizes the presentation of the video and audio information. The information may be coded in syntax using timestamps associated with the presentation of the decoded audio and visual data and timestamps associated with the transmission of the data stream itself.
[0311] If subtitles are included in the stream, the subtitle decoder 3210 decodes the subtitles, synchronizes the subtitles with the video frames and the audio frames, and provides the video / audio / subtitles to the video / audio / subtitle display 3216.
[0312] According to the above description, specifically, the following embodiments are provided. Figure 8 The method for decoding a coded video sequence provided by an embodiment is shown. Figure 8 The method shown in includes the step of obtaining (810) (e.g., by parsing) the value of a reference picture list (RPL) syntax element (e.g., sps_rpl_flag) from a bitstream of a video sequence. The RPL syntax element indicates whether syntax elements related to the reference picture list exist in the bitstream. The method also includes: when the RPL syntax element indicates that syntax elements related to the reference picture list exist in the bitstream, obtaining (820) the value of the syntax element related to the reference picture list from the bitstream. When the RPL syntax element indicates that syntax elements related to the reference picture list exist in the bitstream, constructing (830) at least one reference picture list for inter-frame prediction using the obtained value of the syntax element related to the reference picture list.
[0313] The method may further include: when the RPL syntax element indicates that the syntax element related to the reference picture list does not exist in the codestream, constructing at least one reference picture list for inter-frame prediction without further obtaining the value of the syntax element from the codestream. In this case, constructing at least one reference picture list for inter-frame prediction without further obtaining the value of the syntax element from the codestream may include: performing a sliding window method to construct at least one reference picture list for inter-frame prediction.
[0314] Therefore, reference picture list management based on reference picture lists and non-reference picture list management can be performed. Through the RPL syntax element (e.g., "sps_rpl_flag"), it is possible to efficiently control whether the reference picture list method can be used for the inter-frame prediction process, as well as the management of the inter-frame prediction process, especially the reference picture management.
[0315] The steps of constructing at least one reference picture list for inter-frame prediction using the obtained values of the syntax elements related to the reference picture list and constructing the values of at least one reference picture list for inter-frame prediction without further obtaining the values of the syntax elements from the bitstream can be respectively performed according to the EVC standard known to those skilled in the art. With reference to the standard, when constructing at least one reference picture list for inter-frame prediction using the obtained values of the syntax elements related to the reference picture list, the following applies to the construction process:
[0316] "A reference picture is addressed by a reference index. A reference index is an index into a reference picture list. When decoding an I slice, no reference picture list is used to decode the slice data. When decoding a P slice, only reference picture list 0 (i.e., RefPicList[0]) is used to decode the slice data. When decoding a B slice, both reference picture list 0 (i.e., RefPicList[0]) and reference picture list 1 (i.e., RefPicList[1]) are used to decode the slice data.
[0317] At the beginning of the decoding process for each slice in a non-IDR picture, reference picture lists RefPicList[0] and RefPicList[1] are derived. Reference picture lists are used to identify reference pictures or decoded slice data as specified in subclause 8.3.3.
[0318] Note: If the I slice in a non-IDR picture is not the first slice in the picture, RefPicList[0] and RefPicList[1] can be derived for code stream consistency checking, but RefPicList[0] and RefPicList[1] do not necessarily need to be derived when decoding the current picture or pictures that follow the current picture in decoding order. If the P slice is not the first slice in the picture, RefPicList[1] can be derived for code stream consistency checking, but RefPicList[1] does not necessarily need to be derived when decoding the current picture or pictures that follow the current picture in decoding order.
[0319] The reference picture lists RefPicList[0] and RefPicList[1] are constructed as follows:
[0320]
[0321] For each case where i is equal to 0 or 1, the following applies:
[0322] -The first NumRefIdxActive[i] entries in RefPicList[i] are called active entries in RefPicList[i], and the other entries in RefPicList[i] are called inactive entries in RefPicList[i].
[0323] - Each entry in RefPicList[i][j], j in the range 0 to NumEntriesInList[i][SliceRplsIdx[i]]–1 (inclusive), is called a STRP entry if lt_ref_pic_flag[i][SliceRplsIdx[i]][j] is equal to 0, otherwise it is called a LTRP entry. ”
[0324] Continuing with reference to the standard, when constructing at least one reference picture list for inter prediction without using the obtained value of the syntax element related to the reference picture list, the following applies to the construction process:
[0325] (1) “Call the decoding process in subclause 8.3.2.2.2 to populate the reference picture list with the lower PicOrderCntVal, where i is set equal to 0, startIdx is set equal to 0, and the output is the variable nextIdx.
[0326] (2) When nextIdx is less than NumRefIdxActive[0], the decoding process in subsection 8.3.2.2.3 is called to fill the reference picture list with a higher PicOrderCntVal, where i is set equal to 0, startIdx is set equal to nextIdx, and the output is the variable nextIdx.
[0327] (3) When nextIdx is less than NumRefIdxActive[0], NumRefIdxActive[0] is set equal to nextIdx.
[0328] For a B slice, the reference picture list RefPicList[1] is constructed as follows:
[0329] (1) Call the decoding process in subclause 8.3.2.2.3 to fill the reference picture list with a higher PicOrderCntVal, where i is set equal to 1, startIdx is set equal to 0, and the output is the variable nextIdx.
[0330] (2) When nextIdx is less than NumRefIdxActive[1], the decoding process in subsection 8.3.2.2.2 is called to fill the reference picture list with a lower PicOrderCntVal, where i is set equal to 1, startIdx is set equal to nextIdx, and the output is the variable nextIdx.
[0331] (3) When nextIdx is less than NumRefIdxActive[1], NumRefIdxActive[1] will be set equal to nextIdx. "
[0332] 8.3.2.2.2 Decoding process of filling the reference picture list with lower PicOrderCntVal pictures
[0333] The input to this process is:
[0334] - the reference picture list identifier i, and
[0335] - Starting index position startIdx.
[0336] The output of this process is the variable nextIdx, which represents the number of positions filled in the reference image list.
[0337] The variable nextIdx is set equal to startIdx.
[0338] The variable nextTemporalId is set equal to Max(TemporalId–1,0).
[0339] Set minPoc equal to the minimum value of PictureOrderCountVal of all reference pictures in the DPB.
[0340] Fill the reference picture list RefPicList[i] with the lower PicOrderCntVal pictures as follows:
[0341]
[0342] 8.3.2.2.3 Decoding process using higher PicOrderCntVal to fill reference picture list
[0343] The input to this process is:
[0344] - the reference picture list identifier i, and
[0345] - Starting index position startIdx.
[0346] The output of this process is the variable nextIdx, which represents the number of positions filled in the reference image list.
[0347] The variable nextIdx is set equal to startIdx.
[0348] The variable nextTemporalId is set equal to Max(TemporalId–1,0).
[0349] Set maxPoc equal to the maximum of PictureOrderCountVal of all reference pictures in the DPB.
[0350] Fill the reference picture list RefPicList[i] with the higher PicOrderCntVal pictures as follows:
[0351]
[0352] According to another embodiment, there is provided a method corresponding to the above decoding method and as Fig. 9 The method for encoding a video sequence shown in . Fig. 9The method for encoding a video sequence shown in comprises the step of determining (910) whether a value of a syntax element related to a reference picture list is used (by a decoding device) to construct at least one reference picture list for inter-frame prediction. In addition, the method comprises: generating (920) a code stream comprising an RPL syntax element, the RPL syntax element indicating whether a syntax element related to a reference picture list is present in the code stream, wherein, in the case of determining that the value of the syntax element related to the reference picture list is to be used (by a decoding device) to construct at least one reference picture list for inter-frame prediction, the RPL syntax element indicates that the syntax element related to the reference picture list is present in the code stream.
[0353] The above method can be implemented in a decoding device or an encoding device respectively, as described below.
[0354] like Fig.10 As shown in , according to one embodiment, a decoding device 1000 for decoding a coded video sequence is provided. The decoding device includes an acquisition unit 1010, which is used to acquire the value of a reference picture list (RPL) syntax element from a bitstream of the video sequence, the RPL syntax element indicating whether a syntax element related to the reference picture list exists in the bitstream, and when the RPL syntax element indicates that a syntax element related to the reference picture list exists in the bitstream, the value of the syntax element related to the reference picture list is acquired from the bitstream. In addition, the decoding device 1000 includes: an RPL construction unit 1020, which is used to construct at least one reference picture list for inter-frame prediction using the value of the syntax element related to the reference picture list provided by the acquisition unit 1010 when the RPL syntax element indicates that a syntax element related to the reference picture list exists in the bitstream.
[0355] Similarly, a method for Fig.11 An encoding device is shown for encoding a video sequence. Fig.11 The encoding device shown in includes: a determination unit 1110, configured to determine whether a value of a syntax element related to a reference image list is used to construct at least one reference image list for inter-frame prediction. In addition, the encoding device 1100 includes: a code stream generation unit 1120, configured to generate a code stream including an RPL syntax element, wherein the RPL syntax element indicates whether a syntax element related to a reference image list exists in the code stream, wherein, in the case where the determination unit 1110 determines that the value of the syntax element related to the reference image list is to be used to construct at least one reference image list for inter-frame prediction, the RPL syntax element indicates that the syntax element related to the reference image list exists in the code stream.
[0356] Fig.10The decoding device 1000 shown in FIG. 1 may be or may include Figure 1A , Figure 1B , Figure 3 The decoder 30 shown in FIG. Figure 7 In addition, the decoding device 1000 may include Figure 4 The video decoding device 400 shown in Figure 5 The device 500 shown in Figure 6 Terminal device 3106 shown in . Fig.11 The encoding device 1100 shown in FIG. 1 may be or may include Figure 1A , Figure 1B and Figure 3 In addition, the encoding device 1100 may include Figure 4 The video decoding device 400 shown in Figure 5 The device 500 shown in Figure 6 Capture device 3102 is shown.
[0357] In addition, the following examples are provided herein.
[0358] 1. A method for decoding (e.g., video), for example implemented by a decoding device, comprising:
[0359] Obtaining a flag (e.g., sps_rpl_flag or some other parameter) by parsing a bitstream (e.g., of an encoded video), the flag indicating whether syntax (e.g., syntax information or syntax parameters) related to a reference picture list (e.g., RPL) exists in the bitstream;
[0360] - if the flag (e.g., sps_rpl_flag) indicating whether syntax (e.g., syntax information or syntax parameters) related to a reference picture list (e.g., RPL) is present in the codestream is equal to 1 (or in general, if the flag value is set to a first value, such as 1 or 0, indicating that RPL should be used, wherein a corresponding / inverse second value, such as 0 or 1, indicates that RPL should not be used), then
[0361] Obtaining the syntax element representing (or defining) the reference picture list by parsing the code stream;
[0362] ·Manage the reference image list according to the acquired reference image list;
[0363] -otherwise,
[0364] • Performing a different reference picture list management (eg reference picture management using an implicit sliding window approach, e.g. using the syntax element max_num_tid0_ref_pics).
[0365] 2. The method of embodiment 1, wherein the flag (eg, sps_rpl_flag) indicating whether syntax related to a reference picture list (eg, RPL) exists in a codestream is indicated at an SPS level.
[0366] 3. A method according to embodiment 1 or 2, wherein the syntax (syntactic information or syntax parameters) representing the reference picture list is indicated at a sequence parameter set (SPS) level (at the SPS level, for example, rpl1_same_as_rpl0_flag and num_ref_pic_lists_in_sps[i], where “i” is the number of reference picture lists, for example, a value of “0” corresponds to list0 and a value of “1” corresponds to list1) and / or a slice header (SH) level (at the SH level, for example, ref_pic_list_sps_flag[i] and ref_pic_list_idx[i], where “i” is the number of reference picture lists, for example, a value of “0” corresponds to list0 and a value of “1” corresponds to list1).
[0367] 4. A method according to any one of the above embodiments, wherein a syntax element (e.g., ref_pic_list_sps_flag[i]) indicated at the slice header level (or in the slice header) indicates whether the reference image list indicated at the SPS level (see, for example, the syntax table ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag)) is used in or for the current slice (to which the slice header belongs).
[0368] 5. A method according to embodiment 4, wherein the syntax element indicated at the slice header level indicating whether the reference picture list indicated at the SPS level is used in the current slice (e.g., ref_pic_list_sps_flag[i]) is always indicated for the first reference list (e.g., list0), and is also indicated for the second reference list (list1) only when rpl1_idx_present_flag is equal to 1 (or generally, only when the syntax element indicating whether the second reference list is indicated in the code stream (e.g., the second flag) has a predetermined value, e.g., 1).
[0369] 6. A method according to embodiment 5, wherein the syntax element (e.g., ref_pic_list_sps_flag[i]) indicated at the slice header level (or in the slice header) indicating whether the reference picture list indicated at the SPS level is used in the current slice (to which the slice header belongs) is indicated at the slice header according to the following table fragment.
[0370]
[0371]
[0372] 7. A method according to embodiment 4, wherein the syntax element (e.g., ref_pic_list_sps_flag[i]) indicated at the slice header level (or in the slice header) indicating whether the reference picture list indicated at the SPS level is used in the current slice or for the current slice is not indicated if no reference picture list is indicated at the SPS level.
[0373] 8. A method according to embodiment 7, wherein the syntax element (e.g., ref_pic_list_sps_flag[i]) indicated at the slice header level and indicating whether the reference picture list indicated at the SPS level is used in the current slice is indicated for list0, and is indicated for list1 only when rpl1_idx_present_flag is equal to 1 (or generally, only when the syntax element (e.g., the second flag) indicating whether the second reference list is indicated in the code stream has a predetermined value, e.g., 1).
[0374] 9. The method according to embodiment 7 or embodiment 8, wherein the syntax element indicating which reference picture list to use is indicated at the slice header according to a following table fragment.
[0375]
[0376]
[0377] 10. A method for encoding (e.g. video), for example implemented by an encoding device, comprising:
[0378] Generate a code stream (for example, representing the encoding form of the video);
[0379] Adding a flag (e.g., sps_rpl_flag or some other parameter) (to the codestream) indicating whether syntax (e.g., syntax information or syntax parameters) related to a reference picture list (e.g., RPL) exists (or is added) in the codestream;
[0380] - if the flag (e.g., sps_rpl_flag) indicating whether syntax (e.g., syntax information or syntax parameters) related to a reference picture list (e.g., RPL) is present in the codestream is equal to 1 (or in general, if the flag value is set to a first value, such as 1 or 0, indicating that RPL should be used, wherein a corresponding / inverse second value, such as 0 or 1, indicates that RPL should not be used), then
[0381] Adding the syntax element representing (or defining) the reference picture list to the codestream;
[0382] -otherwise,
[0383] • Adding no syntax or adding additional syntax to enable the decoder to perform a different reference picture list management (eg reference picture management using an implicit sliding window approach, eg using the syntax element max_num_tid0_ref_pics).
[0384] 11. The method of embodiment 10, wherein the flag (eg, sps_rpl_flag) indicating whether syntax related to a reference picture list (eg, RPL) exists in a codestream is indicated at an SPS level.
[0385] 12. A method according to embodiment 10 or 11, wherein the syntax (syntactic information or syntax parameters) representing the reference picture list is indicated at a sequence parameter set (SPS) level (at the SPS level, for example, rpl1_same_as_rpl0_flag and num_ref_pic_lists_in_sps[i], where “i” is the number of reference picture lists, for example, a value of “0” corresponds to list0 and a value of “1” corresponds to list1) and / or a slice header (SH) level (at the SH level, for example, ref_pic_list_sps_flag[i] and ref_pic_list_idx[i], where “i” is the number of reference picture lists, for example, a value of “0” corresponds to list0 and a value of “1” corresponds to list1).
[0386] 13. A method according to any one of embodiments 10 to 12, wherein a syntax element (e.g., ref_pic_list_sps_flag[i]) indicated at the slice header level (or in the slice header) indicates whether the reference image list indicated at the SPS level (see, for example, syntax table ref_pic_list_struct(listIdx, rplsIdx, ltrpFlag)) is used in or for the current slice (to which the slice header belongs).
[0387] 14. A method according to embodiment 13, wherein the syntax element (e.g., ref_pic_list_sps_flag[i]) indicated at the slice header level and indicating whether the reference picture list indicated at the SPS level is used in the current slice is always indicated for the first reference list (e.g., list0), and is also indicated for the second reference list (list1) only when rpl1_idx_present_flag is equal to 1 (or generally, only when the syntax element (e.g., the second flag) indicating whether the second reference list is indicated in the code stream has a predetermined value, e.g., 1).
[0388] 15. A method according to embodiment 14, wherein the syntax element (e.g., ref_pic_list_sps_flag[i]) indicated at the slice header level (or in the slice header) indicating whether the reference picture list indicated at the SPS level is used in the current slice (to which the slice header belongs) is indicated at the slice header according to the following table fragment.
[0389]
[0390] 16. A method according to embodiment 15, wherein the syntax element (e.g., ref_pic_list_sps_flag[i]) indicated at the slice header level (or in the slice header) indicating whether the reference picture list indicated at the SPS level is used in the current slice or for the current slice is not indicated if no reference picture list is indicated at the SPS level.
[0391] 17. A method according to embodiment 16, wherein the syntax element (e.g., ref_pic_list_sps_flag[i]) indicated at the slice header level and indicating whether the reference picture list indicated at the SPS level is used in the current slice is indicated for list0, and is indicated for list1 only when rpl1_idx_present_flag is equal to 1 (or generally, only when the syntax element (e.g., the second flag) indicating whether the second reference list is indicated in the code stream has a predetermined value, e.g., 1).
[0392] 18. The method of embodiment 16 or embodiment 17, wherein the syntax element indicating which reference picture list to use is indicated at the slice header according to a following table fragment.
[0393]
[0394] 19. An encoder (20) comprising a processing circuit for performing the method according to any one of embodiments 10 to 18.
[0395] 20. A decoder (30) comprising a processing circuit for performing the method according to any one of embodiments 1 to 9.
[0396] 21. A computer program product comprising a program code for performing the method according to any one of embodiments 1 to 18 when the program code is executed on a computer or a processor.
[0397] 22. A decoder comprising:
[0398] one or more processors;
[0399] A non-transitory computer-readable storage medium is coupled to the processor and stores a program executed by the processor, wherein when the program is executed by the processor, the decoder performs the method according to any one of embodiments 1 to 9.
[0400] 23. An encoder comprising:
[0401] one or more processors;
[0402] A non-transitory computer-readable storage medium is coupled to the processor and stores a program executed by the processor, wherein the program, when executed by the processor, causes the encoder to perform the method according to any one of embodiments 10 to 18.
[0403] 24. A non-transitory computer readable medium carrying program code, which, when executed by a computer device, causes the computer device to perform the method according to any one of embodiments 1 to 18.
[0404] Additionally, it offers:
[0405] 1. A decoding method implemented by a decoding device, comprising:
[0406] By parsing the bitstream, a flag is obtained, wherein the flag indicates whether a syntax element related to the reference picture list exists in the bitstream;
[0407] In the case where a syntax element related to the reference picture list exists, acquiring the syntax element related to the reference picture list by parsing the bitstream;
[0408] The picture associated with the flag is predicted according to the syntax elements associated with the reference picture list.
[0409] 2. A decoding method implemented by an encoding device, comprising:
[0410] By parsing the code stream, determining whether a syntax element related to a reference picture list exists in the code stream;
[0411] In the case where the syntax element related to the reference picture list exists, the syntax element related to the reference picture list and a flag indicating that the syntax element related to the reference picture list exists in the code stream are encoded into the code stream.
[0412] The present invention is not limited to the above-mentioned system, and the image encoding device or the image decoding device in the above-mentioned embodiments can be combined with other systems, such as an automobile system.
[0413] Mathematical operators
[0414] The mathematical operators used in this application are similar to those used in the C programming language. However, the results of integer division and arithmetic shift operations are more precisely defined, and other operations such as exponentiation and real-valued division are defined. Numbering and counting specifications generally start at zero, for example, "first" is equivalent to 0, "second" is equivalent to 1, and so on.
[0415] Arithmetic operators
[0416] Arithmetic operators are defined as follows:
[0417]
[0418]
[0419] Logical operators
[0420] Logical operators are defined as follows:
[0421] x&&y Boolean logic "AND" operation of x and y
[0422] x||y Boolean logical "OR" operation of x and y
[0423] ! Boolean logic "not"
[0424] x? y:z If x is true (TRUE) or not equal to 0, it returns the value of y, otherwise it returns the value of z.
[0425] Relational operators
[0426] The relational operators are defined as follows:
[0427] > Greater than
[0428] >= greater than or equal to
[0429] < less than
[0430] <= less than or equal to
[0431] == is equal to
[0432] ! = Not equal to
[0433] When a relational operator is used on a syntax element or variable that has been assigned the value "na" (not applicable), the value "na" is considered to be the only value for that syntax element or variable. The value "na" is not equal to any other value.
[0434] Bitwise Operators
[0435] The bitwise operators are defined as follows:
[0436] & Bitwise AND. When operating on integer arguments, the operation is performed on the two's complement representation of the integer value. When operating on binary arguments, if that binary argument includes fewer bits than the other argument, the shorter argument is extended by adding more significant bits equal to 0.
[0437] | Bitwise OR. When operating on integer arguments, the operation is performed on the two's complement representation of the integer value. When operating on binary arguments, if that binary argument includes fewer bits than the other argument, the shorter argument is extended by adding more significant bits equal to 0.
[0438] ^ Bitwise exclusive OR. When operating on integer arguments, the two's complement representation of the integer value is used. When operating on binary arguments, if the binary argument has fewer bits than the other argument, the shorter argument is extended by adding more significant bits equal to 0.
[0439] x >> y shifts the two's complement integer representation of x by y binary digits. This function is defined only when y is a non-negative integer value. The bit values shifted into the most significant bit (MSB) due to the right shift are equal to the MSB of x before the shift operation.
[0440] x << y shifts the two's complement integer representation of x by y binary digits. This function is defined only when y is a non-negative integer value. The bit values shifted into the least significant bit (LSB) due to the left shift are equal to 0.
[0441] Assignment operators
[0442] Arithmetic operators are defined as follows:
[0443] = Assignment operator
[0444] ++ Increment, i.e., x++ is equivalent to x = x + 1; when used in an array index, it is equal to the value of the variable before the increment operation.
[0445] –– Decrement, i.e., x–– is equal to x = x – 1; when used in an array index, it is equal to the value of the variable before the decrement operation.
[0446] += Increase by a specified amount, i.e., x += 3 is equivalent to x = x + 3, and x += (–3) is equivalent to x = x + (–3).
[0447] –= Decrease by a specified amount, i.e., x –= 3 is equivalent to x = x – 3, and x –= (–3) is equivalent to x = x – (–3).
[0448] Range symbol
[0449] The following notation is used to indicate the range of values:
[0450] x = y..z x takes integer values from y to z (including y and z), where x, y, and z are integers and z is greater than y.
[0451] Mathematical functions
[0452] Mathematical functions are defined as follows:
[0453]
[0454] Asin(x) Trigonometric inverse sine function. For parameter x, the output value is in the range of –π÷2 to π÷2 (inclusive) for a value between –1.0 and 1.0 (inclusive). The unit is radians.
[0455] Atan(x) Trigonometric inverse tangent function. It operates on the parameter x and the output value is between –π÷2 and π÷2 (including the end values) in radians.
[0456]
[0457] Ceil(x) represents the smallest integer value greater than or equal to x.
[0458] Clip1 Y (x)=Clip3(0,(1< <BitDepth Y )–1,x)
[0459] Clip1 C (x)=Clip3(0,(1< <BitDepth C )–1,x)
[0460]
[0461] Cos(x) Trigonometric cosine function, operates on parameter x, in radians.
[0462] Floor(x) represents the largest integer value less than or equal to x.
[0463]
[0464] Ln(x) The natural logarithm of x (logarithm with base e, where e is the base constant of natural logarithms 2.718281828…).
[0465] Log2(x) Returns the base 2 logarithm of x.
[0466] Log10(x) returns the base 10 logarithm of x.
[0467]
[0468]
[0469] Round(x)=Sign(x)*Floor(Abs(x)+0.5)
[0470]
[0471] Sin(x) trigonometric sine function, operates on parameter x, in radians.
[0472]
[0473] Swap(x,y)=(y,x)
[0474] Tan(x) is the trigonometric tangent function, which operates on the parameter x in radians.
[0475] Operation priority order
[0476] When parentheses are not used to explicitly indicate precedence in an expression, the following rules apply:
[0477] - Operations with higher priority are evaluated before any operations with lower priority.
[0478] -Operations of the same priority are evaluated from left to right.
[0479] The following table describes the priority of operations from highest to lowest. The higher the position in the table, the higher the priority.
[0480] For operators that are also used in the C programming language, the order of precedence used in this specification is the same as the order of precedence used in the C programming language.
[0481] Table: Operation priority is sorted from highest (top of table) to lowest (bottom of table)
[0482]
[0483] Text description of the logical operation
[0484] In the text, statements for logical operations are described in mathematical form as follows:
[0485]
[0486] It can be described in the following way:
[0487] ...as follows / ...as follows:
[0488] – If condition 0 then statement 0
[0489] – Else If Condition 1 Then Statement 1
[0490] –……
[0491] – Otherwise (informative explanation of the remaining conditions), then statement n
[0492] Each "if ... else, if ... else, ..." statement in the text starts with "... as follows" or "... the following applies" followed by "if ...". The last condition of "if ... else, if ... else, ..." is always "otherwise, ...". Intermediate "if ... else, if ... else, ..." statements can be identified by matching "... as follows" or "... the following applies" with the ending "otherwise, ...".
[0493] In the text, statements for logical operations are described in mathematical form as follows:
[0494]
[0495] It can be described in the following way:
[0496] ...as follows / ...as follows:
[0497] – Statement 0 if all of the following conditions are met:
[0498] –Condition 0a
[0499] – Condition 0b
[0500] – Otherwise, if one or more of the following conditions are met, then statement 1:
[0501] –Condition 1a
[0502] – Condition 1b
[0503] –……
[0504] – Otherwise, statement n
[0505] In the text, statements for logical operations are described in mathematical form as follows:
[0506]
[0507] It can be described in the following way:
[0508] When condition 0, statement 0
[0509] When condition 1, statement 1
[0510] Although the embodiments of the present invention are mainly described in terms of video decoding, it should be noted that the embodiments of the decoding system 10, the encoder 20 and the decoder 30 (respectively, the system 10) and other embodiments described herein can also be used for still image processing or decoding, that is, processing or decoding a single image in video decoding that is independent of any previous or consecutive images. Typically, if the image processing decoding is limited to a single image 17, only the inter-frame prediction unit 244 (encoder) and 344 (decoder) are not available. All other functions (also referred to as tools or techniques) of the video encoder 20 and the video decoder 30 can also be used for still image processing, such as residual calculation 204 / 304, transformation 206, quantization 208, inverse quantization 210 / 310, (inverse) transformation 212 / 312, segmentation 262 / 362, intra-frame prediction 254 / 354 and / or loop filtering 220 / 320, entropy coding 270 and entropy decoding 304.
[0511] Embodiments of encoders 20, decoders 30, etc. and the functions described herein with reference to encoders 20, decoders 30, etc. may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the various functions may be stored as one or more instructions or codes in a computer-readable medium or transmitted via a communication medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media corresponding to tangible media (e.g., data storage media), or communication media including any medium that facilitates the transfer of computer programs from one place to another (e.g., according to a communication protocol). In this manner, computer-readable media may generally correspond to (1) non-transitory tangible computer-readable storage media, or (2) communication media such as signals or carrier waves. Data storage media may be any available media accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementing the techniques described in the present invention. A computer program product may include a computer-readable medium.
[0512] As an example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory or any other medium that can be used to store the desired program code in the form of instructions or data structures and can be accessed by a computer. In addition, any connection can be appropriately referred to as a computer-readable medium. For example, if a coaxial cable, optical fiber cable, twisted pair, digital subscriber line (DSL) or wireless technologies such as infrared, radio and microwave are used to transmit instructions from a website, server or other remote source, then the coaxial cable, optical fiber cable, twisted pair, DSL or wireless technologies such as infrared, radio and microwave are included in the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carriers, signals or other transient media, but rather involve non-transient tangible storage media. Disks and optical disks used herein include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks and Blu-ray discs, where disks typically reproduce data magnetically, while optical discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0513] Instructions may be executed by one or more processors such as one or more digital signal processors (DSPs), one or more general-purpose microprocessors, one or more application specific integrated circuits (ASICs), one or more field programmable logic arrays (FPLAs), or other equivalent integrated or discrete logic circuits. Therefore, the term "processor" used herein may refer to any of the above structures or any other structure suitable for implementing the techniques described herein. In addition, in some aspects, the various functions described herein may be provided in dedicated hardware and / or software modules for encoding and decoding, or incorporated in a combined codec. Moreover, these techniques may be fully implemented in one or more circuits or logic elements.
[0514] The techniques of the present invention may be implemented in a variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs), or a set of ICs (e.g., chipsets). The present invention describes various components, modules, or units to emphasize functional aspects of devices for performing the disclosed techniques, but they do not necessarily need to be implemented by different hardware units. In fact, as described above, the various units may be combined in a codec hardware unit in conjunction with appropriate software and / or firmware, or provided by a collection of interoperable hardware units (including one or more processors as described above).
Claims
1. A method for decoding a coded video sequence, characterized in that: include: Acquire a value of a reference picture list RPL syntax element from a bitstream of the video sequence, wherein the RPL syntax element indicates whether a syntax element related to the reference picture list exists in the bitstream; When the RPL syntax element indicates that the syntax element related to the reference picture list exists in the codestream: (a) obtaining the value of the syntax element related to the reference picture list from the codestream; (b) constructing at least one reference picture list for inter-frame prediction using the acquired value of the syntax element related to the reference picture list; When the RPL syntax element indicates that the syntax element related to the reference picture list does not exist in the code stream, construct at least one reference picture list for inter-frame prediction without further obtaining the value of the syntax element from the code stream.
2. The method according to claim 1, characterized in that The constructing at least one reference picture list for inter-frame prediction without further obtaining the value of the syntax element from the code stream includes: performing a sliding window method to construct at least one reference picture list for inter-frame prediction.
3. The method according to claim 1 or 2, characterized in that: Also includes: When the RPL syntax element indicates that the syntax element related to the reference picture list does not exist in the code stream, a value of a second syntax element related to the reference picture identifier is obtained from the code stream.
4. The method according to claim 1 or 2, characterized in that: The syntax element related to the reference picture list is the first syntax element related to the construction of the reference picture list.
5. The method according to claim 4, characterized in that The first syntax element related to reference picture list construction is included in at least one reference picture list syntax structure, wherein each reference picture list syntax structure is used to construct a reference picture list.
6. The method according to claim 3, characterized in that: The second syntax element related to reference picture identification provides information about a maximum number of reference pictures that can be used for inter-frame prediction of pictures of the video sequence.
7. The method according to claim 1 or 2, characterized in that: The RPL syntax element is a flag, and a first value of the flag indicates that a syntax element related to a reference picture list exists in the codestream, and a second value of the flag different from the first value indicates that a syntax element related to the reference picture list does not exist in the codestream.
8. The method according to claim 7, characterized in that The first value is 1 and the second value is 0.
9. The method according to claim 1 or 2, characterized in that: The value of the RPL syntax element is obtained from one of a sequence parameter set, a picture parameter set, and a slice header.
10. The method according to claim 1 or 2, characterized in that: The syntax elements related to the reference picture list are obtained from a sequence parameter set and / or a slice header.
11. The method according to claim 1, characterized in that: It also includes, when the RPL syntax element indicates that the syntax element related to the reference picture list exists in the code stream, obtaining the value of at least one third syntax element from the slice header, and the value of the at least one third syntax element indicates whether the syntax element related to the reference picture list can be obtained from the sequence parameter set or the slice header.
12. The method according to claim 11, characterized in that The at least one third syntax element includes two third syntax elements, wherein the value of one third syntax element of the two third syntax elements is obtained for a first reference picture list, and in a case where a fourth syntax element obtained from the codestream indicates that another third syntax element of the two third syntax elements exists in the codestream, the value of the other third syntax element is obtained for a second reference list.
13. The method according to claim 12, characterized in that The fourth syntax element is another flag, and a value of 1 of the another flag indicates that the another third syntax element exists in the codestream.
14. The method according to claim 11, 12 or 13, characterized in that At least one value of the third syntax element is obtained when there is at least one reference picture list syntax structure indicated at a sequence parameter set level in the codestream, wherein each reference picture list syntax structure is used to construct a reference picture list.
15. A method for encoding a video sequence, characterized in that: include: determining whether a value of a syntax element associated with a reference picture list is used to construct at least one reference picture list for inter prediction; generating a code stream including an RPL syntax element, wherein the RPL syntax element indicates whether a syntax element related to a reference picture list exists in the code stream, wherein, in a case where it is determined that the value of the syntax element related to the reference picture list is to be used to construct at least one reference picture list for inter prediction, the RPL syntax element indicates that the syntax element related to the reference picture list exists in the code stream; When it is determined that the value of the syntax element related to the reference picture list is not used to construct at least one reference picture list for inter-frame prediction, the code stream includes a second syntax element related to the reference picture identifier.
16. The method according to claim 15, characterized in that The syntax element related to the reference picture list is the first syntax element related to the construction of the reference picture list.
17. The method according to claim 16, characterized in that The first syntax element related to reference picture list construction is included in at least one reference picture list syntax structure, wherein each reference picture list syntax structure is used to construct a reference picture list.
18. The method according to claim 15, characterized in that The second syntax element related to reference picture identification provides information about a maximum number of reference pictures that can be used for inter-frame prediction of pictures of the video sequence.
19. The method according to any one of claims 15 to 18, characterized in that The RPL syntax element is a flag, and a first value of the flag indicates that a syntax element related to a reference picture list exists in the codestream, and a second value of the flag different from the first value indicates that a syntax element related to the reference picture list does not exist in the codestream.
20. The method according to claim 19, characterized in that The first value is 1 and the second value is 0.
21. The method according to any one of claims 15 to 18, characterized in that The RPL syntax element is indicated in one of a sequence parameter set, a picture parameter set, and a slice header.
22. The method according to any one of claims 15 to 18, characterized in that The syntax elements related to the reference picture list are included in a sequence parameter set and / or a slice header.
23. The method according to any one of claims 15 to 18, characterized in that When it is determined that the value of the syntax element related to the reference picture list is to be used to construct at least one reference picture list for inter prediction, at least one third syntax element is included in the slice header, and the at least one third syntax element indicates whether the syntax element related to the reference picture list can be obtained from the sequence parameter set or the slice header.
24. The method according to claim 23, characterized in that The codestream includes a fourth syntax element, and the at least one third syntax element includes two third syntax elements, wherein one of the two third syntax elements is used for a first reference picture list, and when a value of the fourth syntax element indicates that another third syntax element of the two third syntax elements exists in the codestream, the other third syntax element is used for a second reference list.
25. The method according to claim 24, characterized in that The fourth syntax element is another flag, and a value of 1 of the another flag indicates that the another third syntax element exists in the codestream.
26. The method according to claim 23, characterized in that At least one reference picture list syntax structure is indicated in the codestream at a sequence parameter set level, wherein each reference picture list syntax structure is used to construct a reference picture list.
27. An encoder (20), characterized in that Comprising a processing circuit for performing a method according to any one of claims 15 to 26.
28. A decoder (30), characterized in that The method comprises a processing circuit for performing the method according to any one of claims 1 to 14.
29. A computer program product comprising program code, characterized in that When the program code is executed on a computer or a processor, it is used to perform the method according to any one of claims 1 to 26.
30. A decoder, characterized in that: The decoder comprises: one or more processors; A non-transitory computer-readable storage medium is coupled to the processor and stores a program executed by the processor, wherein the program, when executed by the processor, causes the decoder to perform the method according to any one of claims 1 to 14.
31. An encoder, characterized in that include: one or more processors; A non-transitory computer-readable storage medium is coupled to the processor and stores a program executed by the processor, wherein the program, when executed by the processor, causes the encoder to perform the method according to any one of claims 15 to 26.
32. A non-transitory computer readable medium, characterized in that The device carries a program code, which, when executed by a computer device, causes the computer device to execute the method according to any one of claims 1 to 26.
33. A decoding device (1000) for decoding a coded video sequence, characterized in that include: An acquiring unit (1010) is used to acquire a value of a reference picture list RPL syntax element from a bitstream of the video sequence, wherein the RPL syntax element indicates whether a syntax element related to the reference picture list exists in the bitstream, When the RPL syntax element indicates that the syntax element related to the reference picture list exists in the code stream, obtaining a value of the syntax element related to the reference picture list from the code stream; An RPL construction unit (1020) is configured to construct at least one reference picture list for inter-frame prediction using the acquired value of the syntax element related to the reference picture list when the RPL syntax element indicates that the syntax element related to the reference picture list exists in the bitstream; The RPL construction unit (1020) is used to construct at least one reference picture list for inter-frame prediction without further obtaining the value of the syntax element from the code stream when the RPL syntax element indicates that the syntax element related to the reference picture list does not exist in the code stream.
34. The decoding device (1000) according to claim 33, characterized in that The constructing at least one reference picture list for inter-frame prediction without further obtaining the value of the syntax element from the code stream includes: performing a sliding window method to construct at least one reference picture list for inter-frame prediction.
35. The decoding device (1000) according to any one of claims 33 to 34, characterized in that The acquisition unit (1010) is used for acquiring the value of a second syntax element related to a reference picture identifier from the code stream when the RPL syntax element indicates that the syntax element related to the reference picture list does not exist in the code stream.
36. The decoding device (1000) according to claim 33 or 34, characterized in that The syntax element related to the reference picture list is the first syntax element related to the construction of the reference picture list.
37. The decoding device (1000) according to claim 36, characterized in that The first syntax element related to reference picture list construction is included in at least one reference picture list syntax structure, and the RPL construction unit (1020) is used to construct a reference picture list using each reference picture list syntax structure.
38. The decoding device (1000) according to claim 35, characterized in that The second syntax element related to reference picture identification provides information about a maximum number of reference pictures that can be used for inter-frame prediction of pictures of the video sequence.
39. The decoding device (1000) according to claim 33 or 34, characterized in that The RPL syntax element is a flag, and a first value of the flag indicates that a syntax element related to a reference picture list exists in the codestream, and a second value of the flag different from the first value indicates that a syntax element related to the reference picture list does not exist in the codestream.
40. The decoding device (1000) according to claim 39, characterized in that The first value is 1 and the second value is 0.
41. The decoding device (1000) according to claim 33 or 34, characterized in that The acquisition unit (1010) is used to acquire the value of the RPL syntax element from one of a sequence parameter set, a picture parameter set and a slice header.
42. The decoding device (1000) according to claim 33 or 34, characterized in that The acquisition unit (1010) is used to acquire the syntax elements related to the reference picture list from a sequence parameter set and / or a slice header.
43. The decoding device (1000) according to claim 33, characterized in that The acquisition unit (1010) is used to acquire the value of at least one third syntax element from the slice header when the RPL syntax element indicates that the syntax element related to the reference picture list exists in the code stream, and the value of the at least one third syntax element indicates whether the syntax element related to the reference picture list can be obtained from the sequence parameter set or the slice header.
44. The decoding device (1000) according to claim 43, characterized in that The at least one third syntax element includes two third syntax elements, wherein the acquisition unit (1010) is used to acquire the value of one of the two third syntax elements for a first reference picture list, and when a fourth syntax element acquired from the code stream indicates that another third syntax element of the two third syntax elements exists in the code stream, acquire the value of the other third syntax element for a second reference list.
45. The decoding device (1000) according to claim 44, characterized in that The fourth syntax element is another flag, and a value of 1 of the another flag indicates that the another third syntax element exists in the codestream.
46. The decoding device (1000) according to claim 43, 44 or 45, characterized in that The acquisition unit (1010) is used to acquire at least one value of the third syntax element when there is at least one reference picture list syntax structure indicated at the sequence parameter set level in the code stream, and wherein the RPL construction unit (1020) is used to construct a reference picture list using each reference picture list syntax structure.
47. An encoding device (1100) for encoding a video sequence, characterized in that include: A determination unit (1110) for determining whether a value of a syntax element related to a reference picture list is used to construct at least one reference picture list for inter-frame prediction; A code stream generating unit (1120), configured to generate a code stream including an RPL syntax element, wherein the RPL syntax element indicates whether a syntax element related to a reference picture list exists in the code stream, wherein, in a case where the value of the syntax element related to the reference picture list is determined by the determining unit (1110) to be used for constructing at least one reference picture list for inter-frame prediction, the RPL syntax element indicates that the syntax element related to the reference picture list exists in the code stream; When the determination unit (1110) determines that the value of the syntax element related to the reference picture list is not used to construct at least one reference picture list for inter-frame prediction, the code stream includes a second syntax element related to the reference picture identification.
48. The encoding device (1100) according to claim 47, characterized in that The syntax element related to the reference picture list is the first syntax element related to the construction of the reference picture list.
49. The encoding device (1100) according to claim 48, characterized in that The first syntax element related to reference picture list construction is included in at least one reference picture list syntax structure, wherein each reference picture list syntax structure is used to construct a reference picture list.
50. The encoding device (1100) according to claim 49, characterized in that The second syntax element related to reference picture identification provides information about a maximum number of reference pictures that can be used for inter-frame prediction of pictures of the video sequence.
51. The encoding device (1100) according to any one of claims 47 to 50, characterized in that The RPL syntax element is a flag, and a first value of the flag indicates that a syntax element related to a reference picture list exists in the codestream, and a second value of the flag different from the first value indicates that a syntax element related to the reference picture list does not exist in the codestream.
52. The encoding device (1100) according to claim 51, characterized in that The first value is 1 and the second value is 0.
53. The encoding device (1100) according to any one of claims 47 to 50, characterized in that The RPL syntax element is included in one of a sequence parameter set, a picture parameter set, and a slice header.
54. The encoding device (1100) according to any one of claims 47 to 50, characterized in that The syntax elements related to the reference picture list are included in a sequence parameter set and / or a slice header.
55. The encoding device (1100) according to any one of claims 47 to 50, characterized in that When it is determined by the determination unit (1110) that the value of the syntax element related to the reference picture list is to be used to construct at least one reference picture list for inter-frame prediction, at least one third syntax element is included in the slice header, and the at least one third syntax element indicates whether the syntax element related to the reference picture list can be obtained from the sequence parameter set or the slice header.
56. The encoding device (1100) according to claim 55, characterized in that The codestream includes a fourth syntax element, and the at least one third syntax element includes two third syntax elements, wherein one third syntax element of the two third syntax elements is used for a first reference picture list, and when a value of the fourth syntax element indicates that another third syntax element of the two third syntax elements exists in the codestream, the other third syntax element is used for a second reference list.
57. The encoding device (1100) according to claim 56, characterized in that The fourth syntax element is another flag, and a value of 1 of the another flag indicates that the another third syntax element exists in the codestream.
58. The encoding device (1100) according to claim 55, characterized in that At least one reference picture list syntax structure is included in the sequence parameter set, wherein each reference picture list syntax structure is used to construct a reference picture list.
59. A non-transitory computer-readable storage medium, characterized in that: The non-transitory computer-readable storage medium stores computer instructions or programs. When the computer instructions or programs are executed on a computer, the computer is caused to implement the method according to any one of claims 1 to 26.