Method and apparatus for signaling the number of candidates for merge mode
By conditionally signaling geometric partitioning merge mode candidates in video decoding, the method addresses the challenge of efficient video data compression, improving compression ratios and decoding efficiency in video coding systems.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- HUAWEI TECH CO LTD
- Filing Date
- 2026-02-04
- Publication Date
- 2026-05-26
AI Technical Summary
Existing video coding technologies face challenges in efficiently compressing video data while maintaining high quality, particularly in scenarios with limited network bandwidth, where improved compression techniques are needed to reduce data volume without sacrificing picture quality.
A method and apparatus for signaling the maximum number of geometric partitioning merge mode candidates in video decoding, allowing conditional signaling of these candidates based on bitstream indicators, thereby optimizing bitstream utilization and decoding efficiency.
This approach enhances video coding efficiency by improving compression ratios with minimal impact on picture quality, optimizing bitstream utilization, and enhancing decoding performance.
Smart Images

Figure 2026086555000001_ABST
Abstract
Description
[Technical Field]
[0001] This patent application claims priority to US 62 / 961,159, filed on 14 January 2020. The disclosure of the aforementioned patent application is incorporated herein by reference in its entirety.
[0002] Embodiments of this application generally relate to the field of video coding, and more specifically to signaling the number of merge mode candidates. [Background technology]
[0003] Video coding (video encoding and decoding) is used in a wide range of digital video applications, such as broadcast digital TV, video transmission over the internet and mobile networks, real-time conversation applications like video chat and video conferencing, DVD and Blu-ray discs, video content collection and editing systems, and camcorders in security applications.
[0004] The amount of video data required to depict even relatively short videos is substantial, which can become challenging when data is streamed or otherwise transmitted over communication networks with limited bandwidth. Therefore, video data is generally compressed before being transmitted over modern telecommunications networks. Video size can also be a concern when video is stored on storage devices, as memory resources may be limited. Video compression devices often use software and / or hardware at the source to encode video data before transmission or storage, thereby reducing the amount of data required to represent the digital video image. The compressed data is then received at the destination by a video decompression device that decodes the video data. Given limited network resources and the ever-increasing demand for higher video quality, improved compression and decompression techniques that improve compression ratios with little sacrifice to picture quality are desirable. [Overview of the project]
[0005] Embodiments of this application provide an apparatus and method for encoding and decoding according to an independent claim. The aforementioned and other objectives are achieved by the subject matter of the independent claim. Further implementations are evident from the dependent claims, specification and drawings. Certain embodiments are outlined in the attached independent claims, and other embodiments are outlined in the dependent claims.
[0006] A first aspect of the present invention provides a method for obtaining the maximum number of geometric partitioning merger mode candidates for video decoding, The method includes obtaining a bitstream for a video sequence, obtaining a value for a first indicator according to the bitstream, the first indicator representing the maximum number of motion vector prediction MVP candidates to merge, obtaining a value for a second indicator according to the bitstream, the second indicator representing whether geometric partition-based motion compensation is enabled for the video sequence, and analyzing a value for a third indicator from the bitstream when the value of the first indicator is greater than a threshold and the value of the second indicator is equal to a preset value, the third indicator representing the maximum number of geometric partitioning merge mode candidates subtracted from the value of the first indicator.
[0007] According to embodiments of the present invention, a signaling scheme for an indicator of the number of merge mode candidates is disclosed. The maximum number of geometric partitioning merge mode candidates is conditionally signaled. Thus, bitstream utilization and decoding efficiency are improved.
[0008] In one implementation, the method further includes setting the maximum number of geometric partitioning merge mode candidates to 2 when the value of the first indicator is equal to a threshold and the value of the second indicator is equal to a preset value.
[0009] In one implementation, the method further includes setting the value of the maximum number of geometric partitioning merge mode candidates to 0 when the value of the first indicator is less than a threshold or the value of the second indicator is not equal to a preset value.
[0010] In one implementation, the threshold is 2.
[0011] In one implementation, the preset value is 1.
[0012] In one implementation, obtaining the value of the second indicator is performed after obtaining the value of the first indicator.
[0013] In one implementation, the first indicator is obtained by syntax elements coded in the bitstream.
[0014] In one implementation, when the value of the first indicator is greater than or equal to a threshold, the value of the second indicator is parsed from the sequence parameter set SPS of the bitstream. For example, to obtain the value of the second indicator, the syntax elements in the sequence parameter set SPS are parsed.
[0015] In one implementation, the value of the second indicator is obtained from the sequence parameter set SPS of the bitstream. For example, to obtain the value of the second indicator, the syntax elements in the sequence parameter set SPS are parsed. In one implementation, the value of the third indicator is obtained from the sequence parameter set SPS of the bitstream. For example, to obtain the value of the third indicator, the syntax elements in the sequence parameter set SPS are parsed.
[0016] A second aspect of the present invention provides a video decoder, the video decoder comprising: a receiving module configured to acquire a bitstream for a video sequence; an acquisition module configured to acquire a value of a first indicator according to the bitstream, the first indicator representing the maximum number of motion vector prediction MVP candidates to merge; the acquisition module is configured to acquire a value of a second indicator according to the bitstream, the second indicator representing whether geometric partition-based motion compensation is enabled for the video sequence; and an analysis module configured to analyze a value of a third indicator from the bitstream when the value of the first indicator is greater than a threshold and when the value of the second indicator is equal to a preset value, the third indicator representing the maximum number of geometric partitioning merge mode candidates subtracted from the value of the first indicator.
[0017] A method according to a first aspect of the present invention may be carried out by a device according to a second aspect of the present invention. Further features and implementations of a method according to a first aspect of the present invention correspond to features and implementation forms of a device according to a second aspect of the present invention.
[0018] In one implementation, when the value of the first indicator is equal to a threshold and the value of the second indicator is equal to a preset value, the acquisition module is configured to set the value of the maximum number of geometric partitioning merge mode candidates to 2.
[0019] In one implementation, the acquisition module is configured to set the value of the maximum number of geometric partitioning merge mode candidates to 0 when the value of the first indicator is less than a threshold or the value of the second indicator is not equal to a preset value.
[0020] In one implementation, the threshold is 2.
[0021] In one implementation, the preset value is 1.
[0022] In one implementation, obtaining the value of the second indicator is performed after obtaining the value of the first indicator.
[0023] In one implementation, when the value of the first indicator is greater than or equal to a threshold, the value of the second indicator is analyzed from the bitstream sequence parameter set SPS.
[0024] In one implementation, the value of the second indicator is obtained from the bitstream sequence parameter set SPS.
[0025] In one implementation, the value of the third indicator is obtained from the bitstream sequence parameter set SPS.
[0026] One implementation discloses a method for obtaining the maximum number of geometric partitioning merge mode candidates for video decoding. The method includes obtaining a bitstream for a video sequence, obtaining a value for a first indicator according to the bitstream, the first indicator representing the maximum number of motion vector prediction MVP candidates to merge, obtaining a value for a second indicator according to the bitstream only if the obtained value of the first indicator is greater than a threshold, the second indicator representing whether geometric partition-based motion compensation is enabled for the video sequence, and analyzing a value for a third indicator from the bitstream only if the value of the first indicator is greater than a threshold and the value of the second indicator is equal to a preset value, the third indicator representing the maximum number of geometric partitioning merge mode candidates subtracted from the value of the first indicator.
[0027] A third aspect of the present invention provides a method for encoding the maximum number of geometric partitioning merger mode candidates, The method includes determining the value of a first indicator, the first indicator representing the maximum number of motion vector prediction MVP candidates to merge; determining the value of a second indicator, the second indicator representing whether geometric partition-based motion compensation is enabled for a video sequence; and encoding the value of a third indicator into a bitstream when the value of the first indicator is greater than a threshold and the value of the second indicator is equal to a preset value, the third indicator representing the maximum number of geometric partitioning merge mode candidates subtracted from the value of the first indicator.
[0028] According to embodiments of the present invention, a signaling scheme for an indicator of the number of merge mode candidates is disclosed. The maximum number of geometric partitioning merge mode candidates is conditionally signaled. Thus, bitstream utilization and decoding efficiency are improved.
[0029] In one implementation, the method further includes setting the maximum number of geometric partitioning merge mode candidates to 2 when the value of the first indicator is equal to a threshold and the value of the second indicator is equal to a preset value.
[0030] In one implementation, the method further includes setting the value of the maximum number of candidate scientific partitioning merge modes to 0 when the value of the first indicator is less than a threshold or the value of the second indicator is not equal to a preset value.
[0031] In one implementation, the threshold is 2.
[0032] In one implementation, the preset value is 1.
[0033] In one implementation, determining the value of the second indicator is performed after determining the value of the first indicator.
[0034] In one implementation, when the value of the first indicator is greater than or equal to a threshold, the value of the second indicator is encoded into the bitstream sequence parameter set SPS.
[0035] In one implementation, the value of the second indicator is encoded in the bitstream's sequence parameter set SPS.
[0036] In one implementation, the value of the third indicator is encoded in the bitstream's sequence parameter set SPS.
[0037] A fourth aspect of the present invention provides a video encoding apparatus, the video encoding apparatus comprising: a decision module configured to determine the value of a first indicator according to a bitstream, the first indicator representing the maximum number of motion vector prediction MVP candidates to merge; the decision module is configured to determine the value of a second indicator, the second indicator representing whether geometric partition-based motion compensation is enabled for a video sequence; and an analysis module configured to analyze the value of a third indicator from a bitstream when the value of the first indicator is greater than a threshold and when the value of the second indicator is equal to a preset value, the third indicator representing the maximum number of geometric partitioning merge mode candidates subtracted from the value of the first indicator.
[0038] A method according to a third aspect of the present invention may be carried out by an apparatus according to a fourth aspect of the present invention. Further features and implementations of the method according to the third aspect of the present invention correspond to features and implementation forms of the apparatus according to the fourth aspect of the present invention.
[0039] In one implementation, the decision module is configured to set the maximum number of geometric partitioning merge mode candidates to 2 when the value of the first indicator is equal to a threshold and the value of the second indicator is equal to a preset value.
[0040] In one implementation, the decision module is configured to set the maximum number of geometric partitioning merge mode candidates to 0 when the value of the first indicator is less than a threshold or the value of the second indicator is not equal to a preset value.
[0041] In one implementation, the threshold is 2.
[0042] In one implementation, the preset value is 1.
[0043] In one implementation, determining the value of the second indicator is performed after determining the value of the first indicator.
[0044] In one implementation, when the value of the first indicator is greater than or equal to a threshold, the value of the second indicator is encoded into the bitstream sequence parameter set SPS.
[0045] In one implementation, the value of the second indicator is encoded in the bitstream's sequence parameter set SPS.
[0046] In one implementation, the value of the third indicator is encoded in the bitstream's sequence parameter set SPS.
[0047] A fifth aspect of the present invention provides a decoder including a processing circuit for carrying out a method according to either the first aspect or an implementation of the first aspect.
[0048] A sixth aspect of the present invention provides an encoder including a processing circuit for carrying out a method according to either the third aspect or an implementation of the third aspect.
[0049] A seventh aspect of the present invention provides a computer program product that includes program code for performing the methods according to the first aspect, the third aspect, and any implementation of the first aspect or the third aspect when executed on a computer or processor.
[0050] An eighth aspect of the present invention provides a decoder comprising one or more processors and a non-temporary computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures the decoder to implement a method according to either the first or third aspect, or any implementation of the first or third aspect.
[0051] A ninth aspect of the present invention provides a non-temporary computer-readable medium for carrying program code, wherein the program code, when executed by a computer device, causes the computer device to execute a method according to either the first or third aspect, or any implementation of the first or third aspect.
[0052] A tenth aspect of the present invention provides an encoder including a processing circuit for carrying out a method according to either the third aspect or an implementation of the third aspect.
[0053] An eleventh aspect of the present invention provides an encoder comprising one or more processors and a non-temporary computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures the encoder to implement a method according to any of the third aspects and any implementation of the third aspects.
[0054] A twelfth aspect of the present invention provides a non-temporary storage medium containing a bitstream that is encoded / decoded by any of the methods of the above embodiments.
[0055] A thirteenth aspect of the present invention provides a bitstream encoded for a video signal by including a plurality of syntactic elements, the plurality of syntactic elements including a second indicator (such as sps_geo_enabled_flag), and a third indicator sps_max_num_merge_cand_minus_max_num_geo_cand conditionally signaled based at least in part on the value of sps_geo_enabled_flag.
[0056] A fourteenth aspect of the present invention provides a non-temporary storage medium comprising an encoded bitstream decoded by an image decoding device, wherein the bitstream is generated by dividing a frame of a video signal or image signal into a plurality of blocks and comprises a plurality of syntactic elements, the plurality of syntactic elements comprising a third indicator (such as sps_max_num_merge_cand) according to any of the preceding aspects.
[0057] A fifteenth aspect of the present invention provides a method for video decoding, The method involves obtaining a bitstream for a video sequence, obtaining the value of a first indicator according to the bitstream, where the first indicator represents the maximum number of motion vector prediction MVP candidates to merge, obtaining the value of a second indicator according to the bitstream, where the second indicator represents whether geometric partition-based motion compensation is enabled for the video sequence, and analyzing the value of a third indicator from the bitstream when the value of the first indicator is greater than a threshold and the value of the second indicator is equal to a preset value, where the third indicator represents the maximum number of geometric partitioning merge mode candidates subtracted from the value of the first indicator. To construct a list of merge candidates for the current coding block according to the motion vectors of the adjacent blocks of the current coding block, Obtain the merge index according to the value of the third indicator, Obtain the motion vector of the current coding block according to the merge index and merger candidate list, This includes reconfiguring the current coding block according to the motion vector of the current coding block.
[0058] A sixteenth aspect of the present invention provides a video decoder, the video decoder comprising: a receiving module configured to acquire a bitstream for a video sequence; an acquisition module configured to acquire a value of a first indicator according to the bitstream, the first indicator representing the maximum number of motion vector prediction MVP candidates to merge; the acquisition module is configured to acquire a value of a second indicator according to the bitstream, the second indicator representing whether geometric partition-based motion compensation is enabled for the video sequence; and an analysis module configured to analyze a value of a third indicator from the bitstream when the value of the first indicator is greater than a threshold and when the value of the second indicator is equal to a preset value, the third indicator representing the maximum number of geometric partitioning merge mode candidates subtracted from the value of the first indicator. A merge candidate list configuration module is configured to construct a merge candidate list for the current coding block according to the motion vectors of the adjacent blocks of the current coding block, The acquisition module is configured to acquire the merge index according to the value of the third indicator, A motion vector module configured to retrieve the motion vector of the current coding block according to the merge index and merger candidate list, Includes a pixel reconstruction module configured to reconstruct the current coding block according to the motion vector of the current coding block.
[0059] Details or examples relating to the fifteenth and sixteenth aspects of the present invention can be found by referring to the examples disclosed in the first to fourteenth aspects of the present invention.
[0060] The aforementioned and other objectives are achieved by the subject matter of the independent claim. Further implementations are evident from the dependent claims, specification and drawings. Details of one or more embodiments are described in the accompanying drawings and the following description. Other features, purposes, and advantages will be apparent from the specification, drawings, and claims. [Brief explanation of the drawing]
[0061] Embodiments of the present invention are described in more detail below with reference to the accompanying figures and drawings.
[0062] [Figure 1A] This is a block diagram showing an example of a video coding system configured to implement an embodiment of the present invention. [Figure 1B] This is a block diagram showing an example of a video coding system configured to implement an embodiment of the present invention. [Figure 2] This is a block diagram showing an example of a video encoder configured to implement embodiments of the present invention. [Figure 3] This is a block diagram showing an exemplary structure of a video decoder configured to implement embodiments of the present invention. [Figure 4] A cabinet of examples of encoding or decoding devices. [Figure 5]This is a block of another example of an encoding or decoding device. [Figure 6] This is a flowchart for decision-making and parameter estimation on the weighted predictive encoder side. [Figure 7] An example of the triangular prediction mode is provided. [Figure 8] An example of a geometric prediction mode is given. [Figure 9] Here is another example of a geometric prediction mode. [Figure 10] This is a block diagram showing an exemplary structure of a content supply system 3100 that realizes a content distribution service. [Figure 11] This is a block diagram showing the structure of an example terminal device. [Figure 12] This is a block diagram illustrating an example of the interpretation method according to this application. [Figure 13] This is a block diagram illustrating an example of an apparatus for interpretation according to this application. [Figure 14] This is a block diagram illustrating another example of the apparatus for interpretation according to this application. [Figure 15] This is a flowchart showing an embodiment of the method according to the present invention. [Figure 16] This is a block diagram of the apparatus according to the present invention.
[0063] Hereafter, unless otherwise explicitly specified, the same reference numeral refers to the same or at least functionally equivalent feature. [Modes for carrying out the invention]
[0064] The following description refers to the accompanying drawings, which form part of this disclosure and illustrate specific embodiments of the invention or specific ways in which embodiments of the invention may be used. It is understood that embodiments of the invention may be used in other ways and may include structural or logical variations not shown in the drawings. Therefore, the following detailed description should not be construed as restrictive, and the scope of the invention is defined by the appended claims.
[0065] For example, disclosure relating to a described method is understood to be true for a corresponding device or system configured to perform such method, and vice versa. For example, where one or more specific method steps are described, the corresponding device may include one or more units, e.g., functional units, even if such one or more units are not explicitly described or illustrated in the figures, in order to perform the described one or more method steps (e.g., one unit performs one or more steps, or each of the multiple units performs one or more of the multiple steps). On the other hand, for example, where a particular device is described based on one or more units, e.g., functional units, the corresponding method may include one step, even if such one or more steps are not explicitly described or illustrated in the figures, in order to perform the functionality of one or more units (e.g., one step performs the functionality of one or more units, or each of the multiple units performs one or more of the functionality of the multiple units in multiple steps). Furthermore, it is understood that the various exemplary embodiments and / or features of the aspects described herein may be combined with each other unless otherwise specified.
[0066] Video coding typically refers to the processing of a series of pictures that form a video or video sequence. Instead of the term "picture," the terms "frame" or "image" may be used synonymously in the field of video coding. Video coding (or general coding) involves two parts: video coding and video decoding. Video coding is performed on the source side and typically involves processing the original video picture (e.g., by compression) to reduce the amount of data required to represent the original video picture (for more efficient storage and / or transmission). Video decoding is performed on the destination side and typically involves processing in the reverse direction compared to the encoder to reconstruct the video picture. Embodiments referring to "coding" of a video picture (or, generally, a picture) should be understood as relating to the "coding" or "decoding" of the video picture or each video sequence. The combination of the coding and decoding parts is also called a CODEC (Coding and Decoding).
[0067] In lossless video coding, the original video picture can be reconstructed. That is, the reconstructed video picture has the same quality as the original video picture (assuming there is no transmission loss or other data loss during storage or transmission). In lossy video coding, further compression is performed, for example by quantization, to reduce the amount of data representing the video picture, but it cannot be fully reconstructed by the decoder. That is, the quality of the reconstructed video picture is lower or worse than the quality of the original video picture.
[0068] Some video coding standards belong to the group of “lossy hybrid video codecs” (i.e., they combine spatial and temporal prediction in the sample domain with 2D transform coding to apply quantization in the transform domain). Each picture in a video sequence is typically partitioned into a set of non-overlapping blocks, and coding is typically performed at the block level. In other words, in the encoder, video is processed, i.e., encoded, typically at the block (video block) level, by generating predicted blocks using, for example, spatial (intra-picture) and / or temporal (inter-picture) predictions, subtracting the predicted blocks from the current block (the block currently being processed) to obtain a residual block, transforming the residual block, and quantizing the residual block in the transform domain to reduce (compress) the amount of data being transmitted. In the decoder, the inverse processing compared to the encoder is applied to the encoded or compressed block to reconstruct the current block for presentation. Furthermore, the encoder replicates the decoder processing loop so that both generate identical predictions (e.g., intra-predictions and inter-predictions) and / or process, i.e., generate a reconstruction for coding the subsequent block.
[0069] In the following embodiments of the video coding system 10, a video encoder 20 and a video decoder 30 are described based on Figures 1 to 3.
[0070] Figure 1A is a schematic block diagram showing an exemplary coding system 10, for example, a video coding system 10 (or simply coding system 10) on which the technology of this application can be utilized. The video encoder 20 (or simply encoder 20) and video decoder 30 (or simply decoder 30) of the video coding system 10 represent examples of devices that may be configured to perform the technology according to the various examples described in this application.
[0071] As shown in Figure 1A, the coding system 10 includes a source device 12 configured to provide encoded picture data 21 to a destination device 14 for decoding the encoded picture data 13.
[0072] The source device 12 includes an encoder 20 and may additionally include a picture source 16, a preprocessor (or preprocessing unit) 18, for example, a picture preprocessor 18, and a communication interface or communication unit 22.
[0073] The picture source 16 may include any type of picture capture device, e.g., a camera for capturing real-world pictures, and / or any type of picture generation device, e.g., a computer graphics processor for generating computer-animated pictures, or any other type of device for acquiring and / or providing real-world pictures, computer-generated pictures (e.g., screen content, virtual reality (VR) pictures), and / or any combination thereof (e.g., augmented reality (AR) pictures). The picture source may also include any type of memory or storage for storing any of the pictures described above.
[0074] To distinguish between the preprocessor 18 and the processing performed by the preprocessing unit 18, the picture or picture data 17 may also be called the raw picture or raw picture data 17.
[0075] The preprocessor 18 is configured to receive (raw) picture data 17, preprocess the picture data 17, and obtain preprocessed picture data 19 or preprocessed picture data 19. The preprocessing performed by the preprocessor 18 may include, for example, cropping, color format conversion (e.g., RGB to YCbCr), color correction, or noise reduction. The preprocessing unit 18 may be understood to be any component.
[0076] The video encoder 20 is configured to receive pre-processed picture data 19 and provide encoded picture data 21 (further details are provided below, for example, based on Figure 2).
[0077] The communication interface 22 of the source device 12 may be configured to receive the encoded picture data 21 and transmit the encoded picture data 21 (or any further processed version thereof) via the communication channel 13 to another device, such as the destination device 14 or any other device, for storage or direct reconstruction.
[0078] The destination device 14 includes a decoder 30 (e.g., a video decoder 30) and may additionally, or optionally, include a communication interface or communication unit 28, a post-processor 32 (or post-processing unit 32), and a display device 34.
[0079] The communication interface 28 of the destination device 14 is configured to receive encoded picture data 21 (or a further processed version thereof) for example directly from the source device 12, or from any other source, such as a storage device, such as an encoded picture data storage device, and to provide the encoded picture data 21 to the decoder 30.
[0080] Communication interfaces 22 and 28 may be configured to transmit or receive encoded picture data 21 or encoded data 13 via a direct communication link between the source device 12 and the destination device 14, for example, a direct wired or wireless connection, or any type of network, for example, a wired or wireless network or any combination thereof, or any type of private and public network, or any type of combination thereof.
[0081] The communication interface 22 may be configured, for example, to package the encoded picture data 21 into an appropriate format, e.g., a packet, and / or to process the encoded picture data using any kind of transmission encoding or processing for transmission over a communication link or communication network.
[0082] A communication interface 28, which forms the counterpart to communication interface 22, may be configured, for example, to receive transmitted data and process the transmitted data using any kind of corresponding transmission decoding or processing and / or depackaging to obtain encoded picture data 21.
[0083] Both communication interfaces 22 and 28 may be configured as one-way or two-way communication interfaces, as indicated by the arrows on the communication channel 13 in Figure 1A pointing from the source device 12 to the destination device 14, and may be configured, for example, to set up a connection, to send and receive messages to acknowledge and exchange any other information relating to a communication link and / or data transmission, such as encoded picture data transmission.
[0084] The decoder 30 is configured to receive the encoded picture data 21 and provide the decoded picture data 31 or the decoded picture 31 (further details are described below, for example, based on Figure 3 or Figure 5).
[0085] The post-processor 32 of the destination device 14 is configured to post-process the decoded picture data 31, for example, the decoded picture 31, to obtain post-processed picture data 33, for example, the post-processed picture 33. The post-processing performed by the post-processing unit 32 may include, for example, color format conversion (e.g., YCbCr to RGB), color correction, cropping, or resampling, or any other processing to prepare the decoded picture data 31 for display by, for example, the display device 34.
[0086] The display device 34 of the destination device 14 is configured to receive picture data 33 that has been post-processed for displaying the picture to, for example, a user or viewer. The display device 34 may be any type of display for representing the reconstructed picture, such as an integrated display or an external display or monitor, or may include them. The display may include, for example, a liquid crystal display (LCD), an organic light-emitting diode (OLED) display, a plasma display, a projector, a microLED display, liquid crystal on silicon (LCoS), a digital optical processor (DLP), or any other type of display.
[0087] Figure 1A depicts the source device 12 and the destination device 14 as separate devices, but the device embodiment may include both or both functions, the source device 12 or the corresponding functionality, and the destination device 14 or the corresponding functionality. In such embodiments, the source device 12 or the corresponding functionality and the destination device 14 or the corresponding functionality may be implemented by the same hardware and / or software, separate hardware and / or software, or any combination thereof.
[0088] As will be apparent to those skilled in the art based on the description, the presence of different units or functionalities within the source device 12 and / or destination device 14, and the (exact) division of functionalities, may vary depending on the actual device and application, as shown in Figure 1A.
[0089] The encoder 20 (e.g., video encoder 20), the decoder 30 (e.g., video decoder 30), or both the encoder 20 and the decoder 30 may be implemented by a processing circuit as shown in Figure 1B, one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, dedicated video coding, or any combination thereof. The encoder 20 may be implemented via a processing circuit 46 to embody various modules, as described with respect to the encoder 20 in Figure 2 and / or any other encoder system or subsystem described herein. The decoder 30 may be implemented via a processing circuit 46 to embody various modules, as described with respect to the decoder 30 in Figure 3 and / or any other decoder system or subsystem described herein. The processing circuit may be configured to perform various operations, as described later. As shown in Figure 5, if the technology is partially implemented in software, the device may store instructions for the software in a suitable non-temporary computer-readable storage medium and execute the instructions in hardware using one or more processors to perform the technology of the present disclosure. Either the video encoder 20 or the video decoder 30 may be integrated as part of a combined encoder / decoder (CODED) in a single device, for example, as shown in Figure 1B.
[0090] The source device 12 and destination device 14 may include any wide range of devices, including any type of handheld or fixed device, such as a notebook or laptop computer, mobile phone, smartphone, tablet or tablet computer, camera, desktop computer, set-top box, television, display device, digital media player, video game console, video streaming device (such as a content service server or content distribution server), broadcast receiver device, broadcast transmitter device, etc., and may use no operating system at all or any type. In some cases, the source device 12 and destination device 14 may be equipped for wireless communication. Therefore, the source device 12 and destination device 14 may be wireless communication devices.
[0091] In some cases, the video coding system 10 shown in Figure 1A is merely an example, and the technology of this application may be applied to video coding settings (e.g., video coding or video decoding) that do not necessarily involve any data communication between the coding device and the decoding device. In other examples, data may be retrieved from local memory and streamed over a network. The video coding device may code the data and store it in memory, and / or the video decoding device may retrieve the data from memory and decode it. In some examples, coding and decoding are performed by devices that do not communicate with each other, but simply code the data into memory and / or retrieve and decode the data from memory.
[0092] For the sake of explanation, embodiments of the present invention are described herein with reference to, for example, High Efficiency Video Coding (HEVC) or General-Purpose Video Coding (VVC) reference software, next-generation video coding standards developed by the Joint Collaboration Team on Video Coding (JCT-VC) of the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Motion Picture Coding Experts Group (MPEG). Those skilled in the art will understand that embodiments of the present invention are not limited to HEVC or VVC.
[0093] Encoder and encoding method
[0094] Figure 2 shows a schematic block diagram of an exemplary video encoder 20 configured to implement the technology of the present application. In the example of Figure 2, the video encoder 20 includes an input 201 (or input interface 201), a residual calculation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a loop filter unit 220, a decoded picture buffer (DPB) 230, a mode selection unit 260, an entropy coding unit 270, and an output 272 (or output interface 272). The mode selection unit 260 may include an inter-prediction unit 244, an intra-prediction unit 254, and a partitioning unit 262. The inter-prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). The video encoder 20 shown in Figure 2 may also be called a hybrid video encoder or a video encoder according to a hybrid video codec.
[0095] The residual calculation unit 204, transform processing unit 206, quantization unit 208, and mode selection unit 260 are sometimes referred to as forming the forward signal path of the encoder 20, while the inverse quantization unit 210, inverse transform processing unit 212, reconstruction unit 214, buffer 216, loop filter 220, decoded picture buffer (DPB) 230, inter-prediction unit 244, and intra-prediction unit 254 are sometimes referred to as forming the reverse signal path of the video encoder 20, where the reverse signal path of the video encoder 20 corresponds to the signal path of the decoder (see video decoder 30 in Figure 3). Also, the inverse quantization unit 210, inverse transform processing unit 212, reconstruction unit 214, loop filter 220, decoded picture buffer (DRB) 230, inter-prediction unit 244, and intra-prediction unit 254 are also referred to as forming the “built-in decoder” of the video encoder 20.
[0096] Picture & Picture Partitioning (Picture & Block)
[0097] The encoder 20 may be configured to receive, for example, a picture 17 (or picture data 17) via input 201, for example, a picture of a sequence of pictures that form a video or video sequence. The received picture or picture data may also be a pre-processed picture 19 (or pre-processed picture data 19). For simplicity, the following description refers to picture 17. Picture 17 may also be called the current picture or (in particular, in video coding to distinguish the current picture from other pictures, for example, pictures that were encoded and / or decoded before the same video sequence, i.e., a video sequence that also includes the current picture).
[0098] A (digital) picture is, or can be considered, a two-dimensional array or matrix of samples having intensity values. Samples in an array are sometimes called pixels (an abbreviated form of picture element) or pels. The number of samples in the horizontal and vertical (or axis) directions of an array or picture defines the size and / or resolution of the picture. In color representation, typically three color components are used; that is, a picture is represented by, or may contain, three sample arrays. In the RGB format or color space, a picture contains corresponding red, green, and blue sample arrays. However, in video coding, each pixel is typically represented by a luminance and chrominance format or color space, e.g., YCbCr, which includes a luminance component represented by Y (sometimes L is used instead) and two chrominance components represented by Cb and Cr. The luminance (or abbreviated luma) component Y represents brightness or gray level intensity (for example, in a grayscale picture), while the two chroma (or abbreviated chroma) components Cb and Cr represent chroma or color information components. Therefore, a picture in YCbCr format includes a luminance sample array of luminance sample values (Y) and two chroma sample arrays of chroma difference values (Cb and Cr). An RGB format picture may be converted to or transformed into the YCbCr format, and vice versa; the process is also known as a color transform or conversion. If the picture is monochrome, it may contain only a luminance sample array. Thus, a picture may be, for example, an array of luminance samples in a monochrome format, or an array of luminance samples and two corresponding arrays of chroma difference samples in 4:2:0, 4:2:2, and 4:4:4 color formats.
[0099] Embodiments of the video encoder 20 may include a picture partitioning unit (not shown in Figure 2) configured to partition a picture 17 into a plurality of (typically non-overlapping) picture blocks 203. These blocks may also be called root blocks, macro blocks (H.264 / AVC), or coding tree blocks (CTBs) or coding tree units (CTUs) (H.265 / HEVC and VVC). The picture partitioning unit may use the same block size and corresponding grid defining the block size for all pictures in the video sequence, or it may change the block size between pictures, or between subsets or groups of pictures, to partition each picture into the corresponding block.
[0100] In further embodiments, the video encoder may be configured to directly receive blocks 203 of picture 17, for example, one, more, or all of the blocks that make up picture 17. Picture blocks 203 may also be called the current picture block or the picture block being encoded.
[0101] Similar to picture 17, picture block 203 is, again, smaller in dimensions than picture 17, but is a two-dimensional array or matrix of samples having intensity values (sample values), or is considered to be so. In other words, block 203 may include, for example, one sample array (e.g., a luminance array in the case of monochrome picture 17, or a luminance or chrominance array in the case of a color picture) or three sample arrays (e.g., a luminance and two chrominance arrays in the case of a color picture 17) or any other number and / or type of arrays depending on the applied color format. The number of samples in the orientation and vertical (or axis) of block 203 defines the size of block 203. Thus, the block may be, for example, an MxN (M columns × N rows) array of samples, or an MxN array of transform coefficients.
[0102] The embodiment of the video encoder 20 shown in Figure 2 may be configured to encode the picture 17 block by block, for example, encoding and prediction may be performed for each block 203.
[0103] The embodiment of the video encoder 20 shown in Figure 2 may be further configured to partition and / or encode a picture by using slices (also called video slices), the picture may be partitioned or encoded using one or more slices (typically non-overlapping), each slice may contain one or more blocks (e.g., CTUs).
[0104] The embodiment of the video encoder 20 shown in Figure 2 may be further configured to partition and / or encode a picture using tile groups (also called video tile groups) and / or tiles (also called video tiles), the picture may be partitioned or encoded using one or more tile groups (typically non-overlapping), each tile group may, for example, contain one or more blocks (e.g., CTUs) or one or more tiles, each tile may, for example, be rectangular in shape and contain one or more blocks (e.g., CTUs), e.g., a full block or a partial block.
[0105] Residual calculation
[0106] The residual calculation unit 204 may be configured to calculate the residual block 205 (also called residual 205) based on picture block 203 and prediction block 265 (further details about prediction block 265 will be described later) for each sample (pixel), for example, by subtracting the sample value of prediction block 265 from the sample value of picture block 203, thereby obtaining the residual block 205 in the sample domain.
[0107] Transform
[0108] The transform processing unit 206 may be configured to obtain transform coefficients 207 in the transform domain by applying a transform, such as a discrete cosine transform (DCT) or a discrete sine transform (DST), to the sample values of the residual block 205. The transform coefficients 207, also called transform residual coefficients, may represent the residual block 205 in the transform domain.
[0109] The transform processing unit 206 may be configured to apply an integer approximation of the DCT / DST, such as the transform specified for H.265 / HEVC. Compared to the orthogonal DCT transform, such an integer approximation is typically scaled by a specific factor. An additional scaling factor is applied as part of the transform process to preserve the norm of the residual blocks processed by the forward and inverse transforms. The scaling factor is typically selected based on specific constraints, such as a scaling factor that is a power of 2 for the shift operation, the bit depth of the transform coefficients, or a trade-off between precision and implementation cost. A specific scaling factor may be specified for the inverse transform by, for example, the inverse transform processing unit 212 (and the corresponding inverse transform by, for example, the inverse transform processing unit 312 in the video decoder 30), and the corresponding scaling factor for the forward transform may be specified accordingly by, for example, the transform processing unit 206 in the encoder 20.
[0110] Embodiments of the video encoder 20 (each a transform processing unit 206) may be configured to output, for example, the type of transform or multiple transform parameters directly or encoded or compressed via the entropy coding unit 270, so that, for example, the video decoder 30 may receive and use the transform parameters for decoding.
[0111] quantization
[0112] The quantization unit 208 may be configured to quantize the transform coefficient 207 to obtain the quantization coefficient 209 by applying, for example, color quantization or vector quantization. The quantization coefficient 209 may also be called the quantized transform coefficient 209 or the quantized residual coefficient 209.
[0113] 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 to an m-bit transform coefficient during quantization, where n is greater than m. The degree of quantization may be modified by adjusting the quantization parameter (QP). For example, in scalar quantization, different scaling may be applied to achieve finer or coarser quantization. Smaller quantization step sizes correspond to finer quantization, and larger quantization step sizes correspond to coarser quantization. Applicable quantization step sizes may be indicated by the quantization parameter (QP). The quantization parameter may be, for example, an index to a predefined set of applicable quantization step sizes. For example, a small quantization parameter may correspond to finer quantization (smaller quantization step size), a large quantization parameter may correspond to coarser quantization (larger quantization step size), or vice versa. Quantization may involve division by the quantization step size, and for example, the corresponding and / or inverse dequantization by the inverse quantization unit 210 may involve multiplication by the quantization step size. Embodiments of some standards, e.g., HEVC, may be configured to use quantization parameters to determine the quantization step size. Generally, the quantization step size may be calculated based on the quantization parameters using a fixed-point approximation of the equations involving division. Additional scaling factors may be introduced for quantization and dequantization to restore the norm of the residual block, which can be modified for the scaling used in the fixed-point approximations of the equations for the quantization step size and quantization parameters. In one example, the scaling of the inverse transform and dequantization may be combined. Alternatively, a customized quantization table may be used and signaled from the encoder to the decoder, e.g., in a bitstream. Quantization is an irreversible operation in which the loss increases with increasing quantization step size.
[0114] Embodiments of the video encoder 20 (each a quantization unit 208) may be configured to output quantization parameters encoded directly or via the entropy coding unit 270, for example, so that the video decoder 30 can receive and apply the quantization parameters for decoding.
[0115] inverse quantization
[0116] The inverse quantization unit 210 is configured to apply the inverse quantization of the quantization unit 208 to the quantization coefficients to obtain the dequantization coefficient 211, for example, by applying the inverse of the quantization scheme applied by the quantization unit 208, based on or using the same quantization step size as the quantization unit 208. The dequantization coefficient 211 is also called the dequantization residual coefficient 211 and typically corresponds to the transform coefficient 207, although it is not identical to the transform coefficient due to losses due to quantization.
[0117] Reverse Transform
[0118] The inverse transform processing unit 212 is configured to obtain a reconstructed residual block 213 (or corresponding dequantization coefficient 213) within the sample domain by applying an inverse transform of the transform applied by the transform processing unit 206, such as an inverse discrete cosine transform (DCT), an inverse discrete sine transform, or another inverse transform. The reconstructed residual block 213 is also called the transform block 213.
[0119] Reconstruction
[0120] The reconstruction unit 214 (e.g., an adder or totaler 214) is configured to obtain the reconstructed block 215 within the sample domain by adding the transform block 213 (i.e., the reconstructed residual block 213) to the prediction block 365, for example by adding the sample values of the reconstructed residual block 213 and the sample values of the prediction block 265 sample by sample.
[0121] filtering
[0122] The loop filter unit 220 (or simply "loop filter" 220) is configured to filter the reconstructed block 215 to obtain a filtered block 221, or generally to filter the reconstructed sample to obtain a filtered sample. The loop filter unit is configured, for example, to smooth pixel transitions or to improve video quality in other ways. 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 a bilateral filter, an adaptive loop filter (ALF), a sharpening filter, a smoothing filter, or a joint filter, or any combination thereof. Although the loop filter unit 220 is shown as an in-loop filter in Figure 2, in other configurations, the loop filter unit 220 may be implemented as a post-loop filter. The filtered block 221 is also sometimes referred to as a filtered reconstructed block 221.
[0123] Embodiments of the video encoder 20 (each a loop filter unit 220) may be configured to output, for example, loop filter parameters encoded directly or via the entropy encoding unit 270, so that, for example, the decoder 30 may receive and apply the same loop filter parameters or the respective loop filters for decoding.
[0124] Decrypted picture buffer
[0125] The decoded picture buffer (DRB) 230 may be a memory that stores a reference picture or, in general, reference picture data for encoding video data by the video encoder 20. The DPB 230 may be formed by any of various memory devices, such as dynamic random access memory, including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The decoded picture buffer 230 may be configured to store one or more filtered blocks 221. The decoded picture buffer 230 may be further configured to store other previously filtered blocks, e.g., previously reconfigured and filtered blocks 221, of the same current picture or a different picture, e.g., a previously reconfigured picture, e.g., a previously reconfigured picture (and its corresponding reference block and sample) and / or a partially reconfigured current picture (and its corresponding reference block and sample) for interpretation. The decoded picture buffer (DRB) 230 may also be configured to store one or more unfiltered configured blocks 215, or generally unfiltered reconstructed samples, if, for example, the reconstructed block 215 has not been filtered by the loop filter unit 220, or is not any other further processed version of the reconstructed block or sample.
[0126] Mode selection (Partitioning & Prediction)
[0127] The mode selection unit 260 includes a partitioning unit 262, an inter-prediction unit 244, and an intra-prediction unit 254, and is configured to receive original picture data, e.g., the original block 203 (the current block 203 of the current picture 17), and reconstructed picture data, e.g., filtered or unfiltered versions of the same (current) picture, and / or one or more previously decoded pictures, e.g., reconstructed samples or blocks from the decoded picture buffer 230 or other buffers (e.g., line buffers, not shown). The reconstructed picture data is used as reference picture data for predictions, e.g., inter-prediction or intra-prediction, to obtain prediction blocks 265 or predictors 265.
[0128] The mode selection unit 260 may be configured to determine or select partitioning for the current block prediction mode (including no partitioning) and prediction mode (e.g., intra or inter-prediction mode), and to generate corresponding prediction blocks 265 used for calculating residual blocks 205 and reconstructing blocks 215 to be reconstructed.
[0129] Embodiments of the mode selection unit 260 may be configured to select a partitioning and prediction mode (for example, from those supported or available by the mode selection unit 260) that provides the best match, in other words, the minimum residual (minimum residual meaning better compression for transmission or storage), or the minimum signaling overhead (minimum signaling meaning better compression for transmission or storage), or one that considers or balances both. The mode selection unit 260 may also be configured to determine the partitioning and prediction mode based on rate distortion optimization (RDO), i.e., to select a prediction mode that provides the minimum rate distortion. In this context, terms such as “best,” “lowest,” and “optimal” do not necessarily refer to an overall “best,” “lowest,” and “optimal,” but may refer to an ending criterion or selection criterion such as a value above or below a threshold, or the achievement of other constraints that reduce complexity and processing time, which may lead to a “suboptimal selection.”
[0130] In other words, the partitioning unit 262 may be configured to partition block 203 into smaller block partitions or subblocks (forming blocks again) using, for example, quad-tree partitioning (QT), binary partitioning (BT), triple-tree partitioning (TT), or any combination thereof, and to perform predictions for each block partition or subblock, for example, mode selection includes selecting the tree structure of the partitioned block 203, and prediction modes are applied to each block partition or subblock.
[0131] The partitioning (e.g., by the partitioning unit 260) and prediction processing (by the inter-prediction unit 244 and the intra-prediction unit 254) performed by the exemplary video encoder 20 are described in more detail below.
[0132] Partitioning
[0133] The partitioning unit 262 can partition (or split) the current block 203 into smaller partitions, such as smaller blocks of a square or rectangle size. These smaller blocks (also called subblocks) may be partitioned into even smaller partitions. This is also called tree partitioning or hierarchical tree partitioning, and the root block, for example, at root tree level 0 (hierarchical level 0, depth 0), may be recursively partitioned, and may be partitioned into two or more blocks at the next lower tree level, such as a node at tree level 1 (hierarchical level 1, depth 1), and these blocks may be further partitioned into two or more blocks at the next lower level, such as tree level 2 (hierarchical level 2, depth 2), until partitioning ends, for example, when a termination criterion is met, such as reaching the maximum tree depth or minimum block size. Blocks that are not further partitioned are also called leaf blocks or leaf nodes of the tree. A tree that uses partitioning into two partitions is called a binary tree (BT), a tree that uses partitioning into three partitions is called a ternary tree (TT), and a tree that uses partitioning into four partitions is called a quaternary tree (QT).
[0134] As stated herein, the term “block” may refer to a portion of a picture, particularly a square or rectangular portion. For example, with reference to HEVC and VVC, a block may correspond to a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU), and a transformation unit, and / or to a corresponding block, e.g., a coding tree block (CTB), a coding block (CB), a transformation block (TB), or a prediction block (PB).
[0135] For example, a coding tree unit (CTU) may be a CTB of luminance samples, two corresponding CTBs of color difference samples of a picture having three sample arrays, or a CTB of samples of a picture coded using three separate color planes and syntactic structures used to code a monochrome picture or sample, or may include these. Correspondingly, a coding tree block (CTB) may be an NxN block of samples of a certain value N, such that the division of a component into a CTB is partitioning. A coding unit (CU) may be a CTB of luminance samples, two corresponding coding blocks of color difference samples of a picture having three sample arrays, or a coding block of samples of a picture coded using three separate color planes and syntactic structures used to code a monochrome picture or sample, or may include these. Correspondingly, a coding block (CB) may be an NxN block of samples of sample values M and N, such that the division of a CTB into a coding block is partitioning.
[0136] In an embodiment, for example, according to HEVC, a coding tree unit (CTU) may be split into CUs by using a quad-tree structure, which is shown as a coding tree. The determination of whether to code a picture area using inter-picture (temporal) or intra-picture (spatial) prediction is made at the CU level. Each CU can further be split into one, two, or four PUs, according to the PU splitting type. Within a single PU, the same prediction process is applied, and the relevant information is sent to the decoder on a PU basis. After obtaining residual blocks by applying the prediction process based on the PU splitting type, the CU can be partitioned into transformation units (TUs) according to another quad-tree structure similar to the coding tree of the CU.
[0137] In embodiments, for example, according to the latest video coding standard currently under development, called General-Purpose Video Coding (VVC), a combination of quad-tree and binary-tree (QTBT) partitioning is used to partition coding blocks. In the QTBT block structure, CUs can have either a square or rectangular shape. For example, a coding tree unit (CTU) is first partitioned by a quad-tree structure. Quad-tree leaf nodes are further partitioned by a binary tree or a ternary (or triple) tree structure. The partitioning tree leaf nodes are called coding units (CUs), and the segments are used for prediction and transformation processing without further partitioning. This means that CUs, PUs, and TUs have the same block size in the QTBT coding block structure. In parallel, multiple partitions, such as triple-tree partitions, may be used with the QTBT block structure.
[0138] In one example, the mode selection unit 260 of the video encoder 20 may be configured to perform any combination of the partitioning techniques described herein.
[0139] As described above, the video encoder 20 is configured to determine or select the best or most optimal prediction mode from a set of (e.g., predetermined) prediction modes. The set of prediction modes may include, for example, an intra-prediction mode and / or an inter-prediction mode.
[0140] Intra Prediction
[0141] The set of intra-prediction modes may include 35 different intra-prediction modes, e.g., non-directional modes such as DC (or average) mode and planar mode, or directional modes such as those defined for HEVC, or it may include 67 different intra-prediction modes, e.g., non-directional modes such as DC (or average) mode and planar mode, or directional modes such as those defined for VVC.
[0142] The intra-prediction unit 254 is configured to generate an intra-prediction block 265 using reconfigured samples of adjacent blocks of the same current picture, according to the intra-prediction mode of a set of intra-prediction modes.
[0143] The intra-prediction unit 254 (or, generally, the mode selection unit 260) is further configured to output intra-prediction parameters (or, generally, information indicating the intra-prediction mode selected for a block) to the entropy coding unit 270 in the form of syntactic elements 266 for inclusion in the encoded picture data 21, so that, for example, the video decoder 30 can receive and use the prediction parameters for decoding.
[0144] Interpretation
[0145] The set of interpretations (or possible interpretation modes) depends on the available reference picture (i.e., a picture stored in DBP230 that is at least partially decoded) and other interpretation parameters, such as whether the entire reference picture or only a portion of it is used, whether a search window area around the current block area is used to search for the best-matching reference block, and / or whether pixel interpolation, such as half / semi-per and / or quarter-per interpolation, is applied.
[0146] In addition to the prediction modes described above, skip mode and / or direct mode may also be applied.
[0147] The interpretation unit 244 may include a motion estimation (ME) unit and a motion compensation (MC) unit (neither of which are shown in Figure 2). The motion estimation unit may be configured to receive or acquire, for motion estimation, picture block 203 (the current picture block 203 of the current picture 17) and the decoded picture 231, or at least one or more previously reconstructed blocks, e.g., one or more other / different reconstructed blocks of the previously decoded picture 231. For example, a video sequence may include the current picture and the previously decoded picture 231, in other words, the current picture and the previously decoded picture 231 may be part of a picture that forms a video sequence, or may form a sequence of pictures.
[0148] The encoder 20 may be configured, for example, to select a reference block from multiple reference blocks of the same or different pictures of multiple other pictures, and to provide the reference picture (or reference picture index) and / or offset (spatial offset) between the position (x, y coordinates) of the reference block and the position of the current block as an interprediction parameter to the motion estimation unit. This offset is also called the motion vector (MV).
[0149] The motion compensation unit is configured to obtain interprediction parameters, for example, receive them, and perform interprediction based on or using the interprediction parameters to obtain interprediction blocks 265. Motion compensation performed by the motion compensation unit may involve fetching or generating prediction blocks based on motion / block vectors determined by motion estimation, possibly with interpolation to sub-pixel precision. Interpolation filtering can generate additional pixel samples from known pixel samples, thus potentially increasing the number of candidate prediction blocks that can be used to code picture blocks. Upon receiving the motion vector for the current picture block's PU, the motion compensation unit may position the prediction block that the motion vector points to in one of the reference picture lists.
[0150] The motion compensation unit may also generate syntactic elements associated with blocks and video slices for use by the video decoder 30 when decoding picture blocks of video slices. In addition to or as a substitute for slices and their respective syntactic elements, tile groups and / or tiles and their respective syntactic elements may be generated or used.
[0151] Entropy coding
[0152] The entropy coding unit 270 applies, for example, an entropy coding algorithm or scheme (e.g., variable-length coding (VLC) scheme, context-adaptive VLC scheme (CAVLC), arithmetic coding scheme, binarization, context-adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probabilistic interval partitioning entropy (PIPE) coding, or another entropy coding methodology or technique) or bypass (uncompressed) to the quantization coefficients 209, inter-prediction parameters, intra-prediction parameters, loop filter parameters and / or other syntactic elements to obtain encoded picture data 21 that can be output via output 272 in the form of an encoded bitstream 21, so that, for example, the video decoder 30 can receive and use the parameters for decoding. The encoded bitstream 21 may be transmitted to the video decoder 30 or stored in memory for later transmission or retrieval by the video decoder 30.
[0153] Other structural variations of the video encoder 20 can be used to encode video streams. For example, a non-transform-based encoder 20 can directly quantize residual signals for a given block or frame without a transform processing unit 206. In another implementation, the encoder 20 may have a quantization unit 208 and an inverse quantization unit 210 combined into a single unit.
[0154] Decoder and decoding method
[0155] Figure 3 shows an example of a video decoder 30 configured to implement the technology of the present application. The video decoder 30 is configured to receive, for example, picture data 21 (e.g., encoded bitstream 21) encoded by the encoder 20 and obtain a decoded picture 331. The encoded picture data or bitstream includes information for decoding the encoded picture data, such as data representing picture blocks (and / or tile groups or tiles) and associated syntactic elements of the encoded video slice.
[0156] In the example in Figure 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 330, a mode application unit 360, an interpretation unit 344, and an intraprediction unit 354. The interpretation unit 344 may be or may include a motion compensation unit. In some examples, the video decoder 30 may perform a decoding path that is roughly the reverse of the encoding path described for the video encoder 100 from Figure 2.
[0157] As described with respect to encoder 20, the inverse quantization unit 210, inverse transform unit 212, reconstruction unit 214, loop filter 220, decoded picture buffer (DRB) 230, inter-prediction unit 344, and intra-prediction unit 354 are also referred to as forming the “built-in decoder” of video encoder 20. Thus, the inverse quantization unit 310 may be functionally identical to the inverse quantization unit 110, the inverse transform unit 312 may be functionally identical to the inverse transform 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 descriptions provided for each unit and function of video decoder 30 apply to each unit and function of video encoder 20.
[0158] Entropy decoding
[0159] The entropy decoding unit 304 is configured to analyze the bitstream 21 (or generally, the encoded picture data 21) and, for example, perform entropy decoding to the encoded picture data 21 to obtain, for example, quantization coefficients 309 and / or decoded coding parameters (not shown in Figure 3), such as inter-prediction parameters (e.g., reference picture index and motion vector), intra-prediction parameters (e.g., intra-prediction mode or index), transformation parameters, quantization parameters, loop filter parameters, and / or other syntactic elements, or any or all of them. The entropy decoding unit 304 may be configured to apply a decoding algorithm or scheme corresponding to the encoding scheme, as described with respect to the entropy coding unit 270 of the encoder 20. The entropy decoding unit 304 may be further configured to provide the inter-prediction parameters, intra-prediction parameters, and / or other syntactic elements to the mode application unit 360 and other parameters to other units of the decoder 30. The video decoder 30 may receive syntactic elements at the video slice level and / or video block level. In addition to or as an alternative to slices and their respective syntactic elements, tile groups and / or tiles and their respective syntactic elements may be received or used.
[0160] inverse quantization
[0161] The inverse quantization unit 310 may be configured to receive quantization parameters (QP) (or generally, information related to inverse quantization) and quantization coefficients from the encoded picture data 21 (for example, by analysis and / or decoding by the entropy decoding unit 304), and to apply inverse quantization based on the quantization parameters to the decoded quantization coefficients 309 to obtain dequantization coefficients 311, which may also be called transform coefficients 311. The inverse quantization process may also include using quantization parameters determined by the video encoder 20 for each video block in a video slice (or tile or tile group) to determine the degree of quantization and the degree of inverse quantization to be applied.
[0162] Reverse Transform
[0163] The inverse transform processing unit 312 may be configured to receive the dequantization coefficient 311, also called the transform coefficient 311, and apply a transform to the dequantization coefficient 311 to obtain the reconstructed residual block 213 in the sample domain. The reconstructed residual block 213 may also be called the transform block 213. The transform may be an inverse transform, such as an inverse DCT, inverse DST, inverse integer transform, or a conceptually similar inverse transform process. The inverse transform processing unit 312 may be further configured to receive transform parameters or corresponding information from the encoded picture data 21 (for example, by analysis and / or decoding by the entropy decoding unit 304) to determine the transform to be applied to the dequantization coefficient 311.
[0164] Reconstruction
[0165] The reconstruction unit 314 (e.g., an adder or totaler 314) may be configured to add the reconstructed residual block 313 to the prediction block 365, for example, by adding the sample values of the reconstructed residual block 313 and the sample values of the prediction block 365 to obtain the reconstructed block 315 in the sample domain.
[0166] filtering
[0167] The loop filter unit 320 (either within or after the coding loop) is configured to filter the reconstructed block 315 to obtain the filtered block 321, for example, to smooth pixel transitions or otherwise improve video quality. The loop filter unit 320 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 a bilateral filter, an adaptive loop filter (ALF), a sharpening filter, a smoothing filter, or a co-filter, or any combination thereof. Although the loop filter unit 320 is shown as an in-loop filter in Figure 3, in other configurations, the loop filter unit 320 may be implemented as a post-loop filter.
[0168] Decrypted picture buffer
[0169] Next, the decoded video block 321 of the picture is stored in the decoded picture buffer 330, which is stored as a reference picture for other pictures and / or for subsequent motion compensation for output display, respectively.
[0170] The decoder 30 is configured to output the decoded picture 311, for example via output 312, for presentation or viewing to the user.
[0171] prediction
[0172] The inter-prediction unit 344 may be identical to the inter-prediction unit 244 (in particular, the motion compensation unit), and the intra-prediction unit 354 may be functionally identical to the intra-prediction unit 254, and performs splitting or partitioning decisions and predictions based on partitioning and / or prediction parameters or respective information received from the decoded picture data 21 (e.g., by analysis and / or decoding by the entropy decoding unit 304). The mode application unit 360 may be configured to perform block-by-block predictions (intra-predictions or inter-predictions) based on the reconstructed picture, block, or each sample (filtered or unfiltered) to obtain a predicted block 365.
[0173] When a video slice is coded as an intra-coded (I) slice, the intra-prediction unit 354 of the mode-applying unit 360 is configured to generate a prediction block 365 for the picture block of the current video slice based on the signaled intra-prediction mode and data from previously decoded blocks of the current picture. When a video picture is coded as an inter-coded (i.e., B, or P) slice, the inter-prediction unit 344 (e.g., motion compensation unit) of the mode-applying unit 360 is configured to generate a prediction block 365 for the video block of the current video slice based on motion vectors and other syntactic elements received from the entropy decoding unit 304. For inter-prediction, the prediction block may be generated from one of the reference pictures in one of the reference picture lists. The video decoder 30 may configure the reference frame lists, list 0 and list 1, using default configuration techniques based on reference pictures stored in the DPB 330. The same or similar applies to embodiments in which tile groups (e.g., video tile groups) and / or tiles (e.g., video tiles) are used in addition to, or alternative to, slices (e.g., video slices), for example, video may be coded using I, P, or B tile groups and / or tiles.
[0174] The mode-applying unit 360 is configured to determine predictive information for video blocks in the current video slice by parsing motion vectors or relational information and other syntactic elements, and to use the predictive information to generate predictive blocks for the current video block to be decoded. For example, the mode-applying unit 360 uses some of the received syntactic elements to determine the predictive mode (e.g., intra or inter-predictive) used to code the video blocks in the video slice, the inter-predictive slice type (e.g., B-slice, P-slice, or GPB-slice), one or more configuration pieces of reference picture list for the slice, motion vectors for each inter-coded video block in the slice, the inter-predictive status for each inter-coded video block in the slice, and other information for decoding the video blocks in the current video slice. The same or similar applies to embodiments in which tile groups (e.g., video tile groups) and / or tiles (e.g., video tiles) are used in addition to or instead of slices (e.g., video slices), for example, video may be coded using I, P, or B tile groups and / or tiles.
[0175] The embodiment of the video encoder 30 shown in Figure 3 may be further configured to partition and / or encode a picture by using slices (also called video slices), the picture may be partitioned or encoded using one or more slices (typically non-overlapping), each slice may contain one or more blocks (e.g., CTUs).
[0176] The embodiment of the video decoder 30 shown in Figure 3 may be configured to partition and / or decode a picture using tile groups (also called video tile groups) and / or tiles (also called video tiles), the picture may be partitioned or decoded using one or more tile groups (typically non-overlapping), each tile group may, for example, include one or more blocks (e.g., CTUs) or one or more tiles, each tile may, for example, be rectangular in shape and may include one or more blocks (e.g., CTUs), for example, a complete block or a partial block.
[0177] The encoded picture data 21 can be decoded using other variations of the video decoder 30. For example, the decoder 30 can generate an output video stream without a loop filtering unit 320. For example, a non-transform-based decoder 30 can directly dequantize the residual signal for a particular block or frame without an inverse transform processing unit 312. In another implementation, the video decoder 30 may have an inverse quantization unit 310 and an inverse transform processing unit 312 combined into a single unit.
[0178] It should be understood that the encoder 20 and decoder 30 may further process the results of the current step and output them to the next step. For example, after interpolation filtering, motion vector derivation, or loop filtering, further operations such as clipping or shifting may be performed on the results of interpolation filtering, motion vector derivation, or loop filtering.
[0179] It should be noted that further calculations may be applied to the derived motion vectors of the current block (including, but not limited to, affine mode control point motion vectors, affine, planar, and ATMVP mode subblock motion vectors, temporal motion vectors, etc.). For example, the value of a motion vector is constrained to a predefined range according to its representation bits. If the representation bits of a motion vector are bitDepth, the range is -2^(bitDepth-1) to 2^(bitDepth-1)-1, where "^" means exponentiation. For example, if bitDepth is set to 16, the range is -32768 to 32767, and if bitDepth is set to 18, it is -131072 to 131071. For example, the value of a derived motion vector (e.g., the MV of a 4x4 subblock in one 8x8 block) is constrained such that the maximum difference between the integer parts of the MVs of four 4x4 subblocks is less than or equal to N pixels, such as 1 pixel or less. Here, we provide two methods for constraining motion vectors according to bitDepth.
[0180] Method 1: Remove the overflow MSB (most significant bit) using flow calculation.
number
number
[0181] Method 2: Remove the overflow MSB by clipping the value.
number
number
[0182] Figure 4 is a schematic diagram of a video coding device 400 according to one embodiment of the present disclosure. The video coding device 400 is suitable for implementing the disclosed embodiments described herein. In one embodiment, the video coding device 400 may be a decoder, such as the video decoder 30 in Figure 1A, or an encoder, such as the video encoder 20 in Figure 1A.
[0183] The video coding device 400 includes an inlet port 410 (or input port 410) and a receiver unit (Rx) 420 for receiving data, a processor, logic unit, or central processing unit (CPU) 430 for processing data, a transmitter unit (Tx) 440 and an exit port 450 (or output port 450) for transmitting data, and memory 460 for storing data. The video coding device 400 may also include optical-to-electrical (OE) components and electrical-to-optical (EO) components coupled to the inlet port 410, receiver unit 420, transmitter unit 440, and exit port 450 for the input and output of optical or electrical signals. The processor 430 is implemented by hardware and software. The processor 430 may be implemented as one or more CPU chips, cores (e.g., multi-core processors), FPGAs, ASICs, and DSPs. The processor 430 communicates with the input port 410, the receiver unit 420, the transmitter unit 440, the output port 450, and the memory 460. The processor 430 includes a coding module 470. The coding module 470 implements the embodiments disclosed above. For example, the coding module 470 implements, processes, prepares, or provides various coding operations. Thus, including the coding module 470 provides a substantial improvement to the functionality of the video coding device 400 and results in the conversion of the video coding device 400 to different states. Alternatively, the coding module 470 is implemented as instructions stored in the memory 460 and executed by the processor 430.
[0184] Memory 460 may include one or more disks, tape drives, and solid-state drives, and may be used as an overflow data storage device to store a program when such a program is selected for execution, and to store instructions and data read during program execution. Memory 460 may be, for example, volatile and / or non-volatile, and may be read-only memory (ROM), random-access memory (RAM), ternarily content-addressable memory (TCAM), and / or static random-access memory (RSAM).
[0185] Figure 5 is a simplified block diagram of a device 500 which may be used as either or both of the source device 12 and destination device 14 from Figure 1, according to an exemplary embodiment.
[0186] The processor 502 within the device 500 may be a central processing unit. Alternatively, the processor 502 may be any other type of device or a set of devices capable of manipulating or processing existing or future information. The disclosed implementation can be carried out using a single processor, e.g., processor 502, as shown, but advantages in speed and efficiency can be achieved by using multiple processors.
[0187] The memory 504 within the device 500 may be a read-only memory (ROM) device or a random-access memory (RAM) device in the implementation. Any other suitable type of storage device can be used as memory 504. Memory 504 may contain code and data 506 accessed by the processor 502 using the bus 512. Memory 504 may further include an operating system 508 and an application program 510, the application program 510 including at least one program that allows the processor 502 to perform the methods described herein. For example, the application program 510 may include applications 1 to N, which further include a video coding application that performs the methods described herein.
[0188] The device 500 may also further include one or more output devices, such as a display 518. The display 518 may, in one example, be a touch-sensitive display that combines the display with a touch-sensitive element capable of operating to sense touch input. The display 518 may be connected to the processor 502 via the bus 512.
[0189] Although shown here as a single bus, the bus 512 of device 500 can consist of multiple buses. Furthermore, the secondary storage 514 can be directly coupled to other components of device 500 or accessed via a network, and may include a single integrated unit such as a memory card or multiple units such as multiple memory cards. Thus, device 500 can be implemented in a wide range of configurations.
[0190] Triangular Partitioning Mode (TPM) and Geometric Motion Partitioning (GEO), also known as Triangular Merge Mode and Geometric Merge Mode respectively, are partitioning techniques that enable non-horizontal and non-vertical boundaries between prediction partitions, where prediction units PU1 and PU1 are combined within a region using a weighted averaging procedure of subsets of their samples relating to different color components. TPM enables boundaries between prediction partitions along the diagonals of a rectangular block, while boundaries by GEO may be located at arbitrary positions. In the region to which the weighted averaging procedure is applied, integers within the square are weights W applied to the luminance components of prediction unit PU1. PU1 This illustrates the example where weight W is applied to the luminance component of the prediction unit PU2. PU2 It is calculated as follows:
number
[0191] Table 1 shows the syntax details for TPM, and four syntactic elements are used to signal information about TPM. MergeTriangleFlag is a flag that identifies whether TPM is selected ("0" means TPM is not selected, otherwise TPM is selected). `merge_triangle_split_dir` is a split direction flag for the TPM ("0" means the split direction is from the top left corner to the bottom right corner, otherwise the split direction is from the top right corner to the bottom left corner of the split). merge_triangle_idx0 and merge_triangle_idx1 are indices for merge candidates 0 and 1 used for TPM. [Table 1] JPEG2026086555000008.jpg50170 For example, the TPM is, This is described in the proposal "CE10.3.1.b: Triangular prediction unit mode" by RL. Liao and CS Lim, contribution JVET-L0124 to the 12th JVET meeting, Macao, China, October 2018. GEO is It is described in the paper. A disclosed method for harmonizing the TPM and / or GEO with the WP is to disable the TPM and / or GEO when the WP is applied. The first implementation is shown in Table 2, where the coding unit checks whether the value of the weightedPredFlag variable is equal to 0. The variable weightedPredFlag is derived as follows: - If slice_type is equal to P, weightedPredFlag is set to equal to pps_weighted_pred_flag. - Otherwise (if slice_type is equal to B), weightedPredFlag is set to equal to pps_weighted_bipred_flag. The weighted prediction process can be switched between picture-level and slice-level using the pps_weigheded_pred_flag and sps_weigheded_pred_flag syntax elements, respectively. As disclosed above, the variable weightedPredFlag indicates whether slice-level weighted predictions should be used when obtaining interpredicted samples of a slice. [Table 2] JPEG2026086555000010.jpg74170ciip_flag[x0][y0] specifies whether a combination of interpicture merging and intrapicture prediction is applied to the current coding unit. Array indices x0 and y0 specify the position (x0, y0) of the top-left luminance sample in the coding block that is considered for the top-left luminance sample of the picture. When ciip_flag[x0][y0] does not exist, it is inferred as follows: - If all of the following conditions are true, then cip_flag[x0][y0] is inferred to be equal to 1. - sps_ciip_enabled_flag is equal to 1. - general_merge_flag[x0][y0] is equal to 1. - merge_subblock_flag[x0][y0] is equal to 0. - regular_merge_flag[x0][y0] is equal to 0. - cbWidth is less than 128. - cbHeight is less than 128. - cbWidth * cbHeight is 64 or greater. - Otherwise, ciip_flag[x0][y0] is inferred to be equal to 0. When ciip_flag[x0][y0] is equal to 1, the variable IntraPredModeY[x][y] (where x=x0..x0+cbWidth-1 and y=y0..y0+cbHeight-1) is set to equal to INTRA_PLANAR. The variable MergeTriangleFlag[x0][y0] specifies whether triangle shape-based motion compensation is used to generate the predicted sample for the current coding unit when decoding the B slice, and is derived as follows: - MergeTriangleFlag[x0][y0] is set to 1 if all of the following conditions are true. - sps_triangle_enabled_flag is equal to 1. - slice_type is equal to B. - general_merge_flag[x0][y0] is equal to 1. - MaxNumTriangleMergeCand is 2 or greater. - cbWidth * cbHeight is 64 or greater. - regular_merge_flag[x0][y0] is equal to 0. - merge_subblock_flag[x0][y0] is equal to 0. - cip_flag[x0][y0] is equal to 0. - weigedPredFlag is equal to 0. - Otherwise, MergeTriangleFlag[x0][y0] is set to equal to 0. The second implementation is shown in Table 3. If weightedPredFlag is equal to 1, the syntax element max_num_merge_cand_minus_max_num_triangle_cand does not exist, and MaxNumTriangleMergeCand is inferred to a value less than 2. [Table 3] JPEG2026086555000012.jpg240170 JPEG2026086555000013.jpg235170 JPEG2026086555000014.jpg234170 JPEG2026086555000015.jpg143170 In particular, the following semantics may be used for the second implementation. max_num_merge_cand_minus_max_num_triangle_cand specifies the maximum number of triangular merge mode candidates supported by slices, subtracted from MaxNumMergeCand. When max_num_merge_cand_minus_max_num_triangle_cand does not exist, sps_triangle_enabled_flag is equal to 1, slice_type is equal to B, weightedPredFlag is equal to 0, and MaxNumMergeCand is 2 or greater, max_num_merge_cand_minus_max_num_triangle_cand is inferred to be equal to pps_max_num_merge_cand_minus_max_num_triangle_cand_minus1+1. When max_num_merge_cand_minus_max_num_triangle_cand does not exist, sps_triangle_enabled_flag is equal to 1, slice_type is equal to B, weightedPredFlag is equal to 1, and MaxNumMergeCand is 2 or greater, max_num_merge_cand_minus_max_num_triangle_cand is inferred to be equal to pMaxNumMergeCand or MaxNumMergeCand-1. The maximum number of triangle merge mode candidates, MaxNumTriangleMergeCand, is derived as follows: MaxNumTriangleMergeCand=MaxNumMergeCand―max_num_merge_cand_minus_max_num_triangle_cand When max_num_merge_cand_minus_max_num_triangle_cand exists, the value of MaxNumTriangleMergeCand is assumed to be within the range of 2 to MaxNumMergeCand (including both ends). MaxNumTriangleMergeCand is set to 0 when max_num_merge_cand_minus_max_num_triangle_cand does not exist (and sps_triangle_enabled_flag is equal to 0, or MaxNumMergeCand is less than 2). Triangle merge mode is not allowed for the current slice when MaxNumTriangleMergeCand is equal to 0. The disclosure mechanism is applicable not only to TPM and GEO but also to other non-rectangular prediction and partitioning modes such as combined intrainterpretation with triangular partitions. Since TPM and GEO apply only to B slices, the variable weightedPredFlag in the above embodiment can be directly replaced by the variable pps_weighted_bipred_flag. A third implementation is shown in Table 6, where the coding unit checks whether the value of the weightedPredFlag variable is equal to 0. The variable weightedPredFlag is derived as follows: - weightedPredFlag is set to 0 if all of the following conditions are met. luma_weight_l0_flag[i] is equal to 0 for i in the range 0 to NumRefIdxActive[0]. luma_weight_l1_flag[i] is equal to 0 for i from 0 to NumRefIdxActive[1]. chroma_weight_l0_flag[i] is equal to 0 for i between 0 and NumRefIdxActive[0]. chroma_weight_l0_flag[i] is equal to 0 for i between 0 and NumRefIdxActive[1]. - Otherwise, weightedPredFlag is set to 1. The derivation process for weightedPredFlag is as follows: if all weighting flags for the luminance and chrominance components, as well as all reference indices of the current slice, are 0, then weighted prediction is disabled for the current slice; otherwise, weighted prediction may be used for the current slice. As disclosed above, the variable weightedPredFlag indicates whether slice-level weighted predictions should be used when obtaining interpredicted samples of a slice. A fourth implementation is shown in Table 2, where weightedPredFlag is replaced with slice_weighted_pred_flag, which is signaled in the slice header as shown in Table 4. As disclosed above, the syntax slice_weighted_pred_flag indicates whether slice-level weighted prediction should be used when obtaining interpretation samples of a slice. [Table 4] JPEG2026086555000017.jpg231170 JPEG2026086555000018.jpg240170 JPEG2026086555000019.jpg239170 JPEG2026086555000020.jpg142170 In particular, the following semantics may be used for the fourth implementation. A value of `slice_weighted_pred_flag` equal to 0 indicates that weighted predictions are not applied to the current slice. A value of `slice_weighted_pred_flag` equal to 1 indicates that weighted predictions are applied to the current slice. If not provided, the value of slice_weighted_pred_flag is inferred to be 0. A fifth implementation involves disabling the TPM at the block level due to compatibility constraints. For blocks that are TPM coded, there should be no weighting factors for the luminance and chrominance components of the reference picture for the interpreters P0710 and P1720 (as shown in Figure 7). For more details, refIdxA and predListFlagA specify the reference index and reference picture list for interpreter P0, and refIdxB and predListFlagB specify the reference index and reference picture list for interpreter P1. The variables lumaWeightedFlag and chromaWeightedFlag are derived as follows:
number
number
number
number
number
Number
Number
Number
Number
Number
number
number
number
number
number
number
Number
Number
Number
Table 5
Table 6
number
number
number
number
number
number
number
number
Number
number
number
number
[0192] In one example, the decision of whether TPM or GEO is enabled is made by considering the list of reference pictures that the block may use for non-rectangular weighted predictions. When the merge list for the block contains elements from only one list of reference pictures k, the value of the variable WWPDisabled[k] determines whether this merge mode is enabled.
[0193] In one example, the merge list for non-rectangular prediction mode is configured to include only elements for which weighted prediction is not enabled.
[0194] The following sections of the specification illustrate this example. The input to this process is, - The luminance position (xCb, yCb) of the top-left sample of the current luminance coding block relative to the top-left luminance sample of the current picture. - Variable cbWidth that specifies the width of the current coding block in the luminance sample, - A variable cbHeight that specifies the height of the current coding block in the luminance sample. The output of this process is as follows, where X is 0 or 1. - Availability flags for adjacent coding units: availableFlagA0, availableFlagA1, availableFlagB0, availableFlagB1, and availableFlagB2 - Reference indices of adjacent coding units refIdxLXA0, refIdxLXA1, refIdxLXB0, refIdxLXB1, and refIdxLXB2, - Flags for the use of adjacent coding units: predFlagLXA0, predFlagLXA1, predFlagLXB0, predFlagLXB1, and predFlagLXB2. - Motion vectors of adjacent coding units mvLXA0, mvLXA1, mvLXB0, mvLXB1 and mvLXB2 with 1 / 16 fractional sample precision. - Half-sample interpolation filter indices hpelIfIdxA0, hpelIfIdxA1, hpelIfIdxB0, hpelIfIdxB1, and hpelIfIdxB2, - Bidirectional prediction weight indices bcwIdxA0, bcwIdxA1, bcwIdxB0, bcwIdxB1, and bcwIdxB2. The following applies to the derivation of availableFlagB1, refIdxLXB1, predFlagLXB1, mvLXB1, hpelIfIdxB1, and bcwIdxB1. - The luminance position (xNbB1, yNbB1) in an adjacent luminance coding block is set to equal to (xCb+cbWidth-1, yCb-1). - As specified in Section 6.4.4, the derivation process for adjacent block availability is invoked with the current luminance position (xCurr, yCurr) set to (xCb, yCb), adjacent luminance position (xNbB1, yNbB1), CheckPredModeY set to true, and cIdx set to 0 as inputs, and the output is assigned to the block availability flag availableB1. - The variables availableFlagB1, refIdxLXB1, predFlagLXB1, mvLXB1, hpelIfIdxB1, and bcwIdxB1 are derived as follows: - If availableB1 is equal to false, availableFlagB1 is set to equal to 0, both components of mvLXB1 are set to equal to 0, refIdxLXB1 is set to equal to -1, predFlagLXB1 is set to equal to 0, if X is 0 or 1, hpelIfIdxB1 is set to 0, and bcwIdxB1 is set to equal to 0. - Otherwise, availableFlagB1 is set to equal to 1, and the following assignment is made:
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
[0195] One implementation, as shown in Figure 15, discloses a method for obtaining the maximum number of geometric partitioning merger mode candidates for video decoding, the method including the following: Obtain a bitstream for a video sequence (S1501).
[0196] The bitstream may be obtained via a wireless or wired network. The bitstream may be transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line, or wireless technologies such as infrared, radio, microwave, Wi-Fi, Bluetooth, LTE, or 5G.
[0197] In one embodiment, the bitstream is a sequence of bits in the form of a network abstraction layer (NAL) unit stream or byte stream that forms a representation of a sequence of access units (AUs) that form one or more coded video sequences (CVS).
[0198] In some embodiments, during the decoding process, the decoder reads the bitstream and derives the decoded picture from the bitstream, while during the encoding process, the encoder generates the bitstream.
[0199] Typically, a bitstream will contain syntactic elements formed by a syntactic structure. Syntax elements: Elements of data represented in a bitstream Syntax structure: Zero or more syntactic elements that exist together in a bitstream in a specified order.
[0200] In certain cases, a bitstream format specifies the relationship between network abstraction layer (NAL) unit streams and byte streams, both of which are referred to as bitstreams.
[0201] A bitstream can be one of two formats: a NAL unit stream format or a byte stream format. Conceptually, the NAL unit stream format is the more "basic" type. A NAL unit stream format contains a sequence of syntactic structures called NAL units. This sequence is ordered in decryption order. There are constraints imposed on the decryption order (and) of NAL units in a NAL unit stream.
[0202] A byte stream format may be constructed from a NAL unit stream format by ordering NAL units in decoding order and prefixing each NAL unit with a start code prefix and zero or more zero-value bytes to form a stream of bytes. The NAL unit stream format may be extracted from the byte stream format by searching for the position of a unique start code prefix pattern in this stream of bytes.
[0203] This section specifies the relationship between the source and the decoded picture, given via a bitstream.
[0204] A video source represented by a bitstream is a sequence of pictures in decoded order.
[0205] The source and decoded picture each consist of one or more sample sequences. - Brightness (Y) only (monochrome). - Luminance and two color differences (YCbCr or YCgCo). - Green, blue, and red (also known as GBR or RGB). - An array representing a sample of monochrome or tristimulus color that is not otherwise specified (e.g., also known as YZX, XYZ).
[0206] The variables and terms associated with these arrays are called luminance (or L or Y) and chrominance, and the two chrominance arrays are called Cb and Cr, regardless of the color representation method actually used. The color representation method actually used may be indicated in the syntax specified in the VUI parameters, as specified in ITU-T H.SEI|ISO / IEC 23002-7.
[0207] The value of the first indicator is obtained according to the bitstream (S1502).
[0208] The first indicator represents the maximum number of MVP candidates to merge the motion vector prediction MVP candidates.
[0209] In one example, the first indicator is represented according to the variable MaxNumMergeCand.
[0210] In one example, the maximum number of MVP candidates to merge, MaxNumMergeCand, can be derived as follows:
number
[0211] The value of the second indicator is obtained according to the bitstream (S1503). The second indicator shows whether geometric partition-based motion compensation is enabled for the video sequence.
[0212] In one example, the second indicator is represented according to sps_geo_enabled_flag(sps_gpm_enabled_flag). sps_geo_enabled_flag being equal to 1 indicates that geometric partition-based motion compensation is enabled for CLVS, and merge_gpm_partition_idx, merge_gpm_idx0, and merge_gpm_idx1 can exist in the CLVS coding unit syntax. sps_geo_enabled_flag being equal to 0 indicates that geometric partition-based motion compensation is disabled for CLVS, and merge_gpm_partition_idx, merge_gpm_idx0, and merge_gpm_idx1 do not exist in the CLVS coding unit syntax. When they do not exist, the value of sps_geo_enabled_flag is inferred to be equal to 0.
[0213] In one implementation, obtaining the value of the second indicator is performed after obtaining the value of the first indicator.
[0214] In one implementation, the value of the second indicator is obtained from the bitstream sequence parameter set SPS.
[0215] In one implementation, when the value of the first indicator is greater than or equal to a threshold, the value of the second indicator is analyzed from the bitstream sequence parameter set SPS. The threshold is an integer value, and in one example, the threshold is 2.
[0216] For example, the value of the second indicator sps_gpm_enabled_flag is obtained as follows: Sequence Parameter Set RBSP Syntax [Table 53]
[0217] Analyze the value of the third indicator from the bitstream (S1504).
[0218] In one implementation, when the value of the first indicator is greater than a threshold and the value of the second indicator is equal to a preset value, the value of the third indicator is analyzed from the bitstream. The third indicator represents the maximum number of geometric partitioning merge mode candidates subtracted from the value of the first indicator. The threshold is an integer value, and the preset value is also an integer value. In one example, the threshold is 2.
[0219] In one example, the preset value is 1.
[0220] In one example, the value of the third indicator is obtained from the bitstream's sequence parameter set SPS.
[0221] In one example, the third indicator is represented according to sps_max_num_merge_cand_minus_max_num_geo_cand(sps_max_num_merge_cand_minus_max_num_gpm_cand). For example, the value of the third indicator sps_max_num_merge_cand_minus_max_num_gpm_cand is obtained according to the following: Sequence Parameter Set RBSP Syntax [Table 54]
[0222] In one implementation, the method further includes setting the maximum number of geometric partitioning merge mode candidates to 2 when the value of the first indicator is equal to a threshold and the value of the second indicator is equal to a preset value.
[0223] In one implementation, the method further includes setting the value of the maximum number of candidate scientific partitioning merge modes to 0 when the value of the first indicator is less than a threshold or the value of the second indicator is not equal to a preset value.
[0224] For example, sps_max_num_merge_cand_minus_max_num_gpm_cand specifies the maximum number of geometric partitioning merge mode candidates supported by SPS, subtracted from MaxNumMergeCand. The value of sps_max_num_merge_cand_minus_max_num_gpm_cand should be within the range of 0 to MaxNumMergeCand-2 (including both ends). The maximum number of geometric partitioning merge mode candidates, MaxNumGpmMergeCand(MaxNumGeoMergeCand), is derived as follows:
number
[0225] In an implementation as shown in Figure 16, a video decoder 1600 is disclosed, which includes a receive module 1601 configured to acquire a bitstream for a video sequence; an acquisition module 1602 configured to acquire a value of a first indicator according to the bitstream, the first indicator representing the maximum number of motion vector prediction MVP candidates to merge; an analysis module 1603 configured to acquire a value of a second indicator according to the bitstream, the second indicator representing whether geometric partition-based motion compensation is enabled for the video sequence; and an analysis module 1603 configured to analyze a value of a third indicator from the bitstream when the value of the first indicator is greater than a threshold and the value of the second indicator is equal to a preset value, the third indicator representing the maximum number of geometric partitioning merge mode candidates subtracted from the value of the first indicator.
[0226] In one implementation, the decision module 1602 is configured to set the maximum number of geometric partitioning merge mode candidates to 2 when the value of the first indicator is equal to a threshold and the value of the second indicator is equal to a preset value.
[0227] In one implementation, the decision module 1602 is configured to set the value of the maximum number of geometric partitioning merge mode candidates to 0 when the value of the first indicator is less than a threshold or the value of the second indicator is not equal to a preset value.
[0228] In one implementation, the threshold is 2.
[0229] In one implementation, the preset value is 1.
[0230] In one implementation, obtaining the value of the second indicator is performed after obtaining the value of the first indicator.
[0231] In one implementation, when the value of the first indicator is greater than or equal to a threshold, the value of the second indicator is analyzed from the bitstream sequence parameter set SPS.
[0232] In one implementation, the value of the second indicator is obtained from the bitstream sequence parameter set SPS.
[0233] In one implementation, the value of the third indicator is obtained from the bitstream sequence parameter set SPS.
[0234] Further details regarding the receiving module 1601, the acquisition module 1602, and the analysis module 1603 can be found in the example and implementation of the method described above.
[0235] Example 1. A video coding method including signaling of merge mode candidate numbers, - To show the number of merge mode candidates for normal mode (MaxNumMergeCand), - Indicates whether non-rectangular mode is enabled by the non-rectangular merge enabled flag (sps_geo_enabled_flag), - The non-rectangular merge enabled flag value is non-zero, and the number of merge mode candidates for normal merge modes exceeds a first threshold, including indicating the number of non-rectangular mode modes (sps_max_num_merge_cand_minus_max_num_geo_cand), - When the number of merge mode candidates for normal mode exceeds a second threshold (1), the non-rectangular merge enabled flag is displayed. Example 2. The non-rectangular merge enabled flag value is determined after the process of deriving the MaxNumMergeCand value from the sps_six_minus_max_num_merge_cand syntax element is complete, using the method in Example 1. Example 3. The threshold check is the same as in the previous example, comparing whether the number of merge mode candidates is greater than 2 for the normal merge mode. Example 4. The first threshold check is a comparison of whether the number of merge mode candidates is greater than 3 for the normal merge mode, using the method of Example 1 or Example 2.
[0236] In one example, an interpretation method is disclosed, the method comprising: determining whether a non-rectangular interpretation mode is permitted for a group of blocks; obtaining one or more interpretation mode parameters and weighted prediction parameters for the group of blocks; and obtaining a predicted value for the current block based on one or more interpretation mode parameters and weighted prediction parameters, wherein one of the interpretation mode parameters indicates reference picture information for the current block, and the group of blocks includes the current block.
[0237] For example, the reference picture information includes whether weighted prediction is enabled for the reference picture index, and the non-rectangular interpretation mode is disabled when weighted prediction is enabled.
[0238] In feasible implementations, the non-rectangular interpretation mode is enabled when weighted prediction is disabled.
[0239] In one example, determining that the non-rectangular interpretation mode is allowed indicates that the maximum number of triangular merge candidates (MaxNumTriangleMergeCand) is greater than 1.
[0240] In one example, a group of blocks consists of pictures, and the information indicating whether weighted prediction parameters and non-rectangular prediction modes are allowed is found in the picture header of the picture.
[0241] In one example, a group of blocks consists of slices, and the directional information for determining whether weighted prediction parameters and non-rectangular prediction modes are allowed is found in the slice header of the slice.
[0242] In one example, the non-rectangular interpretation mode is the triangular partitioning mode.
[0243] In one example, a non-rectangular interpretation mode is a geometric (GEO) partitioning mode.
[0244] In one example, weighted prediction parameters are used for slice-level brightness correction.
[0245] In one example, weighted prediction parameters are used for block-level luminance correction.
[0246] In one example, the weighted prediction parameter includes a flag indicating whether the weighted prediction is applied to the luminance and / or chrominance components of the prediction block, and a linear model parameter specifying the linear transformation of the values of the prediction block.
[0247] In one example, an apparatus for interpretation is disclosed, which includes a non-temporary memory storing processor-executable instructions, and a processor coupled to the memory, the processor configured to execute the processor-executable instructions to facilitate one of the examples of the method.
[0248] In one example, a bitstream for interpretation is disclosed, which includes instructional information for determining whether a non-rectangular interpretation mode is permitted for a group of blocks, and one or more interpretation modes and weighted prediction parameters for the group of blocks, where the predicted value of the current block is obtained based on one or more interpretation mode parameters and weighted prediction parameters, where one of the interpretation mode parameters indicates reference picture information for the current block, and the group of blocks includes the current block.
[0249] For example, the reference picture information includes whether weighted prediction is enabled for the reference picture index, and the non-rectangular interpretation mode is disabled when weighted prediction is enabled.
[0250] For example, the non-rectangular interpretation mode is effective when weighted prediction is disabled.
[0251] In one example, the instruction information includes the fact that the maximum number of triangular merge candidates (MaxNumTriangleMergeCand) is greater than 1.
[0252] In one example, a group of blocks consists of pictures, and the weighted prediction parameters and instruction information are located in the picture header of the picture.
[0253] In one example, a group of blocks consists of slices, and the weighted prediction parameters and instruction information are located in the slice header of the picture.
[0254] In one example, the non-rectangular interpretation mode is the triangular partitioning mode.
[0255] In one example, a non-rectangular interpretation mode is a geometric (GEO) partitioning mode.
[0256] In one example, weighted prediction parameters are used for slice-level brightness correction.
[0257] In one example, weighted prediction parameters are used for block-level luminance correction.
[0258] In one example, the weighted prediction parameter includes a flag indicating whether the weighted prediction is applied to the luminance and / or chrominance components of the prediction block, and a linear model parameter specifying the linear transformation of the values of the prediction block.
[0259] In one example, an inter-prediction device is disclosed, which includes a determination module configured to determine whether a non-rectangular inter-prediction mode is permitted for a group of blocks; an acquisition module configured to acquire one or more inter-prediction mode parameters and weighted prediction parameters for a group of blocks; and a prediction module configured to acquire a prediction value for the current block based on one or more inter-prediction mode parameters and weighted prediction parameters, wherein one of the inter-prediction mode parameters indicates reference picture information for the current block, and the group of blocks includes the current block.
[0260] For example, the reference picture information includes whether weighted prediction is enabled for the reference picture index, and the non-rectangular interpretation mode is disabled when weighted prediction is enabled.
[0261] For example, the non-rectangular interpretation mode is effective when weighted prediction is disabled.
[0262] In one example, the decision module is configured to show that the maximum number of triangular merge candidates (MaxNumTriangleMergeCand) is greater than 1.
[0263] In one example, a group of blocks consists of pictures, and the information indicating whether weighted prediction parameters and non-rectangular prediction modes are allowed is found in the picture header of the picture.
[0264] In one example, a group of blocks consists of slices, and the directional information for determining whether weighted prediction parameters and non-rectangular prediction modes are allowed is found in the slice header of the slice.
[0265] In one example, the non-rectangular interpretation mode is the triangular partitioning mode.
[0266] In one example, a non-rectangular interpretation mode is a geometric (GEO) partitioning mode.
[0267] In one example, weighted prediction parameters are used for slice-level brightness correction.
[0268] In one example, weighted prediction parameters are used for block-level luminance correction.
[0269] In one example, the weighted prediction parameter includes a flag indicating whether the weighted prediction is applied to the luminance and / or chrominance components of the prediction block, and a linear model parameter specifying the linear transformation of the values of the prediction block.
[0270] The embodiment provides efficient encoding and / or decoding that uses signal relation information in the slice header only for slices that enable or allow bidirectional interprediction in a bidirectional (B) predictive slice, also known as a B slice.
[0271] The following describes the application of the encoding and decoding methods shown in the above embodiment and the system using them.
[0272] Figure 10 is a block diagram showing a content supply system 3100 for realizing a content distribution service. This 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 communication channel 13 described above. The communication link 3104 includes, but is not limited to, Wi-Fi, Ethernet, cable, wireless (3G / 4G / 5G), USB, or any combination thereof.
[0273] The capture device 3102 may generate data and encode the data using the encoding method shown in the embodiments described above. Alternatively, the capture device 3102 may distribute the data to a streaming server (not shown), which encodes the data and transmits the encoded data to the terminal device 3106. The capture device 3102 includes, but is not limited to, a camera, a smartphone or tablet, a computer or laptop, a video conferencing system, a PDA, an in-vehicle device, or any combination thereof. For example, the capture device 3102 may include the source device 12 as described above. If the data includes video, the video encoder 20 included in the capture device 3102 can actually perform the video encoding process. If the data includes audio (i.e., speech), the audio encoder included in the capture device 3102 can actually perform the audio encoding process. In some practical scenarios, the capture device 3102 distributes the encoded video and audio data by multiplexing them together. In other practical scenarios, such as a video conferencing system, the encoded audio data and encoded video data are not multiplexed. The capture device 3102 distributes the encoded audio data and encoded video data separately to the terminal device 3106.
[0274] In the content supply system 3100, the terminal device 310 receives and plays back encoded data. The terminal device 3106 can be a device capable of receiving and recovering data and decoding the aforementioned encoded data, such as a smartphone or Pad 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a set-top box 3116, a video conferencing system 3118, a video surveillance system 3120, a personal digital assistant (PDA) 3122, an in-vehicle device 3124, or any combination thereof. For example, the capture device 3106 may include the source device 14 as described above. If the encoded data includes video, the video decoder 30 included in the terminal device is prioritized to perform video decoding. If the encoded data includes audio, the audio decoder included in the terminal device is prioritized to perform audio decoding.
[0275] In terminal devices 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 supply the decoded data to its display. In devices without a display, such as an STB 3116, a video conferencing system 3118, or a video surveillance system 3120, an external display 3126 is made contact thereto to receive and display the decoded data.
[0276] When each device in this system performs encoding or decoding, a picture encoding device or a picture decoding device can be used, as shown in the embodiments described above.
[0277] Figure 11 shows an example configuration of terminal device 3106. After terminal device 3106 receives a stream from capture device 3102, protocol progress unit 3202 analyzes the transmission protocol of the stream. This protocol includes, but is not limited to, Real-Time Streaming Protocol (RTSP), Hyper-Text Transfer Protocol (HTTP), HTTP Live Streaming Protocol (HLS), MPEG-DASH, Real-Time Transport Protocol (RTP), Real-Time Messaging Protocol (RTMP), or any combination thereof.
[0278] 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 separate the multiplexed data into encoded audio data and encoded video data. As described above, in some practical scenarios, such as in a video conferencing system, the encoded audio data and encoded video data are not multiplexed. In this situation, the encoded data is sent to the video decoder 3206 and audio decoder 3208 without going through the demultiplexing unit 3204.
[0279] Through demultiplexing, a video elemental stream (ES), an audio ES, and optionally subtitles are generated. A video decoder 3206, including the video decoder 30 described in the above embodiment, decodes the video ES by the decoding method shown in the above embodiment to generate video frames and transmits this data to the synchronization unit 3212. An audio decoder 3208 decodes the audio ES to generate audio frames and transmits this data to the synchronization unit 3212. Alternatively, video frames may be stored in a buffer (not shown in Figure 11) before being supplied to the synchronization unit 3212. Alternatively, audio frames may be stored in a buffer (not shown in Figure 11) before being supplied to the synchronization unit 3212.
[0280] The synchronization unit 3212 synchronizes video frames and audio frames and supplies video / audio to the video / audio display 3214. For example, the synchronization unit 3212 synchronizes the presentation of video and audio information. The information can be coded using syntax with timestamps relating to the presentation of encoded audio and visual data and timestamps relating to the delivery of the data stream itself. If subtitles are included in the stream, the subtitle decoder 3210 decodes the subtitles, synchronizes them with the video and audio frames, and supplies the video / audio / subtitles to the video / audio / subtitle display 3216.
[0281] The present invention is not limited to the system described above, and either the picture encoding device or the picture decoding device in the above-described embodiment can be incorporated into other systems, such as automotive systems.
[0282] Mathematical operators 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 additional operations such as exponentiation and real-valued division are defined. Numbering and counting rules generally start from 0. For example, "1st" is equivalent to 0, "2nd" is equivalent to 1, and so on.
[0283] Arithmetic operators The following arithmetic operators are defined as follows: + Addition - Subtraction (as a two-argument operator) or negation (as a unary prefix operator) * Multiplication including matrix multiplication x y Exponentiation. Specifies the exponent of x, or the power of y. In other contexts, such notation is used as a superscript not intended to be interpreted as an exponentiation. Integer division where the result is truncated towards zero. For example, 7 / 4 and -7 / -4 are truncated to 1, and -7 / 4 and 7 / -4 are truncated to -1. The division symbol (÷) is used to indicate division in mathematical expressions where rounding or truncation is not intended.
[0284]
number
[0285]
number
[0286] Logical operators The following logical operators are defined as follows: x&&y: Boolean logic "and" for x and y Boolean logic "or" for x||yx and y ! Boolean logic "negation" If x?y:zx is not TRUE or 0, it is evaluated using the value of y; otherwise, it is evaluated using the value of z.
[0287] Relational operators The following relational operators are defined as follows: > larger >= Above < Smaller <= Below == equal != Not equal When a relational operator is applied to a syntactic element or variable assigned the value "na" (not applicable), "na" is treated as a unique value for that syntactic element or variable. The value "na" is considered not to be equal to any other value.
[0288] Bitwise operator The following bitwise operators are defined as follows. & is the bitwise "and". When operating on integer arguments, it operates on the two's complement representation of the integer values. When operating on a binary argument that contains fewer bits than the other argument, the shorter argument is extended by adding bits equal to 0 at the more significant bits. | is the bitwise "or". When operating on integer arguments, it operates on the two's complement representation of the integer values. When operating on a binary argument that contains fewer bits than the other argument, the shorter argument is extended by adding bits equal to 0 at the more significant bits. ^ is the bitwise "exclusive or". When operating on integer arguments, it operates on the two's complement representation of the integer values. When operating on a binary argument that contains fewer bits than the other argument, the shorter argument is extended by adding bits equal to 0 at the more significant bits. x>>y is the arithmetic right shift of the two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. The bit shifted into the most significant bit (MSB) as a result of the right shift has a value equal to the MSB of x before the shift operation. x<<y is the arithmetic left shift of the two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. The bit shifted into the least significant bit (LSB) as a result of the left shift has a value equal to 0.
[0289] Assignment operator The following assignment operators are defined as follows. = is the assignment operator ++ is increment, i.e., x++ is equivalent to x=x+1, and when used as an array index, it is evaluated with the value of the variable before the increment operation. -- Decrement, i.e., x++, is equivalent to x = x + 1, and when used with array indices, it is evaluated with the value of the variable before the decrement operation. The += operator increments by a specified amount; that is, x+=3 is equivalent to x=x+3, and x+=(-3) is equivalent to x=x+(-3). -= decrements by the specified amount; that is, x-=3 is equivalent to x=x-3, and x-=(-3) is equivalent to x=x-(-3).
[0290] Range notation The following notation is used to specify a range of values: x = y . . zx takes integer values from y to z, where x, y, and z are integers, and z is greater than y.
[0291] Mathematical functions The following mathematical function is defined.
[0292]
number
[0293]
number
[0294]
number
[0295]
number
[0296]
number
[0297]
number
[0298] Priority ranking of operations If the precedence of an expression is not explicitly indicated using parentheses, the following rules apply: - Higher-priority operations are evaluated before lower-priority operations. - Operations with the same priority are evaluated sequentially from left to right. The table below specifies the order of operations from highest to lowest, with higher positions in the table indicating higher priority. For these operators, which are also used in the C programming language, the precedence used herein is the same as that used in the C programming language.
[0299] [Table 55] Table: (Top of table) Highest to (Bottom of table) Lowest order of operations
[0300] Text description of logical operations In this text, the description of logical operations written mathematically in the following format
[0301]
number
[0302]
number
[0303]
number
[0304]
number
[0305]
number
[0306]
number
[0307] For example, but not limited to, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage devices, magnetic disk storage or other magnetic storage devices, flash memory, or any other media that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Any connection may also be appropriately referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of a medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carriers, signals, or other temporary media, but instead refer to non-temporary, tangible storage media. As used herein, discs include compact discs (CDs), laser discs, optical discs, digital multipurpose discs (DVDs), floppy disks, and Blu-ray discs, which typically reproduce data magnetically and optically using lasers. The above combinations should also be included in the scope of computer-readable media.
[0308] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, the term “processor” as used herein may refer to any of the aforementioned structures or other structures suitable for implementing the technology described herein. Additionally, in some embodiments, the functions described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined codec. Furthermore, this technology can be fully implemented with one or more circuits or logic elements.
[0309] The technology of this disclosure may be implemented in a wide range of devices or apparatus, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chipsets). Various components, modules, or units are described in this disclosure to highlight the functional aspects of devices configured to perform the disclosed technology, but implementation by different hardware units is not necessarily required. Rather, as described above, the various units may be combined within a codec hardware unit, or they may be provided by a set of interoperable hardware units, including one or more processors as described above, together with appropriate software and / or firmware.
[0310] Further embodiments of the present invention are provided below. Note that the numbering used in the following sections does not necessarily conform to the numbering used in the preceding sections.
[0311] Embodiment 1: A method for interpreting blocks of a picture, wherein signaling for the activation of weighted prediction parameters and non-rectangular interpretation is performed for a group of prediction blocks, the method comprising: obtaining interpretation mode parameters for a block, the obtaining of which includes checking whether non-rectangular interpretation mode is enabled for a group of blocks containing prediction blocks; obtaining weighted prediction parameters and interpretation mode parameters for a block, wherein a reference picture is shown for the block and weighted prediction parameters are specified for a group of blocks. Embodiment 2: The method according to Embodiment 1, wherein enabling non-rectangular interpretation is performed by indicating the maximum number of triangle merge candidates greater than 1 (MaxNumTriangleMergeCand). Embodiment 3: The method according to Embodiment 1 or 2, wherein non-rectangular interpretation is inferred to be invalid when the weighted prediction parameter specifies a valid weighted prediction for at least one reference index. Embodiment 4: The method according to any embodiment 1 to 3, wherein the group of blocks is a picture, and the weighted prediction parameter and the non-rectangular interpretation mode parameter are indicated in the picture header. Embodiment 5: The method according to any Embodiments 1 to 4, wherein the group of blocks is a slice, and the weighted prediction parameter and the non-rectangular mode parameter for interpretation are indicated in the slice header. Embodiment 6: The method of any Embodiment 1 to 5, wherein the interprediction mode parameter includes a reference index used to determine a reference picture and motion vector information used to determine the position of a reference block within the reference picture. Embodiment 7: Any method of Embodiments 1 to 6, wherein the non-rectangular merge mode is a triangular partitioning mode. Embodiment 8: Any method of Embodiments 1 to 7, wherein the non-rectangular merge mode is GEO mode. Embodiment 9: Any method of Embodiments 1 to 8, wherein the weighted prediction is a slice-level brightness compensation mechanism (such as global weighted prediction). Embodiment 10: Any method of Embodiments 1 to 9, wherein the weighted prediction is a block-level luminance compensation mechanism (such as local luminance prediction) (LIC). Embodiment 11: The method of Embodiments 1 to 10, wherein the weighted prediction parameters include a set of flags indicating whether the weighted prediction is applied to the luminance and chrominance components of a prediction block, and linear model parameters α and β that specify the linear transform of the values of the prediction block.
[0312] In one aspect of this application, an interpretation method 1200 is disclosed, as shown in Figure 12, the method comprising: determining whether a non-rectangular interpretation mode is permitted for a group of blocks (S1201); obtaining one or more interpretation mode parameters and weighted prediction parameters for the group of blocks (S1202); and obtaining a predicted value for the current block based on one or more interpretation mode parameters and weighted prediction parameters, wherein one of the interpretation mode parameters indicates reference picture information for the current block, and the group of blocks includes the current block (S1203).
[0313] In a feasible implementation, the reference picture information includes whether weighted prediction is enabled for the reference picture index, and the non-rectangular interpretation mode is disabled when weighted prediction is enabled.
[0314] In feasible implementations, the non-rectangular interpretation mode is enabled when weighted prediction is disabled.
[0315] In a feasible implementation, determining that a non-rectangular interpretation mode is allowed indicates that the maximum number of triangular merge candidates (MaxNumTriangleMergeCand) is greater than 1.
[0316] In a feasible implementation, a group of blocks consists of pictures, and the information indicating whether weighted prediction parameters and non-rectangular prediction modes are allowed is found in the picture header of the picture.
[0317] In a feasible implementation, a group of blocks consists of slices, and the directional information for determining which weighted prediction parameters and non-rectangular prediction modes are allowed is found in the slice header of the slice.
[0318] In feasible implementations, the non-rectangular interpretation mode is the triangular partitioning mode.
[0319] In feasible implementations, the non-rectangular interpretation mode is the geometric (GEO) partitioning mode.
[0320] In a feasible implementation, weighted prediction parameters are used for slice-level brightness correction.
[0321] In a feasible implementation, weighted prediction parameters are used for block-level brightness correction.
[0322] In a feasible implementation, the weighted prediction parameter includes a flag indicating whether the weighted prediction is applied to the luminance and / or chrominance components of the prediction block, and a linear model parameter specifying the linear transformation of the values of the prediction block.
[0323] In a second aspect of this application, the interpretation device 1300, as shown in Figure 13, includes a non-temporary memory 1301 storing processor-executable instructions, and a processor 1302 coupled to the memory 1301, the processor 1302 being configured to execute processor-executable instructions to facilitate any one of the feasible implementations of the first aspect of this application.
[0324] A third aspect of this application discloses a bitstream for interpretation, the bitstream comprising: instruction information for determining whether a non-rectangular interpretation mode is permitted for a group of blocks; one or more interpretation modes and weighted prediction parameters for the group of blocks, the predicted value of the current block obtained based on the one or more interpretation mode parameters and weighted prediction parameters, one of the interpretation mode parameters indicating reference picture information for the current block, and the group of blocks comprising the current block.
[0325] In a feasible implementation, the reference picture information includes whether weighted prediction is enabled for the reference picture index, and the non-rectangular interpretation mode is disabled when weighted prediction is enabled.
[0326] In feasible implementations, the non-rectangular interpretation mode is enabled when weighted prediction is disabled.
[0327] In feasible implementations, the instruction information includes the fact that the maximum number of triangular merge candidates (MaxNumTriangleMergeCand) is greater than 1.
[0328] In a feasible implementation, a group of blocks consists of pictures, and the weighted prediction parameters and instruction information are located in the picture header of the picture.
[0329] In a feasible implementation, a group of blocks consists of slices, and the weighted prediction parameters and instruction information are located in the slice header of the picture.
[0330] In feasible implementations, the non-rectangular interpretation mode is the triangular partitioning mode.
[0331] In feasible implementations, the non-rectangular interpretation mode is the geometric (GEO) partitioning mode.
[0332] In a feasible implementation, weighted prediction parameters are used for slice-level brightness correction.
[0333] In a feasible implementation, weighted prediction parameters are used for block-level brightness correction.
[0334] In a feasible implementation, the weighted prediction parameter includes a flag indicating whether the weighted prediction is applied to the luminance and / or chrominance components of the prediction block, and a linear model parameter specifying the linear transformation of the values of the prediction block.
[0335] In a fourth aspect of this application, an interprediction device 1400 is disclosed, as shown in Figure 14, the device comprising: a determination module 1401 configured to determine whether a non-rectangular interprediction mode is permitted for a group of blocks; an acquisition module 1402 configured to acquire one or more interprediction mode parameters and weighted prediction parameters for a group of blocks; and a prediction module 1403 configured to acquire a prediction value for the current block based on one or more interprediction mode parameters and weighted prediction parameters, wherein one of the interprediction mode parameters indicates reference picture information for the current block, and the group of blocks includes the current block.
[0336] In a feasible implementation, the reference picture information includes whether weighted prediction is enabled for the reference picture index, and the non-rectangular interpretation mode is disabled when weighted prediction is enabled.
[0337] In feasible implementations, the non-rectangular interpretation mode is enabled when weighted prediction is disabled.
[0338] In a feasible implementation, the decision module 1401 is configured to indicate that the maximum number of triangular merge candidates (MaxNumTriangleMergeCand) is greater than 1.
[0339] In a feasible implementation, a group of blocks consists of pictures, and the information indicating whether weighted prediction parameters and non-rectangular prediction modes are allowed is found in the picture header of the picture.
[0340] In a feasible implementation, a group of blocks consists of slices, and the directional information for determining which weighted prediction parameters and non-rectangular prediction modes are allowed is found in the slice header of the slice.
[0341] In feasible implementations, the non-rectangular interpretation mode is the triangular partitioning mode.
[0342] In feasible implementations, the non-rectangular interpretation mode is the geometric (GEO) partitioning mode.
[0343] In a feasible implementation, weighted prediction parameters are used for slice-level brightness correction.
[0344] In a feasible implementation, weighted prediction parameters are used for block-level brightness correction.
[0345] In a feasible implementation, the weighted prediction parameter includes a flag indicating whether the weighted prediction is applied to the luminance and / or chrominance components of the prediction block, and a linear model parameter specifying the linear transformation of the values of the prediction block.
[0346] The prior art methods can be summarized in the following list of embodiments.
[0347] Embodiment 1. Interpretation method, To determine whether a non-rectangular interpretation mode is allowed for a group of blocks, Obtaining one or more interpredictive mode parameters and weighted predictive parameters for a group of blocks, A method for obtaining a predicted value for the current block based on one or more interprediction mode parameters and weighted prediction parameters, wherein one of the interprediction mode parameters indicates reference picture information for the current block, and the group of blocks includes the current block.
[0348] Embodiment 2. The method according to Embodiment 1, wherein the reference picture information includes whether weighted prediction is enabled for the reference picture index, and the non-rectangular interpretation mode is disabled when weighted prediction is enabled.
[0349] Embodiment 3. The method according to Embodiment 1 or 2, wherein a non-rectangular interpretation mode is effective when weighted prediction is disabled.
[0350] Embodiment 4. Determining that a non-rectangular interpretation mode is permitted means The method according to any one of embodiments 1 to 3, comprising indicating that the maximum number of triangular merge candidates (MaxNumTriangleMergeCand) is greater than 1.
[0351] Embodiment 5. The method according to any one of Embodiments 1 to 4, wherein the group of blocks consists of pictures, and the instruction information for determining that weighted prediction parameters and non-rectangular prediction mode are permitted is in the picture header of the picture.
[0352] Embodiment 6. The method according to any one of Embodiments 1 to 4, wherein the group of blocks consists of slices, and the weighted prediction parameters and the instructional information for determining that a non-rectangular prediction mode is permitted are in the slice header of the slices.
[0353] Embodiment 7. The method according to any one of Embodiments 1 to 6, wherein the non-rectangular interpretation mode is a triangular partitioning mode.
[0354] Embodiment 8. The method according to any one of Embodiments 1 to 6, wherein the non-rectangular interpretation mode is a geometric (GEO) partitioning mode.
[0355] Embodiment 8a. The method according to any one of Embodiments 1 to 8, wherein syntactic elements relating to the number of merge mode candidates (providing information for determining non-rectangular inter predictions) are signaled in a sequence parameter set (SPS).
[0356] Embodiment 8b. The method according to any one of Embodiments 1 to 8a, wherein when the picture contains only one slice, the picture header is signaled in the slice header.
[0357] Embodiment 8c. The method according to any one of Embodiments 1 to 8b, wherein when the picture contains only one slice, the picture header is signaled in the slice header.
[0358] Embodiment 8d. The method according to any one of Embodiments 1 to 8c, wherein the picture parameter set includes a flag, the value of which defines whether a weighting parameter is present in the picture header or slice header.
[0359] Embodiment 8e. The method according to any one of correspondences 1 to 8d, wherein a flag in the picture header indicates whether a non-intra type slice exists and whether an inter-prediction mode parameter is signaled for this slice.
[0360] Embodiment 9. The method according to any one of Embodiments 1 to 8, wherein the weighted prediction parameters are used for slice-level brightness compensation.
[0361] Embodiment 10. The method according to any one of Embodiments 1 to 8, wherein the weighted prediction parameters are used for block-level luminance compensation.
[0362] Embodiment 11. The weighted prediction parameters are: A flag indicating whether weighted predictions are applied to the luminance and / or color difference components of the prediction block, The method according to any one of embodiments 1 to 10, comprising a linear model parameter that specifies a linear transformation of the values of a prediction block.
[0363] Embodiment 12. Apparatus for interpretation, Non-uniform memory in which processor-executable instructions are stored, A device comprising a processor coupled to memory, wherein the processor executes processor-executable instructions to facilitate any one of embodiments 1 to 11.
[0364] Embodiment 13. A bitstream for interpretation, Instructional information for determining whether a non-rectangular interpretation mode is permitted for a group of blocks, The bitstream includes one or more interpretation modes and weighted prediction parameters for a group of blocks, where the predicted value of the current block is obtained based on one or more interpretation mode parameters and weighted prediction parameters, one of which indicates reference picture information for the current block, and the group of blocks is the bitstream containing the current block.
[0365] Embodiment 14. The bitstream according to Embodiment 13, wherein the reference picture information includes whether weighted prediction is enabled for the reference picture index, and the non-rectangular interpretation mode is disabled when weighted prediction is enabled.
[0366] Embodiment 15. A non-rectangular interpretation mode is enabled when weighted prediction is disabled, the bitstream according to Embodiment 13 or 14.
[0367] Embodiment 16. The instruction information is one bitstream from any of Embodiments 13 to 15, wherein the maximum number of triangle merge candidates (MaxNumTriangleMergeCand) is greater than 1.
[0368] Embodiment 17. A bitstream according to any one of Embodiments 13 to 16, wherein the group of blocks consists of pictures, and the weighted prediction parameters and instruction information are in the picture header of the pictures.
[0369] Embodiment 18. A bitstream according to any one of Embodiments 13 to 17, wherein the group of blocks consists of slices, and the weighted prediction parameters and instruction information are in the slice header of the picture.
[0370] Embodiment 19. The non-rectangular interpretation mode is a triangular partitioning mode, as described in any one of Embodiments 13 to 18.
[0371] Embodiment 20. The non-rectangular interpretation mode is a geometric (GEO) partitioning mode, as described in any one of Embodiments 13 to 19.
[0372] Embodiment 21. A bitstream according to any one of Embodiments 13 to 20, in which weighted prediction parameters are used for slice-level brightness compensation.
[0373] Embodiment 22. A bitstream according to any one of Embodiments 13 to 20, in which weighted prediction parameters are used for block-level luminance compensation.
[0374] Embodiment 23. The weighted prediction parameters are: A flag indicating whether weighted predictions are applied to the luminance and / or color difference components of the prediction block, A bitstream according to any one of embodiments 13 to 22, comprising a linear model parameter that specifies a linear transformation of the values of a prediction block.
Claims
1. A video encoding method, The value of the first indicator is determined, wherein the first indicator represents the maximum number of motion vector prediction (MVP) candidates to merge. The value of a second indicator is determined, the second indicator representing whether geometric partition-based motion compensation is effective for the video sequence, This involves obtaining the syntax for merge data parameters, including checking for variables that indicate the presence of a non-rectangular merge mode, The method involves encoding the value of the third indicator into a bitstream when the value of the first indicator is greater than a threshold and the value of the second indicator is equal to a preset value, wherein the third indicator represents the maximum number of geometric partitioning merge mode candidates subtracted from the value of the first indicator. Encoding the syntax of the merge data parameters, Methods that include...
2. The method according to claim 1, wherein the threshold is 2.
3. The method according to claim 1, further comprising setting the value of the maximum number of geometric partitioning merge mode candidates to 2 when the value of the first indicator is equal to the threshold and the value of the second indicator is equal to the preset value.
4. The method according to claim 1, further comprising setting the value of the maximum number of geometric partitioning merge mode candidates to 0 when the value of the first indicator is less than the threshold or the value of the second indicator is not equal to the preset value.
5. The method according to claim 1, wherein the preset value is 1.
6. The method according to claim 1, wherein obtaining the value of the second indicator is performed after obtaining the value of the first indicator.
7. The method according to claim 6, wherein when the value of the first indicator is greater than or equal to the threshold, the value of the second indicator is analyzed from the sequence parameter set (SPS) of the bitstream.
8. The method according to claim 1, wherein the value of the second indicator is obtained from the sequence parameter set (SPS) of the bitstream.
9. The method according to claim 1, wherein the value of the third indicator is obtained from the sequence parameter set (SPS) of the bitstream.
10. A video decoding method, Obtaining a bitstream for a video sequence, The method involves obtaining the value of a first indicator according to the bitstream, wherein the first indicator represents the maximum number of motion vector prediction (MVP) candidates to merge. Obtaining a value of a second indicator according to the bitstream, wherein the second indicator indicates whether geometric partition-based motion compensation is enabled for the video sequence, When the value of the first indicator is greater than a threshold and the value of the second indicator is equal to a preset value, the value of the third indicator is analyzed from the bitstream, wherein the third indicator represents the maximum number of geometric partitioning merge mode candidates subtracted from the value of the first indicator. The bitstream is analyzed to obtain the syntax of the merge data parameters, which includes checking for a variable indicating the presence of a non-rectangular merge mode. Methods that include...
11. The method according to claim 10, wherein the threshold is 2.
12. The method according to claim 10, further comprising setting the value of the maximum number of geometric partitioning merge mode candidates to 2 when the value of the first indicator is equal to the threshold and the value of the second indicator is equal to the preset value.
13. The method according to claim 10, further comprising setting the value of the maximum number of geometric partitioning merge mode candidates to 0 when the value of the first indicator is less than the threshold or the value of the second indicator is not equal to the preset value.
14. The method according to claim 10, wherein the preset value is 1.
15. The method according to claim 10, wherein obtaining the value of the second indicator is performed after obtaining the value of the first indicator.
16. The method according to claim 15, wherein when the value of the first indicator is greater than or equal to the threshold, the value of the second indicator is analyzed from the sequence parameter set (SPS) of the bitstream.
17. The method according to claim 10, wherein the value of the second indicator is obtained from the sequence parameter set (SPS) of the bitstream.
18. The method according to claim 10, wherein the value of the third indicator is obtained from the sequence parameter set (SPS) of the bitstream.
19. It is an encoder, One or more processors, A non-temporary computer-readable storage medium coupled to the processor and storing a program for execution by the processor, wherein the program, when executed by the processor, configures the encoder to carry out the method according to any one of claims 1 to 9.
20. It is a decoder, One or more processors, A non-temporary computer-readable storage medium coupled to the processor and storing a program for execution by the processor, wherein the program, when executed by the processor, configures the decoder to carry out the method according to any one of claims 10 to 18.
21. A method for storing an encoded bitstream, Receiving an encoded bitstream, wherein the bitstream includes a plurality of syntactic elements, A first indicator representing the maximum number of motion vector prediction (MVP) candidates to merge, A second indicator indicating whether geometric partition-based motion compensation is effective for a video sequence, is included, The bitstream further includes a third indicator, which occurs when the value of the first indicator is greater than a threshold and the value of the second indicator is equal to a preset value, wherein the third indicator represents the maximum number of geometric partitioning merge mode candidates subtracted from the value of the first indicator. The syntax for merge data parameters includes checking for a variable that indicates the presence of a non-rectangular merge mode, and includes, A method comprising storing the encoded bitstream in a storage medium.