SYSTEM AND METHOD FOR BLENDING BLOCK SECTIONS IN PARTITION-BASED PREDICTION MODE - Patent application
Adaptive blending functions and lookup tables enhance video coding accuracy and efficiency by reducing artifacts and simplifying hardware, addressing the limitations of fixed blending widths and complex functions.
Patent Information
- Application Number
- JP2025541661
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-09-11
- Filing Date
- 2023-09-12
- Publication Date
- 2026-02-25
AI Technical Summary
Existing video coding methods face challenges in achieving high coding accuracy and efficiency, particularly in nonlinear blending functions and fixed blending widths, leading to artifacts in decoded video data.
The use of adaptive blending functions, nonlinear blending widths, and lookup tables to blend block sections, replacing complex blending functions with simpler lookup functions, improves coding accuracy and efficiency.
This approach reduces artifacts in decoded video data and enhances coding efficiency by simplifying hardware requirements, leading to improved encoder/decoder architectures.
Smart Images

Figure 2026506467000001_ABST
Abstract
Description
[Technical Field]
[0001] Related Applications
[0001] This application claims priority to U.S. Provisional Patent Application No. 63 / 443,363, entitled "Flexible Blending for Wedge-Based Prediction," filed February 3, 2023, and is a continuation of and claims priority to U.S. Patent Application No. 18 / 244,827, entitled "Systems and Methods for Blending Block Sections in a Partition-Based Prediction Mode," filed September 11, 2023.
[0002] FIELD OF THE INVENTION
[0002] The disclosed embodiments relate generally to video coding, including but not limited to systems and methods for non-linear blending of block sections in wedge-based prediction modes. [Background technology]
[0003]
[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, smartphones, video teleconferencing devices, and video streaming devices. The electronic devices transmit, receive, or otherwise communicate digital video data over communication networks and / or store the digital video data on 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]
[0004] Multiple video codec standards have been developed. For example, video coding standards include AOMedia Video 1 (AV1), Generic Video Coding (VVC), Joint Exploration and Test Model (JEM), High Efficiency Video Coding (HEVC / H.265), Advanced Video Coding (AVC / H.264), and Moving Picture Experts 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]
[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). Generic Video Coding (VVC), also known as H.266, is a video compression standard intended as the 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, accompanied by Errata 1 of the specification, was released on January 8, 2019. Summary of the Invention [Problem to be solved by the invention]
[0006]
[0006] This disclosure describes using a nonlinear blending function, an adaptive blending width, and a corresponding lookup table to blend block sections. The use of a nonlinear blending function and / or an adaptive blending width improves coding accuracy (e.g., reduces artifacts in decoded video data) compared to a linear blending function and a fixed blending width. In addition, the use of a lookup table to obtain quantized values corresponding to the blending function improves coding efficiency because a complex blending function can be replaced with a simple lookup function. [Means for solving the problem]
[0007] According to some embodiments, a method of video decoding is provided, the method including: (i) receiving video data from a video bitstream, the video data including a plurality of blocks including a first block, the first block being encoded using a first partition mode; (ii) identifying a first section of the first block and a second section of the first block according to the first partition mode; (iii) identifying a plurality of blending values for blending the first section and the second section, the plurality of blending values being obtained from one or more lookup tables, wherein (a) the one or more lookup tables include values ranging from 0 to N, (b) a first value in the one or more lookup tables is set to 0 and corresponds to a portion of the first section that is outside the first blending region, and (c) a second value in the one or more lookup tables is set to N and corresponds to a portion of the second section that is outside the second blending region; and (iv) decoding the first block using the plurality of blending values.
[0008] According to some embodiments, a method of video encoding is provided, the method including: (i) receiving video data including a plurality of blocks, including a first block, the first block to be encoded using a first partition mode; (ii) identifying a first section of the first block and a second section of the first block according to the first partition mode; (iii) identifying a plurality of blending values for blending the first section and the second section, the plurality of blending values being obtained from one or more lookup tables, wherein (a) the one or more lookup tables include values ranging from 0 to N, (b) a first value in the one or more lookup tables is set to 0 and corresponds to a portion of the first section that is outside the first blending region, and (c) a second value in the one or more lookup tables is set to N and corresponds to a portion of the second section that is outside the second blending region; and (iv) encoding the first block using the plurality of blending values.
[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 sets of instructions. The one or more sets of instructions include instructions for performing any of the methods described herein. In some embodiments, the computing system includes an encoder component and a decoder component (e.g., a transcoder component).
[0010]
[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 system, the one or more sets of instructions including instructions for performing any of the methods described herein.
[0011]
[0011] Accordingly, disclosed are methods, as well as devices and systems, for encoding and decoding video, which may complement or replace conventional methods, devices, and systems for encoding / decoding video.
[0012]
[0012] The features and advantages described herein are not necessarily all-inclusive, and in particular, some additional features and advantages will become apparent to those skilled in the art in view of the drawings, specification, and claims provided in this disclosure. Moreover, it should be noted that the language used herein has been selected primarily for readability and educational purposes, and has not necessarily been selected to define or limit the subject matter described herein.
[0013]
[0013] So that the present disclosure may be understood in detail, a more particular description may be made by reference to the features of various embodiments, some of which are illustrated in the accompanying drawings, which, however, illustrate only pertinent features of the present disclosure and should not therefore be considered necessarily limiting, since the description may lead to other useful features, as will be appreciated by those skilled in the art upon reading the present disclosure. [Brief explanation of the drawings]
[0014] [Figure 1] FIG. 1 is a block diagram illustrating an exemplary communication system, according to some embodiments. [Figure 2A]
[0015] FIG. 2 is a block diagram illustrating exemplary elements of an encoder component, according to some embodiments. [Figure 2B]
[0016] 3 is a block diagram illustrating exemplary elements of a decoder component, according to some embodiments. [Figure 3]
[0017] FIG. 1 is a block diagram illustrating an exemplary server system, according to some embodiments. [Figure 4A]
[0018] FIG. 1 is a diagram of an exemplary coding tree structure, according to some embodiments. [Figure 4B] FIG. 1 is a diagram of an exemplary coding tree structure, according to some embodiments. [Figure 4C] FIG. 1 is a diagram of an exemplary coding tree structure, according to some embodiments. [Figure 4D] FIG. 1 is a diagram of an exemplary coding tree structure, according to some embodiments. [Figure 5A]
[0019] FIG. 1 illustrates an example of a partition-based prediction mode, according to some embodiments. [Figure 5B]
[0020] FIG. 10 illustrates an exemplary partitioning mode blending, according to some embodiments. [Figure 5C] FIG. 10 illustrates an exemplary partitioning mode blending, according to some embodiments. [Figure 5D]
[0021] FIG. 1 illustrates an exemplary wedge-based partitioning, according to some embodiments. [Figure 5E]
[0022] FIG. 10 illustrates an example blending function, according to some embodiments. [Figure 5F] FIG. 10 illustrates an example blending function, according to some embodiments. [Figure 5G] FIG. 10 illustrates an example blending function, according to some embodiments. [Figure 5H] FIG. 10 illustrates an example blending function, according to some embodiments. [Figure 6A]
[0023] 1 is a flow diagram illustrating an exemplary method for encoding video, according to some embodiments. [Figure 6B]
[0024] 1 is a flow diagram illustrating an example method for decoding video, according to some embodiments. DETAILED DESCRIPTION OF THE INVENTION
[0015]
[0025] 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 denote like features throughout the specification and figures.
[0016]
[0026] 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. This disclosure also describes the use of adaptive blending functions and / or adaptive blending widths to blend different sections of a partitioned block. The use of adaptive blending functions and / or adaptive blending widths improves coding accuracy (e.g., reduces artifacts in decoded video data) compared to fixed blending functions and widths. In addition, adaptive blending functions can include nonlinear blending functions, which can improve coding accuracy compared to using linear blending functions. This disclosure also describes the use of lookup tables to blend block sections. The use of lookup tables to obtain quantized values corresponding to blending functions improves coding efficiency by replacing computationally complex blending functions with computationally simple lookup functions. The use of lookup tables also reduces hardware requirements, which can simplify encoder / decoder architectures (e.g., leading to smaller devices).
[0017] Exemplary Systems and Devices
[0027] 1 is a block diagram illustrating a communication system 100 according to some embodiments. Communication system 100 includes a source device 102 and multiple electronic devices 120 (e.g., electronic devices 120-1 through 120-m) 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.
[0018]
[0028] Source device 102 includes a video source 104 (e.g., a camera component or media storage) and an encoder component 106. In some embodiments, video source 104 is a digital camera (e.g., configured to create an uncompressed video sample stream). Encoder component 106 generates one or more encoded video bitstreams from the video stream. The video stream from video source 104 may be of a high data volume compared to the encoded video bitstream 108 generated by encoder component 106. Because the encoded video bitstream 108 has a lower 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 video source 104. In some embodiments, source device 102 does not include encoder component 106 (e.g., configured to transmit uncompressed video to network(s) 110).
[0019]
[0029] 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 (wired) and / or wireless communication networks. The one or more networks 110 may exchange data in circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet.
[0020]
[0030] 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 different encoding standards and / or methodologies 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.
[0021]
[0031] 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 accommodate potentially different bitstreams to one or more of electronic devices 120. In some embodiments, a MANE is provided separately from server system 112.
[0022]
[0032] 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 outgoing 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 do not include a display component (e.g., are communicatively coupled to an external display device and / or include 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.
[0023]
[0033] The source device and / or the plurality of electronic devices 120 may 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.
[0024]
[0034] In an exemplary operation of communication system 100, source device 102 transmits encoded video bitstream 108 to server system 112. For example, source device 102 may code a stream of pictures captured by the source device. Server system 112 may receive encoded video bitstream 108 and decode and / or encode encoded video bitstream 108 using coder component 114. For example, server system 112 may apply coding to the video data, which is more optimal for network transmission and / or storage. Server system 112 may transmit encoded video data 116 (e.g., one or more coded video bitstreams) to one or more of electronic devices 120. Each electronic device 120 may decode the encoded video data 116 and optionally display video pictures.
[0025]
[0035] 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., a 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, or 12-bit), any color space (e.g., BT.601 Y CrCB, or RGB), and any suitable sampling structure (e.g., Y CrCb 4:2:0 or Y CrCb 4:4:4). In some embodiments, the video source 104 is a storage device that stores previously captured / prepared video. In some embodiments, the video source 104 is a camera that captures local image information as a video sequence. Video data may be provided as multiple individual pictures that, when viewed in sequence, impart motion. The pictures themselves may be organized as a spatial array of pixels, each of which may contain one or more samples depending on the sampling structure, color space, etc., in use. Those skilled in the art can readily understand the relationship between pixels and samples. The following discussion focuses on samples.
[0026]
[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 other time constraints 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, quantizer, and / or λ value for 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 pertain to the encoder component 106 being optimized for a certain system design.
[0027]
[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 (e.g., responsible for creating symbols, such as a symbol stream, based on an input picture to be coded and one or more reference pictures) and a (local) decoder 210. The decoder 210 reconstructs the symbols to create sample data in a manner similar to a (remote) decoder (when the compression between the symbols and the coded video bitstream is lossless). The reconstructed sample stream (sample data) is input to a reference picture memory 208. Because decoding of the symbol stream yields bit-exact results independent of the decoder location (local or remote), the contents in the reference picture memory 208 are also bit-exact between the local and remote encoders. In this way, the predictive portion of the encoder interprets the same sample values as reference picture samples that the decoder would interpret when using prediction during decoding. This principle of reference picture synchrony (and the resulting drift if synchrony cannot be maintained, for example due to channel errors) is known to those skilled in the art.
[0028]
[0038] The operation of decoder 210 may be the same as that of a remote decoder, such as decoder component 122, which is described in detail below in connection with Figure 2B. However, with brief reference to Figure 2B, because symbols are available and the encoding / decoding of symbols into a coded video sequence by entropy coder 214 and parser 254 may be lossless, the entropy decoding portion of decoder component 122, including buffer memory 252 and parser 254, may not be fully implemented in local decoder 210.
[0029]
[0039] The decoder techniques described herein may exist in substantially the same functional form in the corresponding encoder, except for analysis / entropy decoding. For this reason, the disclosed subject matter focuses on decoder operation. A description of the encoder techniques may be omitted, as the encoder techniques may be the inverse of the decoder techniques.
[0030]
[0040] As part of its operation, source coder 202 may perform motion-compensated predictive coding, which predictively codes an input frame with reference to one or more previously coded frames from a video sequence designated as reference frames. In this manner, coding engine 212 codes differences between pixel blocks of the input frame and pixel blocks of reference frame(s) that may be selected as prediction reference(s) for the input frame. Controller 204 may manage the coding operations of source coder 202, including, for example, setting parameters and subgroup parameters used to encode the video data.
[0031]
[0041] The decoder 210 decodes coded video data of frames that may be designated as reference frames based on 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 replicates the decoding process that may be performed on the reference frames by a remote video decoder, which may cause the reconstructed reference frames to be stored in the reference picture memory 208. In this way, the encoder component 106 locally stores copies of the reconstructed reference frames that have common content as the reconstructed reference frames that will be obtained by the remote video decoder (without transmission errors).
[0032]
[0042] The predictor 206 may perform the predictive 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 certain metadata, such as reference picture motion vectors, block shapes, etc., that can serve as suitable predictive references for the new picture. The predictor 206 may operate on a sample block-by-pixel block basis to find suitable predictive references. In some cases, as determined by the search results obtained by the predictor 206, the input picture may have predictive references drawn from multiple reference pictures stored in the reference picture memory 208.
[0033]
[0043] The output of all the above-mentioned functional units may undergo entropy coding in entropy coder 214. Entropy coder 214 turns the symbols produced by the various functional units into a coded video sequence by losslessly compressing them according to techniques known to those skilled in the art (e.g., Huffman coding, variable length coding, and / or arithmetic coding).
[0034]
[0044] In some embodiments, the output of the entropy coder 214 is coupled to a transmitter. The transmitter may be configured to buffer the coded video sequence(s) created by the entropy coder 214 to prepare them for transmission over a communication channel 218, which may be a hardware / software link to a storage device that will store the coded video data. The transmitter may be configured to merge the coded video data from the source coder 202 with other data to be transmitted, such as coded audio data and / or an auxiliary data stream (source 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.
[0035]
[0045] The controller 204 may manage the operation of the encoder component 106. During coding, the controller 204 may assign a coded picture type to each coded picture, which may affect the coding technique applied to the respective picture. For example, a picture may be assigned as an intra picture (I picture), a predicted picture (P picture), or a bidirectionally predicted picture (B picture). An intra picture 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 applications and characteristics, and therefore, they will not be repeated here. A predicted picture may be coded and decoded using intra prediction or inter prediction, using at most one motion vector and reference index to predict sample values for each block. Bidirectionally predicted pictures can be coded and decoded using intra or inter prediction, using at most two motion vectors and reference indices to predict the sample values of each block. Similarly, multi-predicted pictures can use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0036]
[0046] A source picture is typically 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 reference to other (already coded) blocks determined by the coding assignment applied to the block's respective picture. For example, blocks of an I-picture may be nonpredictively coded, or they may be predictively coded with reference to already coded blocks of the same picture (spatial prediction or intra prediction). Pixel blocks of a P-picture may be nonpredictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Blocks of a B-picture may be nonpredictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.
[0037]
[0047] 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 within a given picture, while inter-picture prediction exploits correlation (temporal or other) between pictures. In one example, a particular picture to be 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 in use.
[0038]
[0048] Encoder component 106 may perform coding operations in accordance with 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.
[0039]
[0049] 2B is a block diagram illustrating exemplary elements of the decoder component 122, according to some embodiments. The decoder component 122 in FIG. 2B is coupled to the channel 218 and the display 124. In some embodiments, the decoder component 122 includes a transmitter coupled to the loop filter 256 and configured to transmit data to the display 124 (e.g., via a wired or wireless connection).
[0040]
[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 to be 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 may be 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, e.g., coded audio data and / or auxiliary data streams, which may be forwarded to their respective using entities (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(s). The additional data may be used by the decoder component 122 to decode the data and / or to 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, etc.
[0041]
[0051] According to 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 compensation 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 one or more integrated circuits and / or other electronic circuits. In some embodiments, the decoder component 122 is implemented at least partially in software.
[0042]
[0052] The buffer memory 252 is coupled intermediate the channel 218 and the parser 254 (e.g., to eliminate 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 handle playout timing), a separate buffer memory is provided external to the decoder component 122 (e.g., to eliminate network jitter). When receiving data from a storage / forwarding device of sufficient bandwidth and controllability or from an isosynchronous network, the buffer memory 252 may not be needed or may be small. For use with best-effort packet networks such as the Internet, the buffer memory 252 may be needed and may be relatively large, advantageously adaptively sized, and at least partially implemented in an operating system or similar element (not shown) external to the decoder component 122.
[0043]
[0053] Parser 254 is configured to reconstruct symbols 270 from the coded video sequence. These symbols may include, for example, information used to manage the operation of decoder component 122 and / or information for controlling a rendering device such as display 124. The control information for the rendering device(s) 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 that group. The 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 information from the coded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.
[0044]
[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-picture and intra-picture, inter-block and intra-block, etc.), and other factors. Which units are involved and how they are involved may be controlled by subgroup control information parsed from the coded video sequence by parser 254. The flow of such subgroup control information between parser 254 and the following units is not shown for clarity.
[0045]
[0055] The decoder component 122 may be conceptually subdivided into several functional units, which in some implementations closely interact with each other and may be, at least partially, integrated with each other, although the conceptual division of functional units is maintained herein for clarity.
[0046]
[0056] The scaler / inverse transform unit 258 receives the quantized transform coefficients as well as control information (such as which transform to use, block size, quantization factor, and / or quantization scaling metric) from the parser 254 as symbol(s) 270. The scaler / inverse transform unit 258 may output blocks containing sample values that may be input to the aggregator 268.
[0047]
[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 block being reconstructed 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.
[0048]
[0058] In other cases, the output samples of the scalar / inverse transform unit 258 relate to inter-coded and potentially motion-compensated blocks. In such cases, the motion-compensated prediction unit 260 can access the reference picture memory 266 to fetch samples used for prediction. After motion-compensating the fetched samples according to symbols 270 related to the block, these samples can 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 prediction samples can be controlled by motion vectors. The motion vectors can be available to the motion-compensated prediction unit 260, for example, in the form of symbols 270 that can have X, Y, and reference picture components. Motion compensation can also include interpolation of sample values fetched from the reference picture memory 266 when sub-sample exact motion vectors are in use, motion vector prediction mechanisms, and the like.
[0049]
[0059] The output samples of aggregator 268 may undergo various loop filtering techniques in loop filter unit 256. Video compression techniques may include in-loop filter techniques controlled by parameters included in the coded video bitstream 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 a coded picture or previous portion (in decoding order) of a coded video sequence, as well as to previously reconstructed and loop-filtered sample values.
[0050]
[0060] The output of the loop filter unit 256 may be a sample stream that may be output to a render device such as the display 124, as well as stored in the reference picture memory 266 for use in future inter-picture prediction.
[0051]
[0061] Some coded pictures, when reconstructed, may be used as reference pictures for future prediction. Once a coded picture is reconstructed and the coded picture is identified as a reference picture (e.g., by parser 254), the current reference picture may become part of reference picture memory 266, and a fresh current picture memory may be reallocated before beginning reconstruction of a subsequent coded picture.
[0052]
[0062] Decoder component 122 may perform decoding operations according to a predetermined video compression technology, which may be documented in a standard, such as any of the standards described herein. A coded video sequence may conform to the syntax specified by the video compression technology or standard being used, in that it follows the syntax of the video compression technology or standard as specified in the video compression technology document or standard, and in particular, in a profile document therein. Also, for compliance with some video compression technologies or standards, the complexity of a coded video sequence may be within limits defined by the level of the video compression technology or standard. In some cases, the level restricts a maximum picture size, a maximum frame rate, a maximum reconstruction sample rate (e.g., measured in megasamples per second), a maximum reference picture size, etc. The limits set by the level may, in some cases, be further restricted through a hypothetical reference decoder (HRD) specification and metadata for HRD buffer management signaled in the coded video sequence.
[0053]
[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).
[0054]
[0064] The network interface(s) 304 may be configured to interface with one or more communication networks (e.g., wireless networks, wireline networks, 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, wireless LANs, cellular networks, to include GSM, 3G, 4G, 5G, LTE, etc.; TV wireline or wireless wide-area digital networks, to include cable TV, satellite TV, and terrestrial broadcast TV; vehicular and industrial, to include CANbus; etc. Such communications may be unidirectional receive-only (e.g., broadcast TV), unidirectional transmit-only (e.g., CANbus to some CANbus devices), or bidirectional (e.g., with other computer systems using local or wide-area digital networks). Such communications may include communications to one or more cloud computing networks.
[0055]
[0065] The user interface 306 includes one or more output devices 308 and / or one or more input devices 310. The input device(s) 310 may include one or more of a keyboard, a mouse, a trackpad, a touchscreen, a data glove, a joystick, a microphone, a scanner, a camera, etc. The output device(s) 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.
[0056]
[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, the non-volatile solid-state memory device(s) within memory 314, comprises 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, which includes procedures for handling various basic system services and for 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 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: a decoding module 322 for performing various functions related to decoding the encoded data, such as those previously described with respect to the decoder component 122; an encoding module 340 for performing various functions related to encoding data, such as those previously described with respect to the encoder component 106; and A picture memory 352 for storing pictures and picture data, e.g., for use with the 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.
[0057]
[0067] In some embodiments, the decoding module 322 includes a parsing module 324 (e.g., configured to perform various functions previously described with respect to the parser 254), a transform module 326 (e.g., configured to perform various functions previously described with respect to the scalar / inverse transform unit 258), a prediction module 328 (e.g., configured to perform various functions previously described with respect to the motion compensation prediction unit 260 and / or the intra-picture prediction unit 262), and a filter module 330 (e.g., configured to perform various functions previously described with respect to the loop filter 256).
[0058]
[0068] In some embodiments, encoding module 340 includes a code module 342 (e.g., configured to perform various functions previously described with respect to source coder 202 and / or coding engine 212) and a prediction module 344 (e.g., configured to perform various functions previously described with respect to predictor 206). In some embodiments, decoding module 322 and / or encoding module 340 include a subset of the modules shown in Figure 3. For example, a shared prediction module is used by both decoding module 322 and encoding module 340.
[0059]
[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; thus, various subsets of these modules may be combined or possibly 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.
[0060]
[0070] 3 illustrates a server system 112 according to some embodiments, although FIG. 3 is intended as a functional illustration of various features that may be present in one or more server systems, rather than a structural schematic of the embodiments described herein. In practice, and as will be recognized by those skilled in the art, items shown separately may be combined and some items may be separated. For example, some items shown separately in FIG. 3 may be implemented on a single server, and a single item may be implemented by one or more servers. The actual number of servers used to implement server system 112 and how features are allocated among them may vary from implementation to implementation and optionally depend in part on the amount of data traffic the server system handles during peak usage periods as well as during average usage periods.
[0061] Exemplary Coding Processes and Techniques
[0071] The coding processes and techniques described below can be performed in the devices and systems described above (e.g., source device 102, server system 112, and / or electronic device 120). FIGS. 4A-4D are diagrams of exemplary coding tree structures, according to some embodiments. As shown in the first coding tree structure (400) in FIG. 4A, some coding techniques (e.g., VP9) use a four-way partition tree starting from a 64x64 level down to a 4x4 level, with some additional restrictions for 8x8 blocks. In FIG. 4A, the partitions labeled "R" are sometimes referred to as recursive, meaning that the same partition tree is repeated on a smaller scale until the lowest 4x4 level is reached.
[0062]
[0072] As shown in the second coding tree structure (402) of FIG. 4B, some coding techniques (e.g., AV1) extend the partition tree to a 10-way structure and increase the maximum size (e.g., called a superblock in VP9 / AV1 terminology) starting at 128x128. The second coding tree structure includes a 4:1 / 1:4 rectangular partition not found in the first coding tree structure. The partition type with three subpartitions in the second row of FIG. 4B is called a T-type partition. In addition to the coding block size, the coding tree depth can be defined, indicating the division depth from the root node.
[0063]
[0073] As an example, CTUs may be divided into CUs using a quadtree structure called a coding tree to adapt to various local characteristics, such as in HEVC. In some embodiments, a decision as to whether to code a picture region using inter-picture (temporal) prediction or intra-picture (spatial) prediction is made at the CU level. Each CU may be further divided into one, two, or four PUs according to a PU partition type. Within one PU, the same prediction process is applied, and related information for each PU is transmitted to the decoder. After obtaining residual blocks by applying a prediction process based on the PU partition type, the CU may be partitioned into TUs according to another quadtree structure, such as a coding tree for the CU.
[0064]
[0074] A quaternary tree with nested multitype trees using bipartition and tripartition segmentation structures, such as VVC, can replace the concept of multiple partition unit types, eliminating the separation of CU, PU, and TU concepts, except for CUs whose size is too large for the maximum transform length, and supporting greater flexibility in CU partition shapes. In the coding tree structure, CUs can have either square or rectangular shapes. CTUs are first partitioned using a quaternary tree (also called a quad-tree) structure. The quaternary tree leaf nodes may be further partitioned using a multitype tree structure. As shown in the third coding tree structure (404) in FIG. 4C, the multitype tree structure includes four partition types. The leaf nodes of the multitype tree are called CUs, and this segmentation is used for prediction and transform processing without further partitioning unless the CU is too large for the maximum transform length. In most cases, in a quaternary tree with nested multitype tree coding block structure, CUs, PUs, and TUs have the same block size. An example of a block partition for one CTU (406) is shown in FIG. 4D, which shows an exemplary quadtree with a nested multi-type tree coding block structure.
[0065]
[0075] Motion estimation involves determining motion vectors that describe the transformation of one image (picture) to another. Reference images (or blocks) can be from adjacent frames in a video sequence. Motion vectors can relate to the entire image (global motion estimation) or to specific blocks. In addition, motion vectors can correspond to translational or warp models that approximate motion (e.g., rotation and translation in three dimensions, and zoom). In some situations, further partitioning of blocks can improve the estimated motion (e.g., motion involving more complex video objects).
[0066]
[0076] Geometric partitioning mode (GPM) may focus on inter-picture predicted blocks (e.g., CUs). When GPM is applied to a block, the block is split into two parts via a linear 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 block may be coded into the bitstream. For example, in VVC, 64 partitioning modes are supported by GPM for CUs with a size of w × h = 2k × 2l (in terms of luma samples), with k, l ∈ {3...6}. For CUs with aspect ratios greater than 4:1 or less than 1:4, GPM may be disabled because, for example, narrow CUs rarely contain geometrically separated patterns.
[0067]
[0077] After partitioning, the two GPM sections (partitions) contain individual motion information that can be used to predict the corresponding section in the current block. In some embodiments, only unidirectional motion compensated prediction (MCP) is enabled for each section of the GPM, so that the required memory bandwidth for MCP in the GPM is equal to that for normal bidirectional MCP. To simplify motion information coding and reduce the possible combinations for the GPM, the motion information may be coded in merge mode. The GPM merge candidate list may be derived from the merge candidate list to ensure that only unidirectional motion information is included.
[0068]
[0078] 5A illustrates the 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 predicted portion on the right side of the current block 510 (e.g., a CU) of a current picture 502 (e.g., of size w×h) is predicted by MV0 from a reference block 512 of a reference picture 504, while the left side is predicted by MV1 from a reference block 514 of a reference picture 506.
[0069]
[0079] 5B shows 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, e.g., including weights with values ranging from 0 to 8. This can be expressed as: TIFF2026506467000002.tif4170 where W0+W1=8J Equation 1 – Blended Forecast In Equation 1, J is one of the matrices of size w × h. The weights of the blending matrix may depend on the displacement between the sample position and the partitioning boundary. Since the computational complexity of deriving the blending matrix is low, such a matrix can be generated on the fly at the decoder side. The "≫" in Equation 1 denotes a right-shift operation.
[0070]
[0080] The generated GPM prediction (PG) is then subtracted from the original signal to generate a residual. The residual is transformed, 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 prediction PG. GPM can also support skip mode, for example, when the residual is negligible. For example, the residual is removed by the encoder, and the GPM prediction PG is used directly by the decoder as the reconstructed signal.
[0071]
[0081] GPM can be further enhanced by, for example, GPM+TM (bilateral matching), GPM+MMVD (merge mode with motion vector difference), and Inter+Intra GPM. As shown in Figure 5C, the blending strength or blending area width θ can be fixed for all different contents. In some embodiments, the weight values in the blending mask are given by a ramp function:
[0072]
number
[0073]
[0082] Such a design may not be optimal because a fixed blending area width cannot always provide the best blending quality for various types of video content. For example, video content may contain strong textures and sharp edges, requiring a narrow blending area to preserve edge information. For content captured by a camera, blending is generally required, but the blending area width may depend on many factors, such as the boundaries of moving objects and the clarity of the movement of the two partitions.
[0074]
[0083] 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 width of the blending area (θ) 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 block at the encoder and signaled to the decoder based on a syntax element, e.g., merge_gpm_blending_width_idx. As an example, all predefined blending strength values can be shifted, and all clipping and shifting operations in the GPM blending process can be kept unchanged.
[0075]
[0084] Additionally, to accommodate the increased width of the GPM blending area, the weight range may be increased from [0,8] to [0,32]. Specifically, the weights can be calculated as follows:
[0076]
number
[0077]
[0085] Wedge-based prediction is a compound prediction mode (e.g., in AV1), which is similar to GPM. Wedge-based prediction can be used for both inter-inter and inter-intra combinations. The boundaries of moving objects are often difficult to approximate with on-grid block partitions. The solution is to predefine a codebook (e.g., 16) of possible wedge partitions and signal the wedge index in the bitstream when a coding unit is further partitioned in such a manner. In the current wedge design in AV1, 16 modes are supported because up to 16 symbols can be signaled in one syntax element with the multi-symbol adaptive context coding used in AV1. A 16-ary shape codebook containing partition orientations that are either horizontal, vertical, or diagonal (e.g., with a slant 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 generated by directly juxtaposing two predictors, a soft-cliff shaped 2D wedge mask can be employed to smooth the edges around the intended partition (e.g., m(i,j) is close to 0.5 around the edge and gradually changes to a binary weight at both ends).
[0078]
[0086] The AV1 wedge mode can also be extended to allow wedge modes for 64x64, 32x64, 64x32, 16x64, and 64x16 blocks. Additionally, wedge modes may be defined in Hessian norm form, where the angle indicates the direction of the partition boundary and the distance indicates the offset of the partition boundary from the center of the block. The angle can be quantized to a value (e.g., 20) using a tangent value. The distance can be quantized based on the block size. For example, three distances can be used for angles greater than 180 degrees and angles of 0 or 90 degrees. Four distances may be used for other angles. In this way, 8x4 + 12x3 = 68 modes can be supported. Because more than 16 modes are supported, the wedge index may be signaled with three syntax elements, e.g., angle direction, angle, and distance. The angle direction indicates whether the angle is less than 180 degrees. Depending on the angle direction, the actual angle may also be signaled. Depending on the angle signaled, distance may also be signaled.
[0079]
[0087] The wedge blending mask can be directly quantized from the distance from the sample position to the split boundary. Using the Hessian normal form split boundary definition, the distance can be defined as: d(x,y)=x cos(φ)-y sin(φ)+ρ Equation 5 - Blending Mask Distance where ρ is the distance from the center and φ is the partition angle. The angle and distance can be quantized using the tangent value and block size. Therefore, only a lookup table and shift operations are required to calculate the quantized d(m,n), as shown in Equation 6 below. d(m,n)=(((m+ρ x )≪1)-w+1)cosLUT[φ i ] +(((n+ρ y )≪1)-h+1)sinLUT[φi ] Equation 6 - Quantized Distance
[0080]
[0088] The blending weights at the corresponding locations can be derived using Equation 7: ω m,n =clamp(0,64,(d(m,n)+32)) Equation 7 - Blending Weights
[0081]
[0089] The blending weights may be calculated on the fly (e.g., for low computational complexity) or may be pre-stored (e.g., as in the AV1 wedge mode design). However, in AV1, wedge mode blending is based on a linear function. That is, if the distance d between a sample location and a partitioning boundary is in the range [-2, 2] (e.g., pixels or pels), a linear ramp function x / 4 + 1 / 2 can be used to calculate the corresponding weighting factor for the sample location. In one example, if d is less than -2, a weighting factor of 0 is used, and if d is greater than 2, a full blending weighting factor is used. In the continuous case, the full blending weighting factor is 1; in the quantized case, the full blending factor may depend on the blending precision. For example, if 6 bits are used to represent the weighting factor, the full blending factor is 64. In addition, a fixed blending width can also be used (e.g., a width equal to 2 pels). FIG. 5E shows an example linear blending function 552 with a blending width of 2. A linear blending function and a fixed blending width may limit the flexibility of the blending operation for the wedge mode.
[0082]
[0090] The methods and processes described below incorporate adaptive nonlinear blending (e.g., flexible blending). Adaptive nonlinear blending can be used with the GPM and / or wedge-based prediction processes described above. Reference is now made to several exemplary embodiments.
[0083]
[0091] 6A is a flow diagram illustrating a method 600 for encoding video according to some embodiments. Method 600 may be implemented 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 implemented by executing instructions stored in memory (e.g., memory 314) of the computing system.
[0084]
[0092] The system receives (602) video data including a plurality of blocks, including a first block, where the first block is to be encoded using a first partition mode. In accordance with the first partition mode, the system identifies (604) a first section of the first block and a second section of the first block. The system identifies (606) a plurality of blending values for blending the first section and the second section, the plurality of blending values being obtained from one or more lookup tables, the one or more lookup tables including values ranging from 0 to N, where a first value in the one or more lookup tables is set to 0 and corresponds to a portion of the first section that is outside the first blending region, and a second value in the one or more lookup tables is set to N and corresponds to a portion of the second section that is outside the second blending region. The system encodes (608) the first block using the plurality of blending values.
[0085]
[0093] 6B is a flow diagram illustrating a method 650 of decoding video according to some embodiments. Method 650 may be implemented 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 650 is implemented by executing instructions stored in memory (e.g., memory 314) of the computing system.
[0086]
[0094] The system receives (652) video data including a first block from a video bitstream, the first block being encoded using a first partition mode. According to the first partition mode, the system identifies (654) a first section of the first block and a second section of the first block. The system identifies (656) a plurality of blending values for blending the first section and the second section, the plurality of blending values being obtained from one or more lookup tables, the one or more lookup tables including values ranging from 0 to N, a first value in the one or more lookup tables being set to 0 and corresponding to a portion of the first section that is outside the first blending region, and a second value in the one or more lookup tables being set to N and corresponding to a portion of the second section that is outside the second blending region. The system decodes (658) the first block using the plurality of blending values. In some embodiments, each lookup table includes one or more values that are set to a minimum or maximum value (e.g., based on bit precision). In some embodiments, the minimum or maximum set value is used for areas of the first block that are outside the blending area (e.g., to prevent blending across the entire first block).
[0087]
[0095] 6A and 6B show some logical stages in a particular order, but order-independent stages may be reordered and other stages may be combined or separated. Any reordering or other grouping not specifically described will be apparent to those skilled in the art, and therefore the ordering and grouping presented herein is not exhaustive. Moreover, it should be recognized that the stages may be implemented in hardware, firmware, software, or any combination thereof.
[0088]
[0096] In some embodiments, a nonlinear blending function is used to generate the blending values. For example, a nonlinear function w=f(d) is used to determine a weighting factor w of a sample position depending on the distance d from the sample position to the partitioning boundary. w ranges from [0, full blending], d ranges from [-θ1, θ2], and θ1 and θ2 define the blending area width. The values of these two variables may or may not be equal. The value d may be a desired precision value and / or a predefined precision value d m (e.g., 1 / 64). The weighting factor used during reconstruction is w m =round(cf(d m )), where c is equal to the weighting factor for full blending (e.g., for 6 bits, c is equal to 64).
[0089]
[0097] In some embodiments, the nonlinear blending function f(d) is a sigmoid function, for example:
[0090]
number
[0091]
[0098] In some embodiments, the sigmoid blending function is quantized into one or more look-up tables (LUTs). For example, d m For , the sigmoid-based LUTs to be quantized are shown in Tables 1 and 2.
[0092] [Table 1]
[0093] [Table 2]
[0094]
[0099] In some embodiments, the final value of each LUT is set to a value that is independent of the function used to determine the other values of the LUT. For example, the value 0 in Table 1 and the value 64 in Table 2 are independent of the sigmoid function. In some embodiments, the lookup tables are defined using static constants, as in the following example code: static const int8_t neg_dist_2_bld_weight
[0128] ={Table 1}; static const int8_t pos_dist_2_bld_weight
[0128] ={Table 2};
[0095]
[0100] In some embodiments, the nonlinear blending function f(d) is a hyperbolic tangent (tanh) function. For example, w=0.5tanh(c1 d)+0.5. As an example, FIG. 5G shows a tanh blending function 556 with c1=1.3, which corresponds to blending the [-2,2] pixel shown.
[0096]
[0101] In some embodiments, the nonlinear blending function f(d) is a cosine-based (or other trigonometric) function, for example:
[0097]
number
[0098]
[0102] In some embodiments, the nonlinear blending function f(d) is an exponential-based function. For example, if d is less than 0, then w=e c1(d-c2) If d is 0 or more,
[0099]
number
[0100]
[0103] In some embodiments, a nonlinear blending function including a coefficient w=f(c1 d) is used as the blending function. In various embodiments, the coefficient is signaled (e.g., directly or an index of some predefined value is signaled) or derived. In some embodiments, the coefficient c1 (and / or c2) is signaled to determine the blending width. Parameters specifying the blending function may be signaled in a higher-order syntax.
[0101]
[0104] In some embodiments, multiple non-linear functions are pre-selected and used for different ranges of distance values d. For example, a sigmoid function (e.g.,
[0102]
number
[0103]
number
[0104]
[0105] (A1) In one aspect, some embodiments include a method of video encoding (e.g., method 600). In some embodiments, the method is implemented in a computing system (e.g., server system 112) having memory and control circuitry. In some embodiments, the method is implemented in a coding module (e.g., coding module 320). In some embodiments, the method is implemented in a source coding component (e.g., source coder 202), a coding engine (e.g., coding engine 212), and / or an entropy coder (e.g., entropy coder 214). The method includes: (i) receiving video data including a plurality of blocks including a first block, the first block to be encoded using a first partition mode; (ii) identifying a first section of the first block and a second section of the first block according to the first partition mode; (iii) identifying a plurality of blending values for blending the first section and the second section, the plurality of blending values being obtained from one or more lookup tables, wherein (a) the one or more lookup tables include values ranging from 0 to N, where N is a positive integer; (b) a first value in the one or more lookup tables is set to 0 and corresponds to a portion of the first section that is outside the first blending region; and (c) a second value in the one or more lookup tables is set to N and corresponds to a portion of the second section that is outside the second blending region; and (iv) encoding the first block using the plurality of blending values. In some embodiments, the method further includes transmitting the first block via a video bitstream. In some embodiments, the first partition mode is signaled within the video bitstream. In some embodiments, the first value corresponds to a last position of one or more lookup tables. In some embodiments, the second value corresponds to a last position of one or more lookup tables.
[0105]
[0106] (A2) In some embodiments of A1, at least a subset of the plurality of blending values corresponds to a non-linear blending function (e.g., the non-linear blending functions shown in FIGS. 5F-5H). In some embodiments, a second subset of the plurality of blending values is set to a minimum or maximum value and corresponds to a portion of the first block that is outside the blending region.
[0106]
[0107] (A3) In some embodiments of A2, the nonlinear blending function is a sigmoid function (e.g., as shown in Figure 5F).
[0107]
[0108] (A4) In some embodiments of any of A1-A3, the one or more lookup tables include quantized values of non-linear blending functions (eg, as shown in Tables 1 and 2).
[0108]
[0109] (A5) In some embodiments of A4, the method further includes constructing one or more lookup tables including: (a) determining weighting factors from the nonlinear blending function; and (b) obtaining quantized weighting factors by dividing the weighting factors by a quantization step size and rounding to the nearest integer.
[0109]
[0110] (A6) In some embodiments of A5, constructing the one or more lookup tables further includes adjusting the quantized weighting factors by a preset offset before inserting them into the one or more lookup tables.
[0110]
[0111] (A7) In some embodiments of any of A1-A6, the one or more lookup tables include a lookup table with values as shown in Table 1.
[0111]
[0112] (A8) In some embodiments of any of A1-A7, the one or more lookup tables include a lookup table with values as shown in Table 2.
[0112]
[0113] (B1) In another aspect, some embodiments include a method of video decoding (e.g., method 650). In some embodiments, the method is implemented in a computing system (e.g., server system 112) having memory and control circuitry. In some embodiments, the method is implemented in a coding module (e.g., coding module 320). In some embodiments, the method is performed in a parser (e.g., parser 254), a motion prediction component (e.g., motion compensated prediction unit 260), and / or an intra-prediction component (e.g., intra-picture prediction unit 262). The method includes: (i) receiving video data (e.g., a coded video sequence) including a plurality of blocks including a first block from a video bitstream, where the first block is encoded using a first partition mode; (ii) identifying a first section of the first block and a second section of the first block according to the first partition mode; (iii) identifying a plurality of blending values for blending the first section and the second section, the plurality of blending values being obtained from one or more lookup tables (e.g., Table 1 and Table 2), where (a) the one or more lookup tables include values ranging from 0 to N, where N is a positive integer; (b) a first value of the one or more lookup tables is set to 0 and corresponds to a portion of the first section that is outside the first blending region; and (c) a second value of the one or more lookup tables is set to N and corresponds to a portion of the second section that is outside the second blending region; and (iv) decoding the first block using the plurality of blending values. For example, a nonlinear function w=f(d) is used to determine the weighting factor w of a sample position depending on the distance d from the sample position to the partitioning boundary. w is in the range [0,full blending], d is in the range [-θ1,θ2], and θ1 and θ2 define the blending area width. The values of these two variables may or may not be equal.The value d is the required precision value / predefined precision value d. m (e.g., 1 / 64), and the weighting factor used during reconstruction is w m =round(cf(d m )), where c is equal to a weighting factor for full blending (e.g., for 6 bits, c is equal to 64). In some embodiments, the first value corresponds to the last position of one or more lookup tables. In some embodiments, the second value corresponds to the last position of one or more lookup tables.
[0113]
[0114] In some embodiments, the method includes identifying a first partition mode from a plurality of partition modes for a first block and identifying a partitioning boundary for the first block according to the partition mode, the partitioning boundary distinguishing a first section of the first block from a second section of the first block. In some embodiments, the method includes decoding the first section according to a first predictor and decoding the second section according to a second predictor different from the first predictor. As an example, the plurality of blending values correspond to a first blending region of the first section of the first block and a second blending region of the second section of the first block.
[0114]
[0115] (B2) In some embodiments of B1, at least a subset of the plurality of blending values corresponds to a non-linear blending function. For example, the non-linear blending function is used to determine weighting factors based on distance from a partition boundary. In some embodiments, a second subset of the plurality of blending values is set to a minimum or maximum value and corresponds to portions of the first block that are outside the blending region(s). In some embodiments, one or more of the plurality of blending values is set to a minimum value (e.g., 0) and one or more of the plurality of blending values is set to a maximum value (e.g., 64). For example, the minimum and maximum values correspond to the case where no section blending is applied.
[0115]
[0116] (B3) In some embodiments of B2, the nonlinear blending function is a sigmoid function. For example, the nonlinear blending function is w=1 / 1+e -c1 d where w is a weighting factor. In this example, c1=2 gives a blending area of approximately [-2,2].
[0116]
[0117] (B4) In some embodiments of B2, the nonlinear blending function is a hyperbolic sine function. For example, the nonlinear blending function is w=0.5tanh(c1 d)+0.5, where w is a weighting factor. In this example, c1=1.3 gives a blending area of approximately [-2,2].
[0117]
[0118] (B5) In some embodiments of B2, the nonlinear blending function is a trigonometric function. For example, the nonlinear blending function is
[0118]
number
[0119] (B6) In some embodiments of B2, the nonlinear blending function is an exponential-based function. For example, the nonlinear blending function is such that w=e when d is less than 0. c1(d-c2) If d is 0 or greater,
[0120]
number
[0121] (B7) In some embodiments of B2, the nonlinear blending function is a polynomial function.
[0122] (B8) In some embodiments of any of B2 to B7, the method further includes identifying coefficients of a nonlinear blending function, where the coefficients are signaled or derived within the video bitstream, and the plurality of blending values are identified using the coefficients. For example, a nonlinear blending function including coefficients w=f(c1,d) is used as the blending function. The coefficients may be signaled or derived. In some embodiments, an index indicating which lookup table, group, and / or function of coefficients is used is signaled.
[0123] (B9) In some embodiments of B8, the coefficient is a blending weight factor for a sigmoid function. For example, the nonlinear blending function f(d) may be a sigmoid function, i.e., w=1 / (1+e^(-c1,d)), and the coefficient c1 may be signaled in the bitstream to determine the blending area width.
[0124] (B10) In some embodiments of B8 or B9, the coefficient defines a blending area of the first section and / or the second section.
[0125] (B11) In some embodiments of any of B8-B10, the coefficients are signaled in a high-order syntax. In some embodiments, an index is signaled in the high-order syntax, and the index indicates which lookup table, group, and / or function is used to determine the coefficients. For example, the high-order syntax corresponds to a sequence level, a frame level, a slice level, or a tile level. In some embodiments, the high-order syntax is higher than the block level. For example, the high-order syntax may include a VPS, an SPS, a PPS, an APS, a slice header, a picture header, a tile header, and / or a CTU header. In some embodiments, parameters specifying the nonlinear blending function are signaled in a high-order syntax, including, but not limited to, an SPS, a frame header, or a slice header.
[0126] (B12) In some embodiments of any of B1 to B11, the first blending region has a different width than the second blending region.
[0127] (B13) In some embodiments of any of B1-B12, the one or more lookup tables include quantized values of the nonlinear blending function. For example, the lookup table (LUT) corresponds to a sigmoid function, a tanh function, a cosine function, an exponential-based function, or a polynomial function. As an example, each blending value is identified from the LUT based on its distance from a partition boundary. In some embodiments, the LUT has a precision defined by d (e.g., 1 / 64) and a blending value defined by c. As an example, the nonlinear blending function can be quantized into one or more LUTs depending on the precision of d and / or the full blending value c.
[0128] (B14) In some embodiments of B13, the method further includes constructing one or more lookup tables, including: (a) determining weighting factors from the nonlinear blending function; and (b) obtaining quantized weighting factors by dividing the weighting factors by a quantization step size and rounding to the nearest integer. For example, the weighting factors calculated by the blending function are divided by the quantization step size and rounded to the nearest integer, and the derived integer weightings may be further adjusted by +1, −1, +2, −2, ... in addition to the rounded value. In some embodiments, the quantized weighting factors are inserted into the lookup table.
[0129] (B15) In some embodiments of B14, constructing the one or more lookup tables further includes adjusting the quantized weighting factors by a preset offset before inserting them into the one or more lookup tables. For example, the preset offset is +1, −1, +2, or −2.
[0130] (B16) In some embodiments of any of B1-B3, the one or more lookup tables include a lookup table having values as shown in Table 1.
[0131] (B17) In some embodiments of any of B1-B3 and B16, the one or more lookup tables include a lookup table having values as shown in Table 2.
[0132] (B18) In some embodiments of any of B1-B17, the method further includes identifying a second plurality of blending values for blending the first section and the second section, the second plurality of blending values corresponding to a second blending function; wherein the first block is reconstructed using the plurality of blending values and the second plurality of blending values. In some embodiments, multiple nonlinear functions are preselected and used for different ranges of distance values d. For example, a sigmoid function (e.g., w=1 / (1+e^(-c1 d))) is used for d∈[-2], and a linear function (e.g., w=d / 4+1 / 2) is used for d∈[0].
[0133] (B19) In some embodiments of B18, the second blending function is a nonlinear function, a linear function, or a piecewise function. For example, multiple nonlinear functions, linear functions, and / or piecewise functions are predefined. In some embodiments, an index of the function that produces the best blending at the lowest cost is signaled in the bitstream or derived at the decoder side.
[0134]
[0133] In another aspect, some embodiments include a computing system (e.g., server system 112) including control circuitry (e.g., control circuit 302) and memory (e.g., memory 314) coupled to the control circuitry, wherein the memory stores one or more sets of instructions configured to be executed by the control circuitry, the one or more sets of instructions including instructions for performing any of the methods described herein (e.g., A1-A8 and B1-B19 above).
[0135]
[0134] In yet another aspect, some embodiments include a non-transitory computer-readable storage medium storing one or more sets of instructions for execution by control circuitry of a computing system, the one or more sets of instructions including instructions for performing any of the methods described herein (e.g., A1-A8 and B1-B19 above).
[0136]
[0135] Although terms such as "first," "second," and the like may be used herein to describe various elements, it should be understood that these elements are not limited by these terms. These terms are merely used to distinguish one element from another. The terminology used herein is merely for the purpose of describing particular embodiments and does not limit the scope of the claims. As used in the description of these embodiments and the appended claims, the singular forms "a," "an," and "the" are intended to include the plural forms unless the context clearly indicates otherwise. The term "and / or" as used herein should also be understood to refer to and encompass any and all possible combinations of one or more of the associated listed items. Furthermore, it should be understood that the terms "comprises" and / or "comprising" as used herein specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.
[0137]
[0136] As used herein, the term "if" may be interpreted to mean "when" or "upon" or "in response to determining" or "in accordance with a determination" or "in response to detecting" that a stated condition precedent is true, depending on the context. Similarly, the phrase "if it is determined that [the stated condition precedent is true]" or "if [the stated condition precedent is true]" or "when [the stated condition precedent is true]" may be interpreted to mean "upon determining" or "in response to determining" or "in accordance with a determination" or "upon detecting" or "in response to detecting" that a stated condition precedent is true, depending on the context.
[0138]
[0137] The foregoing description has been set forth with reference to specific embodiments for purposes of explanation. However, the above exemplary description is not intended to be exhaustive or to limit the scope of the claims to the precise form disclosed. Many modifications and variations are possible in light of the above teachings. The embodiments were chosen and described in order to best explain the principles of operation and practical applications, thereby enabling others skilled in the art.
Claims
1. 1. A method of video decoding implemented in a computing system having a memory and one or more processors, the method comprising: receiving video data including a plurality of blocks including a first block from a video bitstream, the first block being encoded using a first partition mode; identifying a first section of the first block and a second section of the first block according to the first partition mode; identifying a plurality of blending values for blending the first section and the second section, the plurality of blending values being obtained from one or more lookup tables; the one or more lookup tables contain values ranging from 0 to N, where N is a positive integer; at least a first value corresponding to a last position of the one or more lookup tables is set to 0, corresponding to a portion of the first section that is outside a first blending region; identifying a second value in the one or more lookup tables set to N and corresponding to a portion of the second section that is outside a second blending region; decoding the first block using the blending values; A method comprising:
2. The method of claim 1 , wherein at least a subset of the plurality of blending values corresponds to a non-linear blending function.
3. The method of claim 2 , wherein the non-linear blending function is a sigmoid function.
4. 3. The method of claim 2, further comprising: determining coefficients of the nonlinear blending function, the coefficients being signaled or derived within the video bitstream, and the plurality of blending values being determined using the coefficients.
5. The method of claim 4 , wherein the coefficients are blending weight factors for a sigmoid function.
6. The method of claim 4 , wherein the coefficients define a blending area of the first section and / or the second section.
7. The one or more lookup tables are {32, 32, 31, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10,10,9,9,9,9,9,8,8,8,8,7,7,7,7,7,6,6,6,6,6,6,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,0}.
8. The one or more lookup tables are {32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 43, 44, 44, 45, 45, 46, 46, 46, 47, 47, 48, 48, 49, 49, 49, 50, 50, 50, 51, 51, 51, 52, 52, 53, 53, 53, 54, 54, 54, 55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 64}.
9. The method of claim 1 , wherein the first blending region has a different width than the second blending region.
10. The method of claim 1 , wherein the one or more lookup tables contain quantized values of a non-linear blending function.
11. constructing the one or more lookup tables, determining weighting factors from the nonlinear blending function; obtaining a quantized weighting factor by dividing the weighting factor by a quantization step size and rounding to the nearest integer; The method of claim 10 further comprising:
12. 12. The method of claim 11, wherein constructing the one or more lookup tables further comprises adjusting the quantized weighting factors by a preset offset before inserting them into the one or more lookup tables.
13. 1. A computing system comprising: a control circuit; Memory and one or more sets of instructions stored in the memory and configured for execution by the control circuitry; 1. A computing system comprising: receiving video data including a plurality of blocks including a first block from a video bitstream, the first block being encoded using a first partition mode; identifying a first section of the first block and a second section of the first block according to the first partition mode; identifying a plurality of blending values for blending the first section and the second section, the plurality of blending values being obtained from one or more lookup tables, the one or more lookup tables including values ranging from 0 to N, where N is a positive integer, at least a first value corresponding to a last position of the one or more lookup tables being set to 0 and corresponding to a portion of the first section that is outside a first blending region, and a second value of the one or more lookup tables being set to N and corresponding to a portion of the second section that is outside a second blending region; decoding the first block using the blending values; 22. A computing system comprising: a processor;
14. The computing system of claim 13 , wherein at least a subset of the plurality of blending values corresponds to a non-linear blending function.
15. The computing system of claim 14 , wherein the non-linear blending function is a sigmoid function.
16. 15. The computing system of claim 14, wherein the one or more sets of instructions further include instructions for identifying coefficients of the nonlinear blending function, the coefficients being signaled or derived within the video bitstream, and the plurality of blending values being identified using the coefficients.
17. The computing system of claim 13 , wherein the one or more lookup tables include quantized values of a non-linear blending function.
18. 1. A non-transitory computer-readable storage medium storing one or more sets of instructions configured for execution by a computing device having control circuitry and a memory, the one or more sets of instructions comprising: receiving video data including a plurality of blocks including a first block from a video bitstream, the first block being encoded using a first partition mode; identifying a first section of the first block and a second section of the first block according to the first partition mode; identifying a plurality of blending values for blending the first section and the second section, the plurality of blending values being obtained from one or more lookup tables, the one or more lookup tables including values ranging from 0 to N, where N is a positive integer, at least a first value corresponding to a last position of the one or more lookup tables being set to 0 and corresponding to a portion of the first section that is outside a first blending region, and a second value of the one or more lookup tables being set to N and corresponding to a portion of the second section that is outside a second blending region; decoding the first block using the blending values; A non-transitory computer-readable storage medium containing instructions for:
19. The non-transitory computer-readable storage medium of claim 18 , wherein at least a subset of the plurality of blending values corresponds to a non-linear blending function.
20. 20. The non-transitory computer-readable storage medium of claim 19, wherein the non-linear blending function is a sigmoid function.