Systems, methods and computer programs for partition-based prediction
Geometric partitioning modes in video coding improve motion estimation and encoding/decoding accuracy for complex objects by dividing blocks into sections that better represent the video object shape, enhancing video quality and reducing bandwidth requirements.
Patent Information
- Application Number
- JP2024535744
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-03-29
- Filing Date
- 2023-03-30
- Publication Date
- 2025-01-15
- Estimated Expiration
- 2043-03-30
AI Technical Summary
Existing video coding technologies face challenges in optimizing video compression for complex objects, leading to suboptimal motion estimation and encoding/decoding accuracy.
Implement geometric partitioning modes, such as L-shaped and polygonal partitioning, to improve motion estimation by dividing video blocks into sections that better represent the shape of the video object, using blending matrices and adaptive blending schemes to enhance prediction accuracy.
Enhances motion estimation and video encoding/decoding accuracy by better representing complex video objects, reducing memory bandwidth and improving video quality.
Smart Images

Figure 2025500881000001_ABST
Abstract
Description
[Technical field]
[0001] [Related Applications] This application claims priority to U.S. Provisional Patent Application No. 63 / 348,171, entitled "GPM and Wedge-Based Prediction Improvements with Polygonal and L-Shape Partitioning," filed June 2, 2022, and is a continuation of and claims priority to U.S. Provisional Patent Application No. 18 / 128,213, entitled "Systems and Methods for Partition-Based Predictions," filed March 29, 2023, all of which are incorporated by reference in their entireties herein.
[0002] [Technical field] FIELD The disclosed embodiments relate generally to video coding, including, but not limited to, systems and methods for partition-based predictions. [Background technology]
[0003] Digital video is supported by a variety of electronic devices, such as digital televisions, laptop or desktop computers, tablet computers, digital cameras, digital recording devices, digital media players, video game consoles, smart phones, video teleconferencing devices, video streaming devices, etc. The electronic devices transmit, receive, or otherwise communicate digital video data over communication networks and / or store the digital video data in storage devices. Due to the limited bandwidth capacity of communication networks and the limited memory resources of storage devices, video coding may be used to compress the video data according to one or more video coding standards before the video data is communicated or stored.
[0004] Several video codec standards have been developed. For example, video coding standards include AOMedia Video 1 (AV1), Versatile Video Coding (VVC), Joint Exploration test Model (JEM), High-Efficiency Video Coding (HEVC / H.265), Advanced Video Coding (AVC / H.264), and Moving Picture Expert Group (MPEG) coding. Video coding generally uses prediction methods (e.g., inter-prediction, intra-prediction, etc.) that exploit the redundancy inherent in video data. Video coding aims to compress video data into a format that uses a lower bitrate while avoiding or minimizing degradation of video quality.
[0005] HEVC, also known as H.265, is a video compression standard designed as part of the MPEG-H project. ITU-T and ISO / IEC published the HEVC / H.265 standard in 2013 (version 1), 2014 (version 2), 2015 (version 3) and 2016 (version 4). Versatile Video Coding (VVC), also known as H.266, is a video compression standard intended as a successor to HEVC. ITU-T and ISO / IEC published the VVC / H.266 standard in 2020 (version 1) and 2022 (version 2). AV1 is an open video coding format designed as a replacement for HEVC. Validated version 1.0.0 was released on January 8, 2019, including errata 1 to the specification. Summary of the Invention [Problem to be solved by the invention]
[0006] This disclosure describes various techniques that can be used by a decoder of a video bitstream to improve the quality and / or efficiency of decoding, and video encoders can also implement these techniques during encoding (e.g., to reconstruct encoded frames and / or to test hypotheses). [Means for solving the problem]
[0007] During the video coding process, video data is separated into blocks. In this disclosure, the term "block" may be interpreted as a prediction block, a coding block, or a coding unit (CU), as described in more detail later. Geometric partitioning of blocks takes into account the two-dimensional geometry of a video object. After partitioning, different motion predictors can be used for each section of a block. In the case of lossy compression, this partitioning approach improves the quality of more complex objects.
[0008] According to some embodiments, a method of video decoding is provided, the method including: (i) obtaining video data including a plurality of blocks including a first block; (ii) identifying a first partition mode for the first block from a plurality of partition modes, the plurality of partition modes including a first mode set each having a single linear boundary and a second mode set each having multiple linear boundaries; (iii) partitioning the first block into a first section and a second section according to the first partition mode, the first partition mode including multiple linear boundaries; and (iv) reconstructing the first block, the first section including reconstructing the first section using a first predictor and reconstructing the second section using a second predictor.
[0009] According to some embodiments, a computing system, such as a streaming system, a server system, a personal computer system, or other electronic device, is provided. The computing system includes control circuitry and a memory that stores one or more instruction sets. The one or more instruction sets include instructions for performing any of the methods described herein. In some embodiments, the computing system includes an encoder component and / or a decoder component.
[0010] According to some embodiments, a non-transitory computer-readable storage medium is provided that stores one or more sets of instructions for execution by a computing device, the one or more sets of instructions including instructions for performing any of the methods described herein.
[0011] Thus, devices and systems are disclosed along with methods for coding video. Such methods, devices and systems may complement or replace conventional methods, devices and systems for video coding.
[0012] The features and advantages described herein are not necessarily all-inclusive, and some additional features and advantages will become apparent to those skilled in the art, especially in view of the drawings, specification, and claims provided in this disclosure.Furthermore, it should be noted that the language used herein has been selected primarily for ease of reading and educational purposes, and not necessarily to delineate or limit the subject matter described herein. [Brief description of the drawings]
[0013] So that the present disclosure may be more particularly understood, a more particular description may be made by reference to the features of the various embodiments, some of which are illustrated in the accompanying drawings, which merely illustrate the relevant features of the present disclosure, and therefore the description should not be considered necessarily limiting, since those skilled in the art may recognize other useful features as they would understand upon reading the present disclosure.
[0014] [Figure 1] 1 is a block diagram illustrating an exemplary communication system, according to some embodiments.
[0015] [Figure 2A] 2 is a block diagram illustrating exemplary elements of an encoder component according to some embodiments.
[0016] [Figure 2B] 3 is a block diagram illustrating exemplary elements of a decoder component according to some embodiments.
[0017] [Diagram 3] FIG. 1 is a block diagram illustrating an exemplary server system, according to some embodiments.
[0018] [Figure 4A] FIG. 2 illustrates an exemplary coding tree structure, according to some embodiments. [Figure 4B] FIG. 2 illustrates an exemplary coding tree structure, according to some embodiments. [Figure 4C] FIG. 2 illustrates an exemplary coding tree structure, according to some embodiments. [Figure 4D] FIG. 2 illustrates an exemplary coding tree structure, according to some embodiments.
[0019] [Figure 5A] FIG. 1 illustrates an example of geometric partitioning mode prediction, according to some embodiments.
[0020] [Figure 5B] FIG. 1 illustrates an example partitioning mode blending according to some embodiments. [Figure 5C] FIG. 1 illustrates an example partitioning mode blending according to some embodiments.
[0021] [Figure 5D] FIG. 1 illustrates an example wedge-based partitioning according to some embodiments.
[0022] [Figure 5E] FIG. 2 illustrates an exemplary polygon partitioning according to some embodiments. [Figure 5F] FIG. 2 illustrates an exemplary polygon partitioning according to some embodiments. [Figure 5G] FIG. 2 illustrates an exemplary polygon partitioning according to some embodiments. [Figure 5H] FIG. 2 illustrates an exemplary polygon partitioning according to some embodiments.
[0023] [Figure 6] 1 is a flow diagram illustrating an example method for decoding video according to some embodiments.
[0024] According to common practice, the various features illustrated in the drawings are not necessarily drawn to scale and like reference numerals may be used to refer to like features throughout the specification and drawings. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0025] This disclosure describes, among other things, the use of various partitioning techniques to partition video blocks for more optimal motion prediction and higher quality encoding. For example, a rectilinear partitioning mode may not be optimal for more complex video objects. In these cases, an L-shaped or polygonal partitioning mode, which better represents the shape of the video object, may improve the accuracy of motion prediction and therefore the accuracy of video encoding and decoding.
[0026] Exemplary Systems and Devices 1 is a block diagram illustrating a communication system 100 according to some embodiments. Communication system 100 includes a source device 102 and a number of electronic devices 120 (e.g., electronic devices 120-1 through 120-m) that are communicatively coupled to each other via one or more networks. In some embodiments, communication system 100 is a streaming system for use with video-enabled applications, such as, for example, video conferencing applications, digital TV applications, and media storage and / or distribution applications.
[0027] The source device 102 includes a video source 104 (e.g., a camera component or media storage) and an encoder component 106. In some embodiments, the video source 104 is a digital camera (e.g., configured to create an uncompressed video sample stream). The encoder component 106 generates one or more encoded video bitstreams from the video stream. The video stream from the video source 104 may be of a high data volume compared to the encoded video bitstream 108 generated by the encoder component 106. Because the encoded video bitstream 108 is of a low data volume (less data) compared to the video stream from the video source, the encoded video bitstream 108 requires less bandwidth to transmit and less storage space to store compared to the video stream from the video source 104. In some embodiments, the source device 102 does not include the encoder component 106 (e.g., configured to transmit uncompressed video data to the network 110).
[0028] The one or more networks 110 represent any number of networks that convey information between the source device 102, the server system 112, and / or the electronic device 120, including, for example, wireline and / or wireless communication networks. The one or more networks 110 may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet.
[0029] The one or more networks 110 include a server system 112 (e.g., a distributed / cloud computing system). In some embodiments, the server system 112 is or includes a streaming server (e.g., configured to store and / or distribute video content, such as an encoded video stream from the source device 102). The server system 112 includes a coder component 114 (e.g., configured to encode and / or decode video data). In some embodiments, the coder component 114 includes an encoder component and / or a decoder component. In various embodiments, the coder component 114 is instantiated as hardware, software, or a combination thereof. In some embodiments, the coder component 114 is configured to decode the encoded video bitstream 108 and re-encode the video data using a different encoding standard and / or methodology to generate encoded video data 116. In some embodiments, the server system 112 is configured to generate multiple video formats and / or encodings from the encoded video bitstream 108.
[0030] In some embodiments, server system 112 functions as a Media-Aware Network Element (MANE). For example, server system 112 may be configured to prune encoded video bitstream 108 to adapt potentially different bitstreams to one or more of electronic devices 120. In some embodiments, a MANE is provided separate from server system 112.
[0031] Electronic device 120-1 includes a decoder component 122 and a display 124. In some embodiments, decoder component 122 is configured to decode encoded video data 116 to generate an output video stream that can be rendered on a display or other type of rendering device. In some embodiments, one or more of electronic devices 120 does not include a display component (e.g., is communicatively coupled to an external display device and / or includes media storage). In some embodiments, electronic device 120 is a streaming client. In some embodiments, electronic device 120 is configured to access server system 112 to obtain encoded video data 116.
[0032] The source device and / or the electronic devices 120 may also be referred to as “terminal devices” or “user devices.” In some embodiments, the source device 102 and / or one or more of the electronic devices 120 are instances of a server system, a personal computer, a portable device (e.g., a smartphone, tablet, or laptop), a wearable device, a videoconferencing device, and / or other types of electronic devices.
[0033] In an exemplary operation of the communication system 100, the source device 102 transmits an encoded video bitstream 108 to the server system 112. For example, the source device 102 may code a stream of pictures captured by the source device. The server system 112 may receive the encoded video bitstream 108 and decode and / or encode the encoded video bitstream 108 using a coder component 114. For example, the server system 112 may apply a more optimal encoding to the video data for network transmission and / or storage. The server system 112 may transmit the encoded video data 116 (e.g., one or more coded video bitstreams) to one or more of the electronic devices 120. Each electronic device 120 may decode the encoded video data 116 to recover and optionally display the video pictures.
[0034] In some embodiments, the transmission is a one-way data transmission. The one-way data transmission may be utilized in media serving applications, etc. In some embodiments, the transmission is a two-way data transmission. The two-way data transmission may be utilized in video conferencing applications, etc. In some embodiments, the encoded video bitstream 108 and / or the encoded video data 116 are encoded and / or decoded according to any of the video coding / compression standards described herein, such as HEVC, VVC, and / or AV1.
[0035] FIG. 2A is a block diagram illustrating exemplary elements of the encoder component 106 according to some embodiments. The encoder component 106 receives a source video sequence from a video source 104. In some embodiments, the encoder component includes a receiver (e.g., transceiver) component configured to receive the source video sequence. In some embodiments, the encoder component 106 receives a video sequence from a remote video source (e.g., a video source that is a component of a different device than the encoder component 106). The video source 104 may provide the source video sequence in the form of a digital video sample stream that may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 YCrCB or RGB), and any suitable sampling structure (e.g., YCrCb 4:2:0, YCrCb 4:4:4). In some embodiments, the video source 104 is a storage device that stores pre-captured / prepared video. In some embodiments, the video source 104 is a camera that captures local image information as a video sequence. The video data may be provided as a number of individual pictures that convey motion when viewed in sequence. The picture itself may be organized as a spatial array of pixels, where each pixel may contain one or more samples, depending on the sampling structure, color space, etc. in use. Those skilled in the art can readily understand the relationship between pixels and samples. The following discussion focuses on samples.
[0036] The encoder component 106 is configured to code and / or compress pictures of a source video sequence into a coded video sequence 216 in real time or under any other time constraint required by an application. Enforcing an appropriate coding rate is one function of the controller 204. In some embodiments, the controller 204 controls and is operatively coupled to other functional units, as described below. Parameters set by the controller 204 may include rate control related parameters (e.g., picture skip, lambda value of quantizer and / or rate distortion optimization techniques), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Those skilled in the art can readily identify other functions of the controller 204 as they may relate to the encoder component 106 being optimized for a particular system design.
[0037] In some embodiments, the encoder component 106 is configured to operate in a coding loop. In a simplified example, the coding loop includes a source coder 202 (responsible for creating symbols, such as a symbol stream, based on an input picture to be coded and reference pictures, for example) and a (local) decoder 210. The decoder 210 reconstructs the symbols to create sample data in a similar manner to a (remote) decoder (when the compression between the symbols and the coded video bitstream is lossless). The reconstructed sample stream (sample data) may be input to a reference picture memory 208. Since the decoding of the symbol stream results in bit-exact results independent of the decoder location (local or remote), the contents of the reference picture memory 208 are also bit-exact between the local and remote encoders. In this way, the prediction part of the encoder interprets as reference picture samples the same sample values that the decoder predicts when using prediction during decoding. This basic principle of reference picture synchronicity (and the resulting drift when synchronicity cannot be maintained due to, for example, channel errors) is known to those skilled in the art.
[0038] The operation of the decoder 210 may be the same as a remote decoder, such as the decoder component 122, which is described in detail below in conjunction with Figure 2B. However, with brief reference to Figure 2B, because symbols are available and the encoding / decoding of the symbols into a coded video sequence by the entropy coder 214 and the parser 254 may be lossless, the entropy decoding portion of the decoder component 122, including the buffer memory 252 and the parser 254, may not be fully implemented in the local decoder 210.
[0039] An observation that may be made at this point is that any decoder technique, except analysis / entropy decoding, present in the decoder may need to be present in substantially identical functional form in the corresponding encoder. For this reason, the disclosed subject matter focuses on the operation of the decoder. Descriptions of encoder techniques may be omitted, as they may be the opposite of the decoder techniques that are exhaustively described. Only in certain areas are more detailed descriptions required and provided below.
[0040] As part of its operation, the source coder 202 may perform motion-compensated predictive coding, which predictively codes an input frame with respect to one or more previously coded frames from the video sequence designated as reference frames. In this manner, the coding engine 212 codes differences between pixel blocks of the input frame and pixel blocks of reference frames that may be selected as prediction references for the input frame. The controller 204 may manage the coding operations of the source coder 202, including, for example, setting parameters and subgroup parameters used to encode the video data.
[0041] The decoder 210 may decode the coded video data of the frames that may be designated as reference frames based on the symbols created by the source coder 202. The operation of the coding engine 212 may advantageously be a lossy process. When the coded video data is decoded in a video decoder (not shown in FIG. 2A), the reconstructed video sequence may be a replica of the source video sequence with some errors. The decoder 210 may replicate the decoding process that may be performed by a remote video decoder on the reference frames and store the reconstructed reference frames in the reference picture memory 208. In this way, the encoder component 106 locally stores copies of the reconstructed reference frames that have a common content as the reconstructed reference frames obtained by the remote video decoder (without transmission errors).
[0042] The predictor 206 may perform a prediction search for the coding engine 212. That is, for a new frame to be coded, the predictor 206 may search the reference picture memory 208 for sample data (as candidate reference pixel blocks) or specific metadata such as reference picture motion vectors, block shapes, etc., which may serve as suitable prediction references for the new picture. The predictor 206 may operate on a sample block-by-pixel block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor 206, the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory 208.
[0043] All outputs of the aforementioned functional units may be subject to entropy coding in entropy coder 214. Entropy coder 214 converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing them into symbols according to techniques known to those skilled in the art (e.g., Huffman coding, variable length coding and / or arithmetic coding).
[0044] In some embodiments, the output of the entropy coder 214 is coupled to a transmitter. The transmitter may buffer the coded video sequences created by the entropy coder 214 and prepare them for transmission over a communication channel 218, which may be a hardware / software link to a storage device that stores the coded video data. The transmitter may merge the coded video data from the source coder 202 with other data to be transmitted, such as coded audio data and / or ancillary data streams (sources not shown). In some embodiments, the transmitter may transmit additional data along with the coded video. The source coder 202 may include such data as part of the coded video sequence. The additional data may include other forms of redundant data, such as temporal / spatial / SNR enhancement layers, redundant pictures and slices, supplemental enhancement information (SEI) messages, visual usability information (VUI) parameter set fragments, etc.
[0045] The controller 204 may manage the operation of the encoder component 106. During coding, the controller 204 may assign a particular coded picture type to each coded picture, which may affect the coding that may be applied to the respective picture. For example, pictures may often be assigned as intra pictures (I pictures), predicted pictures (P pictures), or bidirectionally predicted pictures (B pictures). Intra pictures may be coded and decoded without using any other frame in the sequence as a source of prediction. Some video codecs allow different types of intra pictures, including, for example, Independent Decoder Refresh (IDR) pictures. Those skilled in the art are aware of these variations of I pictures and their respective uses and characteristics, and therefore will not be repeated here. Predicted pictures may be coded and decoded using intra prediction or inter prediction, using at most one motion vector and reference index to predict the sample values of each block. Bidirectionally predictive pictures can be coded and decoded using intra- or inter-prediction, using up to two motion vectors and reference indices to predict the sample values of each block. Similarly, multiple-predictive pictures can use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0046] A source picture is usually spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8 or 16x16 samples each) and may be coded block by block. Blocks may be predictively coded with respect to other (already coded) blocks as determined by the coding assignment applied to the respective picture of the block. For example, blocks of an I-picture may be non-predictively coded or they may be predictively coded with respect to already coded blocks of the same picture (spatial or intra prediction). Pixel blocks of a P-picture may be non-predictively coded via spatial prediction or via temporal prediction with respect to one previously coded reference picture. Blocks of a B-picture may be non-predictively coded via spatial prediction or via temporal prediction with respect to one or two previously coded reference pictures.
[0047] A video may be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlation in a given picture, while inter-picture prediction exploits correlation (temporal or other) between pictures. In one example, a particular picture being coded / decoded (called the current picture) is partitioned into blocks. When a block in the current picture is similar to a reference block in a previously coded and still buffered reference picture in the video, the block in the current picture may be coded by a vector called a motion vector. A motion vector points to a reference block in a reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.
[0048] Encoder component 106 may perform coding operations according to a given video coding technique or standard, such as any of those described herein. In doing so, encoder component 106 may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard being used.
[0049] 2B is a block diagram illustrating example elements of a decoder component 122 according to some embodiments. The decoder component 122 of FIG. 2B is coupled to the channel 218 and the display 124. In some embodiments, the decoder component 122 includes a transmitter coupled to a loop filter unit 256 and configured to transmit data to the display 124 (e.g., via a wired or wireless connection).
[0050] In some embodiments, the decoder component 122 includes a receiver coupled to the channel 218 and configured to receive data from the channel 218 (e.g., via a wired or wireless connection). The receiver may be configured to receive one or more coded video sequences that are decoded by the decoder component 122. In some embodiments, the decoding of each coded video sequence is independent of the other coded video sequences. Each coded video sequence may be received from the channel 218, which is a hardware / software link to a storage device that stores the coded video data. The receiver may receive the coded video data along with other data, such as coded audio data and / or auxiliary data streams, which may be forwarded to each other using an entity (not shown). The receiver may separate the coded video sequence from the other data. In some embodiments, the receiver receives additional (redundant) data along with the coded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the decoder component 122 to decode the data and / or more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial or SNR enhancement layers, redundant slices, redundant pictures, forward error correction codes, and so on.
[0051] In some embodiments, the decoder component 122 includes a buffer memory 252, a parser 254 (sometimes referred to as an entropy decoder), a scaler / inverse transform unit 258, an intra-picture prediction unit 262, a motion compensated prediction unit 260, an aggregator 268, a loop filter unit 256, a reference picture memory 266, and a current picture memory 264. In some embodiments, the decoder component 122 is implemented as an integrated circuit, a series of integrated circuits, and / or other electronic circuitry. In some embodiments, the decoder component 122 is implemented at least partially in software.
[0052] The buffer memory 252 is coupled between the channel 218 and the parser 254 (e.g., to combat network jitter). In some embodiments, the buffer memory 252 is separate from the decoder component 122. In some embodiments, a separate buffer memory is provided between the output of the channel 218 and the decoder component 122. In some embodiments, in addition to the buffer memory 252 internal to the decoder component 122 (e.g., configured to address playback timing), a separate buffer memory is provided external to the decoder component 122 (e.g., to combat network jitter). When receiving data from a storage / forwarding device with sufficient bandwidth and controllability or from an isosynchronous network, the buffer memory 252 may not be needed or may be small. For use on a best-effort packet network such as the Internet, the buffer memory 252 may be needed and may be relatively large, advantageously of adaptive size, and may be implemented at least in part within an operating system or similar element (not shown) external to the decoder component 122.
[0053] Parser 254 is configured to reconstruct symbols 270 from the coded video sequence. The symbols may include, for example, information used to manage the operation of decoder component 122 and / or information to control a rendering device such as display 124. The rendering device control information may be in the form of, for example, a Supplemental Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). Parser 254 parses (entropy decodes) the coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow principles well known to those skilled in the art, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. Parser 254 may extract from the coded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. Subgroups may include Groups of Pictures (GOPs), pictures, tiles, slices, macroblocks, Coding Units (CUs), blocks, Transform Units (TUs), Prediction Units (PUs), etc. Parser 254 may also extract from the coded video sequence information such as transform coefficients, quantization parameter values, motion vectors, etc.
[0054] The reconstruction of symbols 270 may involve several different units, depending on the type of coded video picture or portion thereof (e.g., inter and intra picture, inter and intra block) and other factors. Which units are involved and how they are involved may be controlled by subgroup control information parsed by parser 254 from the coded video sequence. The flow of such subgroup control information between parser 254 and the following units is not shown for clarity.
[0055] In addition to the functional blocks already mentioned, the decoder component 122 can be conceptually subdivided into a number of functional units, as described below. In a practical implementation operating under commercial constraints, many of these units will interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the conceptual subdivision into functional units is maintained below.
[0056] The scalar / inverse transform unit 258 receives the quantized transform coefficients as well as control information (such as which transform to use, block size, quantization coefficients and / or quantization scaling matrices) as symbols 270 from the parser 254. The scalar / inverse transform unit 258 may output blocks containing sample values that may be input to an aggregator 268.
[0057] In some cases, the output samples of the scaler / inverse transform unit 258 relate to intra-coded blocks; i.e., blocks that do not use prediction information from a previously reconstructed picture, but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by the intra-picture prediction unit 262. The intra-picture prediction unit 262 may generate blocks of the same size and shape as the blocks during reconstruction using surrounding already reconstructed information fetched from the current (partially reconstructed) picture from the current picture memory 264. The aggregator 268 may add, on a sample-by-sample basis, the prediction information generated by the intra-picture prediction unit 262 to the output sample information provided by the scaler / inverse transform unit 258.
[0058] In other cases, the output samples of the scalar / inverse transform unit 258 relate to an inter-coded and potentially motion-compensated block. In such cases, the motion compensated prediction unit 260 may access the reference picture memory 266 to fetch samples used for prediction. After motion compensating the fetched samples according to the symbols 270 related to the block, these samples may be added by the aggregator 268 to the output of the scalar / inverse transform unit 258 (in this case referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory 266 from which the motion compensated prediction unit 260 fetches the prediction samples may be controlled by a motion vector. The motion vector may be available to the motion compensated prediction unit 260 in the form of a symbol 270, which may have, for example, X, Y and reference picture components. Motion compensation may also include interpolation of sample values fetched from the reference picture memory 266 when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, etc.
[0059] The output samples of aggregator 268 may be subject to various loop filtering techniques in loop filter unit 256. The video compression techniques may include in-loop filter techniques controlled by parameters contained in the coded video stream and made available to loop filter unit 256 as symbols 270 from parser 254, but may also be responsive to meta-information obtained during decoding of previous portions (in decoding order) of the coded picture or coded video sequence, as well as to previously reconstructed loop filtered sample values.
[0060] The output of the loop filter unit 256 may be a sample stream that can be output to a rendering device such as the display 124 and can be stored in a reference picture memory 266 for use in future inter-picture prediction.
[0061] Once a particular coded picture is fully reconstructed, it can be used as a reference picture for future prediction. Once the current coded picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by parser 254), the current reference picture can become part of reference picture memory 266, and the fresh current picture memory can be reallocated before starting the reconstruction of a subsequent coded picture.
[0062] The decoder component 122 may perform decoding operations according to a given video compression technique, which may be documented in a standard, such as any of the standards described herein. The coded video sequence may conform to the syntax specified by the video compression technique or standard being used, in the sense of adhering to the syntax of the video compression technique or standard, as specified in the video compression technique documents and standards, and in particular in the profile documents therein. Also, for compliance with some video compression techniques and standards, the complexity of the coded video sequence may be within a range defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, the maximum frame rate, the maximum reconstruction sample rate (e.g., measured in megasamples per second), the maximum reference pixel size, etc. The limits set by the level may be further limited, in some cases, through a Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management signaled with the coded video sequence.
[0063] 3 is a block diagram illustrating a server system 112 according to some embodiments. The server system 112 includes a control circuit 302, one or more network interfaces 304, a memory 314, a user interface 306, and one or more communication buses 312 for interconnecting these components. In some embodiments, the control circuit 302 includes one or more processors (e.g., a CPU, a GPU, and / or a DPU). In some embodiments, the control circuit includes one or more field programmable gate arrays (FPGAs), hardware accelerators, and / or one or more integrated circuits (e.g., application specific integrated circuits).
[0064] The network interface 304 may be configured to interface with one or more communication networks (e.g., wireless, wired and / or optical networks). The communication networks may be local, wide area, metropolitan, vehicular and industrial, real-time, delay tolerant, etc. Examples of communication networks include local area networks such as Ethernet, WLAN, etc., cellular networks including GSM, 3G, 4G, 5G, LTE, etc., TV wireline or wireless wide area digital networks including cable TV, satellite TV and terrestrial broadcast TV, vehicular and industrial networks including CANBus, etc. Such communications may be one-way receive-only (e.g., broadcast TV), one-way transmit-only (e.g., from a CANbus to a particular CANbus device), or bidirectional (e.g., to another computer system using a local or wide area digital network). Such communications may include communications to one or more cloud computing networks.
[0065] The user interface 306 includes one or more output devices 308 and / or one or more input devices 310. The input devices 310 may include one or more of a keyboard, a mouse, a trackpad, a touch screen, a data glove, a joystick, a microphone, a scanner, a camera, etc. The output devices 308 may include one or more of an audio output device (e.g., a speaker), a visual output device (e.g., a display or monitor), etc.
[0066] Memory 314 may include high-speed random access memory (such as DRAM, SRAM, DDR RAM, and / or other random access solid-state memory devices) and / or non-volatile memory (such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, and / or other non-volatile solid-state storage devices). Memory 314 optionally includes one or more storage devices located remotely from control circuitry 302. Memory 314, or alternatively a non-volatile solid-state memory device within memory 314, includes a non-transitory computer-readable storage medium. In some embodiments, memory 314, or the non-transitory computer-readable storage medium of memory 314, stores the following programs, modules, instructions, and data structures, or a subset or superset thereof: • an operating system 316 that contains procedures for handling various basic system services and performing hardware-dependent tasks; • A network communications module 318 used to connect the server system 112 to other computing devices via one or more network interfaces 304 (e.g., via wired and / or wireless connections); A coding module 320 for performing various functions related to encoding and / or decoding of data, such as video data. In some embodiments, the coding module 320 is an instance of the coder component 114. The coding module 320 may include, but is not limited to, one or more of the following: A decoding module 322 that performs various functions related to decoding of encoded data, such as the functions described above with respect to the decoder component 122; and o An encoding module 340 for performing various functions related to encoding data, such as the functions described above with respect to the encoder component 106; ● A picture memory 352 that stores pictures and picture data, e.g., for use with coding module 320. In some embodiments, the picture memory 352 includes one or more of the reference picture memory 208, the buffer memory 252, the current picture memory 264, and the reference picture memory 266.
[0067] In some embodiments, the decoding module 322 includes a parsing module 324 (e.g., configured to perform various functions described above with respect to the parser 254), a transform module 326 (e.g., configured to perform various functions described above with respect to the scalar / inverse transform unit 258), a prediction module 328 (e.g., configured to perform various functions described above with respect to the motion compensated prediction unit 260 and / or the intra-picture prediction unit 262), and a filter module 330 (e.g., configured to perform various functions described above with respect to the loop filter unit 256).
[0068] In some embodiments, the encoding module 340 includes a code module 342 (e.g., configured to perform various functions described above with respect to the source coder 202, the coding engine 212, and / or the entropy coder 214) and a prediction module 344 (e.g., configured to perform various functions described above with respect to the predictor 206). In some embodiments, the decoding module 322 and / or the encoding module 340 include a subset of the modules shown in FIG. 3. For example, a shared prediction module is used by both the decoding module 322 and the encoding module 340.
[0069] Each of the above-identified modules stored in memory 314 corresponds to a set of instructions for performing functions described herein. The above-identified modules (e.g., sets of instructions) need not be implemented as separate software programs, procedures, or modules, and thus various subsets of these modules may be combined or otherwise rearranged in various embodiments. For example, coding module 320 optionally does not include separate decoding and encoding modules, but rather uses the same set of modules to perform both sets of functions. In some embodiments, memory 314 stores a subset of the above-identified modules and data structures. In some embodiments, memory 314 stores additional modules and data structures not described above, such as an audio processing module.
[0070] In some embodiments, the server system 112 includes a web or HyperText Transfer Protocol (HTTP) server, a File Transfer Protocol (FTP) server, as well as web pages and applications implemented using Common Gateway Interface (CGI) script, PHP Hypertext Preprocessor (PHP), Active Server Pages (ASP), HyperText Markup Language (HTML), Extensible Markup Language (XML), Java, Java Script, Asynchronous Java Script and XML (AJAX), XHP, Javelin, Wireless Universal Resource Files (WURFL), and the like.
[0071] FIG. 3 illustrates a server system 112 according to some embodiments, however FIG. 3 is not intended as a structural schematic diagram of the embodiments described herein, but rather as a functional description of various features that may be present in one or more server systems. In practice, those skilled in the art will recognize that items shown separately can be combined and some items can be separated. For example, some items shown separately in FIG. 3 can be implemented on a single server, and single items can be implemented by one or more servers. The actual number of servers used to implement the server system 112, and how functionality is allocated among them, may vary from one implementation to another, and may optionally depend in part on the amount of data traffic the server system processes during peak and average usage periods.
[0072] Example Coding Approach 4A-4D show exemplary coding tree structures according to some embodiments. As shown in the first coding tree structure (400) of FIG. 4A, some coding approaches (e.g., VP9) use a 4-way partition tree from a 64×64 level to a 4×4 level, with some additional restrictions for blocks 8×8. In FIG. 4A, the partitions shown as R can be called recursive in that the same partition tree is repeated at lower scales until the lowest 4×4 level is reached.
[0073] As shown in the second coding tree structure (402) of FIG. 4B, some coding approaches (e.g., AV1) expand the partition tree to a 10-way structure and increase the maximum size (e.g., called superblock in VP9 / AV1 terminology) to start from 128×128. The second coding tree structure includes a 4:1 / 1:4 rectangular partition that is not in the first coding tree structure. The partition type with three subpartitions in the second row of FIG. 4B is called a T-shaped partition. The rectangular partitions in this tree structure cannot be further subdivided. In addition to the coding block size, a coding tree depth can be defined to indicate the split depth from the root node. For example, the coding tree depth of the root node, e.g., 128×128, is set to 0, and after splitting the tree block one more time, the coding tree depth increases by 1.
[0074] As an example, instead of enforcing a fixed transform unit size as in VP9, AV1 allows partitioning of luma coding blocks into transform units of multiple sizes that can be represented by recursive partitions down to a maximum of two levels. To incorporate AV1's extended coding block partitions, transform sizes from 4x4 to 64x64 square, 2:1 / 1:2 and 4:1 / 1:4 are supported. For chroma blocks, only the largest possible transform units are allowed.
[0075] As an example, a CTU may be split into CUs by using a quad-tree structure, denoted as a coding tree, in HEVC, etc., to accommodate different local characteristics. In some embodiments, the decision of whether to code a picture area using inter-picture (temporal) or intra-picture (spatial) prediction is made at the CU level. Each CU may be further split into one, two or four PUs depending on the PU split type. Within one PU, the same prediction process is applied, and related information is sent to the decoder on a PU basis. After obtaining the residual block by applying the prediction process based on the PU split type, the CU may be partitioned into TUs according to another quad-tree structure, such as the coding tree of the CU. One of the important features of the HEVC structure is to have multiple partition concepts, including CUs, PUs and TUs. In HEVC, a CU or TU can only be square, while a PU can be square or rectangular for an inter-predicted block. In HEVC, one coding block is further split into four square sub-blocks, and a transform is performed for each sub-block (TU). Each TU can be further split recursively (using quad-tree splitting) into smaller TUs, which are called Residual Quad-Tree (RQT). At picture boundaries such as HEVC, implicit quad-tree splitting may be used such that a block remains quad-tree split until its size fits the picture boundary.
[0076] A quad tree with nested multi-type trees using binary and ternary split segmentation structures in VVC and the like can replace the concept of multiple partition unit types, removing the separation of the concepts of CU, PU and TU, except as required for CUs with sizes too large for the maximum transform length, and supporting more flexibility for CU partition shapes. In the coding tree structure, CUs can have either square or rectangular shapes. ACTUs are first partitioned by a quad tree (also called a quad tree) structure. The quad tree leaf nodes can be further partitioned by a multi-type tree structure. As shown in the third coding tree structure (404) of FIG. 4C, the multi-type tree structure includes four split types. For example, the multi-type tree structure includes a vertical binary split (SPLIT_BT_VER), a horizontal binary split (SPLIT_BT_HOR), a vertical ternary split (SPLIT_TT_VER), and a horizontal ternary split (SPLIT_TT_HOR). The leaf nodes of the multi-type tree are called CUs, and this segmentation is used for prediction and transformation processing without further partitioning, as long as the CU is not too large for the maximum transform length. This means that in most cases, the CU, PU, and TU have the same block size in a quad-tree with nested multi-type tree coding block structure. An exception occurs when the maximum supported transform length is smaller than the width or height of the color components of the CU. An example of block partitions of one CTU (406) is shown in FIG. 4D, which illustrates an exemplary quad-tree with nested multi-type tree coding block structure.
[0077] In VVC, etc., the maximum supported luma transform size may be 64 x 64, and the maximum supported chroma transform size may be 32 x 32. When the width or height of the CB is larger than the maximum transform width or height, the CB is automatically split horizontally and / or vertically to meet the transform size limitation in that direction.
[0078] The coding tree scheme supports the ability for luma and chroma to have separate block tree structures, such as in VTM7. In some cases, for P and B slices, the luma and chroma CTBs in one CTU share the same coding tree structure. However, for I slices, luma and chroma can have separate block tree structures. When a separate block tree mode is applied, the luma CTB is partitioned into CUs by one coding tree structure, and the chroma CTB is partitioned into chroma CUs by another coding tree structure. This means that a CU in an I slice may contain or consist of a coding block of the luma component or a coding block of two chroma components, and a CU in a P or B slice may always contain or consist of coding blocks of all three color components, unless the video is monochrome.
[0079] To support extended coding block partitions, multiple transform sizes (e.g., ranging from 4 points to 64 points in each dimension) and transform shapes (e.g., square or rectangular with width / height ratios of 2:1 / 1:2 and 4:1 / 1:4) may be used in AV1, etc.
[0080] Motion estimation involves determining motion vectors that describe the transformation from one image (picture) to another. Reference images (or blocks) can be from adjacent frames in a video sequence. Motion vectors can relate to the whole image (global motion estimation) or to specific blocks. In addition, motion vectors can correspond to translational or warping models that approximate the motion (e.g., rotation and translation in three dimensions and zoom). The estimated motion can be improved in some situations (e.g., more complex video objects) by further partitioning the blocks.
[0081] Geometric partitioning mode (GPM) may focus on inter-picture predicted CUs. When GPM is applied to a CU, the CU is split into two parts via a straight partitioning boundary. The location of the partitioning boundary may be mathematically defined by an angle parameter φ and an offset parameter ρ. These parameters may be quantized and combined into a GPM partitioning index lookup table. The GPM partitioning index of the current CU may be coded into the bitstream. For example, for a CU with size w×h=2k×2l (in terms of luma samples), where l∈{3...6}, 64 partitioning modes are supported by GPM in VVC. GPM may be disabled for CUs with aspect ratios larger than 4:1 or smaller than 1:4, for example, because narrow CUs rarely contain geometrically separated patterns.
[0082] After partitioning, the two GPM sections (partitions) contain individual motion information that can be used to predict the corresponding section in the current CU. In some embodiments, for each section of the GPM, only unidirectional motion compensation prediction (MCP) is possible, so that the memory bandwidth required for the MCP in the GPM is equal to that of a normal bidirectional MCP. To simplify the motion information coding and reduce the possible combinations of the GPM, the motion information can be coded in merge mode. The GPM merge candidate list can be derived from a conventional merge candidate list, ensuring that only unidirectional motion information is included.
[0083] 5A illustrates a prediction process of a GPM according to some embodiments. A current block 510 is partitioned into a right section and a left section via a partition 516. The right predicted portion of a current block 510 (e.g., a CU) of a current picture 502 (e.g., having a size of w×h) is predicted by MV0 from a reference block 512 of a reference picture 504, while the left portion is predicted by MV1 from a reference block 514 of a reference picture 506.
[0084] 5B illustrates an example blending matrix for a partition (e.g., partition 516) according to some embodiments. In this example, the final GPM prediction (PG) is generated by performing a blending process using integer blending matrices W0 and W1 with weights ranging in value from 0 to 8, for example. This can be expressed as:
number
[0085] The generated GPM prediction (PG) can then be subtracted from the original signal to generate a residual. The residual is converted, quantized and coded into a bitstream, for example using a conventional VVC transform, quantization and entropy coding engine. At the decoder side, the signal is reconstructed by adding the residual to the GPM predicted PG. A skip mode may also be supported by GPM, for example when the residual is negligible. For example, the residual is dropped by the encoder and the GPM predicted PG is used directly by the decoder as the reconstructed signal.
[0086] GPM can be further enhanced by, for example, GPM+TM, GPM+MMVD and Inter+Intra GPM. As shown in FIG. 5C, the blending strength or blending area width θ may be fixed for all different contents. In some embodiments, the weighting values in the blending mask are given by a ramp function:
number
number
[0087] Such a design is not always optimal, because a fixed blending area width may not always provide the best blending quality for various types of video content. For example, video content usually contains strong textures and sharp edges, which require a narrow blending area to preserve edge information. For camera-captured content, blending is generally required, but the blending area width may depend on several factors, such as the actual boundaries of moving objects and the motion distinctiveness of the two partitions.
[0088] To address this issue, an adaptive blending scheme can be used for the GPM, which dynamically adjusts the width of the blending area surrounding the GPM partition boundary. For example, the blending area width (θ) can be selected from a set of predefined values {0, 1, 2, 4, 8}. The optimal blending area width can be determined for each GPM CU at the encoder and signaled to the decoder based on the syntax element merge_gpm_blending_width_idx. For example, all predefined blending strength values can be shiftable, but all clipping and shifting operations in the GPM blending process can be kept without any changes.
[0089] Additionally, to accommodate the increased width of the GPM blending area, the weight range can be increased from [0,8] to [0,32]. Specifically, the weights can be calculated as follows:
number
[0090] Wedge-based prediction is a hybrid prediction mode (e.g., AV1), which is similar to GPM. Wedge-based prediction can be used for both inter-inter and inter-intra combinations. Boundaries of moving objects are often difficult to approximate by on-grid block partitions. The solution is to predefine a codebook of 16 possible wedge partitions and signal a wedge index in the bitstream when a coding unit is selected to be further partitioned in such a manner. A 16-ary shape codebook, including partition orientations that are either horizontal, vertical, or diagonal (e.g., with gradients of ±2 or ±0.5), is designed for both square blocks 540 and rectangular blocks 542, as shown in FIG. 5D. To mitigate spurious high frequency components often produced by directly juxtaposing two predictors, a 2-D wedge mask with soft-cliff shapes can be used to smooth the edges around the intended partitions (e.g., m(i,j) is close to 0.5 around the edges and gradually converted to binary weights at either end).
[0091] 6 is a flow diagram illustrating a method 600 for coding video according to some embodiments. Method 600 may be performed in a computing system (e.g., server system 112, source device 102, or electronic device 120) having control circuitry and memory storing instructions for execution by the control circuitry. In some embodiments, method 600 is performed by executing instructions stored in a memory (e.g., memory 314) of the computing system.
[0092] The system obtains (602) video data including a plurality of blocks including a first block. The system identifies (604) a first partition mode from a plurality of partition modes for the first block, where the plurality of partition modes include a first mode set, each having a boundary with a single straight line, and a second mode set, each having a boundary with multiple straight lines. The system partitions (606) the first block into a first section and a second section according to the first partition mode, where the first partition mode is from the second mode set and includes multiple straight lines boundaries. The system reconstructs (608) the first block, which includes reconstructing the first section using a first predictor and reconstructing the second section using a second predictor. In some embodiments, the system performs (610) a blending operation at the multiple straight lines boundaries.
[0093] In some embodiments, polygonal or L-shaped partitioning modes (e.g., second mode set) are constructed using existing linear-based partitioning modes (e.g., first mode set). For example, predefined linear partitioning boundaries, blending processes, and prediction processes are still valid. In some embodiments, two or more linear-based partitioning modes are combined to generate new polygonal or L-shaped partitioning modes, for example, reusing existing blending masks and corresponding motion vectors. The newly generated modes can be used as additional modes explicitly signaled by indexes, or generated on the fly at the decoder side without additional signaled syntax elements (e.g., implicitly derived).
[0094] In some embodiments, multiple (e.g., two or more) conjugate (or non-conjugate) line-based GPM and / or wedge-based prediction partition modes (e.g., the sum of their angles is equal to 180 degrees) are combined to generate polygonal or L-shaped partitions, or one or more geometric partitioning modes. Note that if one mode is 0 degrees and the other mode is 90 degrees, the L-shaped mode is generated, otherwise the polygonal mode is generated. Figures 5E-5G show three examples of combined partition modes according to some embodiments. However, the combinations are not limited to these examples.
[0095] In one example, as shown in FIG. 5E, two conjugate straight-line based modes are combined horizontally to generate a generating mode 556. In FIG. 5E, the upper part (shaded area 552) of the generating mode 556 is from the existing straight-line based mode 1, while the lower part (shaded area 554) of the generating mode 556 is from the existing straight-line based mode 2. In some embodiments, blending masks and soft blending areas are also generated accordingly. For example, for a particular mask, one part can be full blending (e.g., weighting 8 or 64), while the other part is zero blending (e.g., weighting 0), and the soft blending area surrounding the partitioning boundary can be weighted from 0 to full blending (e.g., 0 to 8 or 0 to 64). In this example, the other mask is blended in the opposite manner.
[0096] In another example, as shown in FIG. 5F, two conjugate straight-line based modes are vertically combined to generate a generating mode 564. In FIG. 5F, the left part (shaded area 560) of the generating mode 564 is from the existing straight-line based mode 1, while the right part (shaded area 562) is from the existing straight-line based mode 2. In some embodiments, the blending masks and soft blending areas are also generated accordingly. For example, for one mask, one part is full blending (e.g., weighting 8 or 64), the other part is zero blending (e.g., weighting 0), and the soft blending area surrounding the partitioning boundary is weighted from 0 to full blending (e.g., 0 to 8 or 0 to 64). In this example, the other mask is blended in the opposite way.
[0097] In another example, one (e.g., symmetric or asymmetric) partitioning mode is combined with another partitioning mode to generate an L-shaped partitioning mode, as shown in FIG. 5G. For example, vertical partitioning mode 1 (e.g., partition 568) is combined with horizontal partitioning mode 2 (e.g., partition 570). The blending and prediction processes can be the same as those described in the previous example.
[0098] In some embodiments, each of the aforementioned generation modes (e.g., shown in Figures 5E-5G) is shifted horizontally, vertically, or both according to a shift value, which can be predefined, adaptively selected and signaled, or derived from the decoder side based on known information (e.g., reconstructed predictor content and / or GPM / wedge-based prediction modes of neighboring blocks).
[0099] In some embodiments, according to adjacent blocks (e.g., blocks 578 and 580) being coded by a line-based predictive partitioning mode (e.g., GPM and / or wedge-based), their partition lines (e.g., partition lines 582 and 584 in FIG. 5H) are extended to the current coding block 576 (as shown by dashed lines at 586 and 588 in FIG. 5H) to form a new polygon partition mode.
[0100] In some embodiments, the generated mode is used as an extension of the current mode and is explicitly signaled. For example, additional 16 modes can be generated using some selected angles / offsets, which are signaled together with the GPM mode index or wedge index, or conditionally using additional syntax elements such as generated_mode_index. In some embodiments, the generated mode is derived at the decoder side based on known information such as partitioning mode information and reconstructed samples.
[0101] For example, if the current partitioning mode has already been analyzed and reconstructed, a template matching approach (e.g., using samples from the top and left surroundings of the current block) is used to calculate the cost between the analysis mode and the generation mode. In this example, the mode with the lower cost is used to generate the final predictor.
[0102] In another example, the derivation may depend on the gradients of the two predictors used to generate the GPM / wedge-based predictor.
[0103] 6 depicts some logical steps in a particular order, steps that are not order dependent may be rearranged and other steps may be combined or broken down. Some rearrangements or other groupings not specifically mentioned will be apparent to those of skill in the art, and thus the order and groupings presented herein are not intended to be exhaustive. Additionally, it should be recognized that the various steps may be implemented in hardware, firmware, software, or any combination thereof.
[0104] Turning now to some exemplary embodiments.
[0105] (A1) In one aspect, some embodiments include a method of video decoding (e.g., method 600). In some embodiments, the method is performed in a computing system (e.g., server system 112) having a memory and one or more processors. In some embodiments, the method is performed in a coding module (e.g., coding module 320). In some embodiments, the method is performed in an entropy coder (e.g., entropy coder 214). In some embodiments, the method is performed in a parser (e.g., parser 254). The method includes (i) obtaining video data including a plurality of blocks including a first block (e.g., a current block 510); (ii) identifying a first partition mode for the first block from a plurality of partition modes, the plurality of partition modes including a first mode set (e.g., the modes shown in FIG. 5D) each having a single linear boundary and a second mode set (e.g., the modes generated in FIG. 5E-5G) each having multiple linear boundaries; (iii) partitioning the first block into a first section and a second section according to the first partition mode, the first partition mode being from the second mode set and including multiple linear boundaries; and (iv) reconstructing the first block, the first section using a first predictor and the second section using a second predictor. In some embodiments, the first mode set includes one or more wedge partitions (e.g., as shown in FIG. 5D).
[0106] (A2) In some embodiments of A1, the second mode set includes modes generated by combining two or more of the modes of the first mode set (e.g., combining modes vertically or horizontally as shown in Figures 5E-5F). For example, a mode in the second mode set includes an L-shaped partitioning boundary or other polygonal boundary.
[0107] (A3) In some embodiments of A1 or A2, the method further includes performing a blending operation at the multiple linear boundaries (e.g., as described above in connection with FIGS. 5B-5C). In some embodiments, the blending operation includes applying a blending mask. In some embodiments, the blending operation includes applying a ramp function (e.g., any of the ramp functions of Equations 2-4). In some embodiments, a first blending is applied to a first section and a second blending is applied to a second section.
[0108] (A4) In some embodiments of A3, the blending operation includes applying a first blending to a first section and applying a second blending to a second section, e.g., each section having a different blending mask, blending strength and / or blending area.
[0109] (A5) In some embodiments of any of A1-A4, the second mode set includes a mode generated by horizontally combining two conjugate linear based modes (e.g., as illustrated in FIG. 5E), e.g., horizontally combining two modes of the first mode set.
[0110] (A6) In some embodiments of any of A1-A5, the second mode set includes a second mode generated by vertically combining two conjugate linear based modes (e.g., as illustrated in FIG. 5F), e.g., vertically coupling two modes of the first mode set.
[0111] (A7) In some embodiments of any of A1-A6, the second mode set includes a second mode generated by combining a vertical line mode and a horizontal line mode (e.g., resulting in an L-shaped partition mode as shown in FIG. 5G).
[0112] (A8) In some embodiments of any of A1-A7, partitioning the first block into the first and second sections according to the first partition mode includes (i) applying multiple linear boundaries to the first block, (ii) shifting the multiple linear boundaries, and (iii) identifying the first and second sections according to the shifted multiple linear boundaries. For example, the boundaries are shifted horizontally or vertically. In some embodiments, the boundaries are shifted by a shift value. For example, the shift value is predefined, adaptively selected and signaled, or derived by the decoder (e.g., based on content of one or more reconstructed predictors).
[0113] (A9) In some embodiments of any of A1-A8, the method further includes (i) identifying a second partition mode for a second block of the plurality of blocks, the second partition mode being determined based on partition lines of two or more adjacent blocks, and (ii) partitioning the second block according to the second partition mode, e.g., the partition lines of the two adjacent blocks are extended to a junction in the second block to create a multi-linear partition of the second block (e.g., as illustrated in FIG. 5H ).
[0114] (A10) In some embodiments of any of A1-A9, the multiple partition modes are explicitly signaled by the encoder. In some embodiments, the second mode set is conditionally signaled (e.g., using an additional syntax element).
[0115] (A11) In some embodiments of any of A1-A10, the second mode set is derived by a decoder component. For example, the second mode set is derived using a template matching operation. As another example, the second mode set is derived based on neighboring blocks above and to the left of the first block.
[0116] (A12) In some embodiments of A11, the second mode set is derived based on gradients of two or more predictors.
[0117] (A13) In some embodiments of any of A1 to A12, (i) for a block of the plurality of blocks, an analyzed mode is obtained from an encoder component and a derived mode is generated at a decoder component, and (ii) the method further includes: (a) determining a cost of each of the analyzed mode and the derived mode; (b) partitioning the block using the analyzed mode in accordance with a determination that the analyzed mode has a lower cost; and (c) partitioning the block using the derived mode in accordance with a determination that the derived mode has a lower cost.
[0118] The methods described herein may be used separately or combined in any order. Each of the methods may be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In some embodiments, the processing circuit executes a program stored on a non-transitory computer-readable medium.
[0119] In another aspect, some embodiments include a computing system (e.g., server system 112) including a control circuit (e.g., control circuit 302) and a memory (e.g., memory 314) coupled to the control circuit, the memory storing one or more instruction sets configured to be executed by the control circuit, the one or more instruction sets including instructions for executing any of the methods described herein (e.g., A1-A13 above).
[0120] In yet another aspect, some embodiments include a non-transitory computer-readable storage medium storing one or more instruction sets for execution by control circuitry of a computing device, the one or more instruction sets including instructions for performing any of the methods described herein (e.g., A1-A13 above).
[0121] It will be understood that although terms such as "first," "second," and the like may be used herein to describe various elements, these elements are not to be limited by these terms, but rather are used only to distinguish one element from another.
[0122] The terms used herein are for the purpose of describing particular embodiments only and are not intended to limit the scope of the claims. When used in the description of the embodiments and the appended claims, the singular forms "a", "an" and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. Also, as used herein, the term "and / or" will be understood to refer to and encompass any and all possible combinations of one or more of the associated listed items. It will be further understood that as used herein, the terms "comprises" and / or "comprising" specify the presence of stated features, integers, steps, operations, elements and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components and / or groups thereof.
[0123] As used herein, the term "if" can be interpreted to mean "when" or "if" or "in response to determining that" or "in accordance with a determination that" or "in response to detecting that" the previously-stated condition is true, depending on the context. Similarly, the phrase "if [the previously-stated condition is true]" or "when [the previously-stated condition is true]" can be interpreted to mean "upon determining that" or "in response to determining that" or "in accordance with a determination that" or "upon detecting that" or "in response to detecting that" the previously-stated condition is true, depending on the context.
[0124] The foregoing description has been described with reference to specific embodiments for purposes of explanation. However, the exemplary discussion above is not intended to be exhaustive or to limit the scope of the claims to the precise forms disclosed. Many modifications and variations are possible in light of the above teachings. The embodiments have been chosen and described in order to best explain the principles of operation and practical applications so as to enable others skilled in the art to understand them.
Claims
1. 1. A method of video decoding executed by one or more processors, the method comprising: obtaining video data including a plurality of blocks including a first block; identifying a first partition mode from a plurality of partition modes for the first block, the plurality of partition modes including a first set of partition modes each having a single linear boundary and a second set of partition modes each having multiple linear boundaries; partitioning the first block into a first section and a second section according to a first partition mode, the first partition mode being from the second set of partition modes and including multiple straight line boundaries; reconstructing the first block, the reconstructing step including reconstructing the first section using a first predictor and reconstructing the second section using a second predictor; A method comprising:
2. the second set of partition modes includes partition modes generated by combining two or more of the partition modes of the first set of partition modes. The method of claim 1.
3. performing a blending operation at the multiple linear boundaries; The method of claim 1.
4. the blending operation includes applying a first blending to the first section and applying a second blending to the second section. The method according to claim 3.
5. the second set of partition modes includes partition modes generated by horizontally combining two conjugate line-based partition modes; The method of claim 1.
6. the second set of partition modes includes a partition mode generated by vertically combining two conjugate line-based partition modes; The method of claim 1.
7. the second set of partition modes includes a second partition mode generated by combining a vertical line partition mode and a horizontal line partition mode; The method of claim 1.
8. Partitioning the first block into a first section and a second section according to a first partition mode includes: applying the multiple straight line boundaries to the first block; shifting the multiple straight line boundaries; identifying the first section and the second section according to the shifted multiple straight line boundaries; The method of claim 1.
9. identifying a second partition mode for a second block of the plurality of blocks, the second partition mode being determined based on partition lines of two or more adjacent blocks; partitioning the second block according to the second partition mode; The method of claim 1 further comprising:
10. the multiple partition modes are explicitly signaled by an encoder; The method of claim 1.
11. the second set of partition modes are derived by a decoder component. The method of claim 1.
12. the second set of partition modes are derived based on gradients of two or more predictors. The method of claim 11.
13. For a block of the plurality of blocks, an analyzed partition mode is obtained from an encoder component and a derived partition mode is generated at a decoder component; The method comprises: determining a cost for each of the analyzed partition mode and the derived partition mode; partitioning the block using the analyzed partition mode according to a determination that the analyzed partition mode has a lower cost; partitioning the block using the derived partition mode according to a determination that the derived partition mode has a lower cost; The method of claim 1 further comprising:
14. 1. A computing system comprising: A control circuit; Memory, one or more sets of instructions stored in the memory and configured to be executed by the control circuitry; 14. A computing system comprising: a processor configured to execute a programmable logic circuit that executes a programmable logic array (100) for executing a programmable logic circuit (100) on a processor that executes a programmable logic array ...).
15. A computer program which, when executed by a control circuit, causes the control circuit to carry out a method according to any one of claims 1 to 13.
Citation Information
Patent Citations
Video decoding method and device performing intra prediction, and video encoding method and device performing intra prediction
JP2018520549A
Effective prediction using partition coding
JP2021044832A
Systems and methods for video coding
JP2021536191A
Pathway indexing in flexible partitioning
US20110274176A1
Method for encoding / decoding high-resolution image and device for performing same
US20130089265A1