Method and equipment for video coding
Patent Information
- Application Number
- JP2024120779
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2019-06-14
- Filing Date
- 2024-07-26
- Publication Date
- 2025-04-01
- Estimated Expiration
- 2039-12-04
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical field]
[0001] [Related Applications] This application claims the benefit of priority to U.S. Provisional Patent Application No. 62 / 777,593, entitled "Methods of GBi Index Inheritance and Constraints," filed December 10, 2018, which claims the benefit of priority to U.S. Provisional Patent Application No. 16 / 441,879, entitled "Method and Apparatus for Video Coding," filed June 14, 2019. The entire disclosures of the aforementioned applications are hereby incorporated by reference in their entireties.
[0002] [Technical field] This disclosure generally describes embodiments related to video encoding. [Background technology]
[0003] The background description provided herein is to provide an overview of the context of the present disclosure. The work of the presently named inventors is not admitted explicitly or implicitly as prior art to the present disclosure, to the extent that the work described in this background section, as well as aspects of the description that may not be considered prior art at the time of filing, are not admitted explicitly or implicitly as prior art to the present disclosure.
[0004] Video encoding and decoding can be performed using inter-picture prediction with motion compensation. Uncompressed digital video can include a sequence of pictures, each with spatial dimensions of, for example, 1920x1080 luminance samples and associated chrominance samples. The sequence of pictures can have a fixed or variable picture rate (also known informally as frame rate), for example, 60 pictures per second or 60 Hz. Uncompressed video has significant bitrate requirements. For example, a 1080p60 4:2:0 video (1920x1080 luminance sample resolution at 60 Hz frame rate) with 8 bits per sample requires a bandwidth of 1.5 Gbit / s. One hour of such video requires more than 600 Gbytes of storage space.
[0005] One goal of video encoding and decoding can be the reduction of redundancy in the input video signal through compression. Compression can help reduce the aforementioned bandwidth or storage space requirements, in some cases by more than two orders of magnitude. Both lossy and lossless compression, and combinations thereof, can be utilized. Lossless compression refers to techniques where an exact copy of the original signal can be reconstructed from the compressed original signal. With lossy compression, the reconstructed signal is not identical to the original signal, but the distortion between the original signal and the reconstructed signal is small enough to produce a reconstructed signal that is useful for the intended application. In the case of video, lossy compression is widely used. The amount of tolerable distortion depends on the application, and users of certain consumer streaming applications can tolerate higher distortion than users of television distribution applications. The achievable compression ratio can reflect that the higher the acceptable / tolerable distortion, the higher the compression ratio that can result.
[0006] Motion compensation is a lossy compression technique and may refer to a technique in which blocks of sample data from a previously reconstructed picture or part thereof (reference picture) are used for prediction of a newly reconstructed picture or part of a picture after being spatially shifted in a direction indicated by a motion vector (hereinafter MV). In some cases, the reference picture may be the same as the picture currently being reconstructed. The MV may have two dimensions X and Y, or three dimensions, with the third dimension being an indication of the reference picture in use (the latter may indirectly be a temporal dimension).
[0007] In some video compression techniques, the MV applicable to a particular region of sample data can be predicted from other MVs, e.g., from MVs associated with another region of sample data spatially adjacent to the region being reconstructed and preceding it in the decoding order. Doing so can result in a reduction in the amount of data required to encode the MV, thereby removing redundancy and improving compression. MV prediction, for example, when encoding an input video signal (known as natural video) obtained from a camera, is a statistical possibility that regions larger than the region to which a single MV is applicable move in a similar direction and are therefore predictable, in some cases, using similar motion vectors derived from the MVs of neighboring regions. This results in the MV found for a given region being similar or the same as the MV predicted from the surrounding MVs. This can also be represented, after entropy coding, with a smaller number of bits than could be used when encoding the MV directly. In some cases, MV prediction can be an example of lossless compression of a signal (i.e., MV) derived from the original signal (i.e., sample stream). In other cases, MV prediction itself can be lossy, e.g., due to rounding off errors when computing a predictor from several surrounding MVs.
[0008] Various MV prediction mechanisms are described in H.265 / HEVC (ITU-T Rec. H.265, "High Efficiency Video Coding", December 2016). One of the many MV prediction mechanisms provided by H.265 described therein is a technique referred to below as "spatial merge".
[0009] Referring to Fig. 1, the current block (101) contains samples found by the encoder during the motion search process as predictable from a previous block of the same size as the one that is spatially shifted. Instead of directly encoding the MV, the MV can be derived from metadata associated with one or more reference pictures, for example, from the most recent reference picture (in decoding order), using the MV associated with any one of the five surrounding samples A0, A1, and B0, B1, B2 (102 to 106, respectively). In H.265, the MV prediction can use predictors from the same reference picture used by the neighboring blocks. Summary of the Invention
[0010] Aspects of the disclosure provide a method and device for video encoding and decoding. In some examples, the device includes a processing circuit, which obtains prediction information of a first block in a picture from an encoded video bitstream, and generates a reconstructed sample of the first block for output according to one of bidirectional prediction and unidirectional prediction and the prediction information. When it is determined that a motion information candidate should be stored according to the prediction information of the first block and should be stored as a history-based motion vector prediction (HMVP) candidate, the processing circuit stores the motion information candidate, which includes at least: when the first block is encoded according to bidirectional prediction, first motion information, and a first weight parameter indicating a first weight for performing bidirectional prediction on the first block, and when the first block is encoded according to unidirectional prediction, the first motion information, and a default weight parameter indicating a default weight. When it is determined that a second block in the picture should be decoded based on the motion information candidate, the processing circuit generates a reconstructed sample of the second block for output according to the motion information candidate.
[0011] In some embodiments, when the motion information candidate is stored as a normal spatial merge candidate and the second block is encoded according to bidirectional prediction, the processing circuit sets a second weight for performing bidirectional prediction for the second block according to a first weight parameter stored in the motion information candidate when the first block is spatially adjacent to the second block, and sets the second weight for performing bidirectional prediction for the second block to a default weight when the first block is not spatially adjacent to the second block.
[0012] In some embodiments, when the motion information candidate is stored as a candidate that is neither a normal spatial merge candidate nor an HMVP candidate and the second block is encoded according to bidirectional prediction, the processing circuit is further configured to set the second weight for performing bidirectional prediction on the second block to a default weight.
[0013] In some embodiments, when the first block is in a current coding tree unit (CTU) row different from the CTU row in which the second block is included, the motion information candidates are stored as normal merge candidates or affine merge candidates, and the second block is encoded according to bidirectional prediction, the processing circuit sets the second weight for performing bidirectional prediction on the second block to a specified weight.
[0014] In some embodiments, when the first block is outside the current CTU in which the second block is contained, the motion information candidate is stored as a translational merge candidate or an inherited affine merge candidate, and the second block is encoded according to bidirectional prediction, the processing circuit sets the second weight for performing bidirectional prediction on the second block to a specified weight.
[0015] In some embodiments, the first block is coded according to one of bidirectional prediction and unidirectional prediction using the picture as a reference picture.
[0016] In some embodiments, the first block is coded according to bidirectional prediction, and both the first weight corresponding to the first reference picture in the first list and the second weight derived from the first weight and corresponding to the second reference picture in the second list are positive when the first and second reference pictures are the same reference picture. In some embodiments, the first block is coded according to bidirectional prediction, and one of the first weight corresponding to the first reference picture in the first list and the second weight derived from the first weight and corresponding to the second reference picture in the second list is negative when the first and second reference pictures are different reference pictures.
[0017] In some embodiments, the default weight is 1 / 2.
[0018] In some embodiments, the first block is coded according to bi-directional prediction, and a first weight w1 corresponding to a first reference picture in the first list is determined according to w1=w / F; Another weight w0 corresponding to a second reference picture in the second list is determined according to w0=1-w1; w and F are integers, where w represents a first weighting parameter and F represents a precision factor. In some embodiments, F is 8.
[0019] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer, cause the computer to perform a method for video decoding. [Brief description of the drawings]
[0020] Further features, characteristics, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings.
[0021] [Figure 1] FIG. 2 is a schematic diagram of a current block and its surrounding spatial fusion candidates in one example.
[0022] [Diagram 2] FIG. 2 is a schematic diagram of a simplified block diagram of a communication system (200), according to one embodiment.
[0023] [Diagram 3] FIG. 3 is a schematic diagram of a simplified block diagram of a communication system (300), according to one embodiment.
[0024] [Figure 4] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment.
[0025] [Diagram 5] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment.
[0026] [Figure 6] 4 shows a block diagram of an encoder according to another embodiment.
[0027] [Figure 7] 4 shows a block diagram of a decoder according to another embodiment;
[0028] [Figure 8] FIG. 2 is a schematic diagram of spatial and temporal neighboring blocks of a current block according to one embodiment;
[0029] [Figure 9] FIG. 2 is a schematic diagram of spatial and temporal neighboring blocks of a current block according to one embodiment;
[0030] [Figure 10A] FIG. 1 is a schematic diagram of spatial neighboring blocks that can be used to determine predictive motion information of a current block using a sub-block-based temporal MV prediction method based on motion information of spatial neighboring blocks according to one embodiment.
[0031] [Figure 10B] FIG. 2 is a schematic diagram of spatially neighboring blocks selected for a sub-block based temporal MV prediction method according to one embodiment.
[0032] [Figure 11A] 1 is a flow chart outlining a process for constructing and updating a list of candidate motion information using a history-based MV prediction method according to one embodiment.
[0033] [Figure 11B] FIG. 1 is a schematic diagram of updating a list of motion information candidates using a history-based MV prediction method according to one embodiment.
[0034] [Figure 12] 1 is a schematic diagram of a current block and its spatial neighboring blocks at a CTU boundary according to one embodiment.
[0035] [Figure 13] 1 is a schematic diagram of a current block and its spatially affine neighboring blocks at a CTU boundary according to one embodiment.
[0036] [Figure 14] 14 shows a flowchart outlining a decoding process (1400) according to one embodiment of the present disclosure.
[0037] [Figure 15] 15 shows a flowchart outlining an encoding process (1500) according to one embodiment of the present disclosure.
[0038] [Figure 16] 1 is a schematic diagram of a computer system, according to one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0039] FIG. 2 illustrates a simplified block diagram of a communication system (200) according to an embodiment of the present invention. The communication system (200) includes a number of terminal devices that can communicate with each other, for example, via a network (250). For example, the communication system (200) includes a first pair of terminal devices (210) and (220) interconnected via the network (250). In the example of FIG. 2, the first pair of terminal devices (210) and (220) perform unidirectional transmission of data. For example, the terminal device (210) encodes video data (a stream of video pictures captured by the terminal device (210)) for transmission to another terminal device (220) via the network (250). The encoded video data can be transmitted in the form of one or more encoded video bitstreams. The terminal device (220) may receive the encoded video data from the network (250), decode the encoded video data to reconstruct the video pictures, and display the video pictures according to the reconstructed video data. Unidirectional data transmission may be common in media serving applications and the like.
[0040] In another example, the communication system (200) includes a second pair of terminal devices (230) and (240) performing a bidirectional transmission of encoded video data, such as may occur during a video conference. In the bidirectional transmission of data, the terminal devices (230) and (240) may encode video data (e.g., a stream of video pictures captured by the terminal devices) for transmission to the terminal devices (230) and (240) over the network (250). Each of the terminal devices (230) and (240) may receive the encoded video data transmitted by the other of the terminal devices (230) and (240), may decode the encoded video data to recover the video pictures, and may display the video pictures on an accessible display device in accordance with the recovered video data.
[0041] In the example of FIG. 2, the terminal devices (210), (220), (230), and (240) may be depicted as a server, a personal computer, and a smartphone, although the principles of the present disclosure are not so limited. The embodiments of the present disclosure may be applied to laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. The network (250) represents any number of networks that carry encoded video data between the terminal devices (210), (220), (230), and (240), including, for example, wired and / or wireless communication networks. The communication network 250 may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include electronic communication networks, local area networks, wide area networks, and / or the Internet. For purposes of the present discussion, the architecture and topology of the network (250) may not be important to the operation of the present disclosure, unless otherwise noted below.
[0042] 3 shows an arrangement of video encoders and video decoders in a streaming environment as an example of an application of the disclosed subject matter, which is equally applicable to, for example, video conferencing, digital TV, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc., other video-enabled applications, etc.
[0043] The streaming system may include a capture subsystem (313), which may include, for example, a video source (301) that generates an uncompressed video picture stream (302). In one example, the video picture stream (302) includes samples captured by a digital camera. The video picture stream (302) is shown in bold to emphasize its high data volume when compared to the encoded video data (304) (or encoded video bitstream) and may be processed by an electronic device (320) that includes a video encoder (303) coupled to the video source (301). The video encoder (303) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data (304) (or video bitstream (304)) is shown in thin to emphasize its low data volume when compared to the video picture stream (302) and may be stored on a streaming server for future use. One or more streaming client subsystems, such as the client subsystems (306) and (308) of FIG. 3, can access the streaming server (305) to retrieve copies (307) and (309) of the encoded video data (304). The client subsystem (306) may include a video decoder (310), for example, in an electronic device (330). The video decoder (310) decodes an input copy (307) of the encoded video data and generates an output video picture stream (311) that can be rendered on a display (312) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (304), (307), and (309) (e.g., a video bitstream) may be encoded according to a particular video encoding / compression standard. Examples of these standards include ITU-T Recommendation H.265. In one example, the video encoding standard under development is known informally as Versatile Video Coding (VVC). The disclosed subject matter may be used in the context of a VVC.
[0044] It is noted that electronic devices 320 and 330 may include other components (not shown). For example, electronic device 320 may include a video decoder (not shown) and electronic device 330 may also include a video encoder (not shown).
[0045] 4 shows a block diagram of a video decoder (410) according to one embodiment of the present disclosure. The video decoder (410) may be included in an electronic device (430). The electronic device (430) may include a receiver (431) (e.g., a receiving circuit). The video decoder (410) may be used in place of the video decoder (310) in the example of FIG. 3.
[0046] The receiver (431) may receive one or more coded video sequences to be encoded by the video decoder (410), one coded video sequence at a time, in the same or another embodiment, where the decoding of each coded video sequence is independent of the other coded video sequences. The coded video sequences may be received from a channel 401, which may be a hardware / software link to a storage device that stores the coded video data. The receiver 431 may receive the coded video data along with other data, for example, coded audio data and / or ancillary data streams, which may be forwarded to a respective using entity (not shown). The receiver 431 may separate the coded video sequences from the other data. To eliminate network jitter, a buffer memory (415) may be coupled between the receiver (431) and the entropy decoder / parser (420) (hereinafter "parser (420)"). In certain applications, the buffer memory (415) is part of the video decoder (410). Alternatively, it may be external to the video decoder (410) (not shown). In still other cases, there may be a buffer memory (not shown) external to the video decoder (410), e.g., to remove network jitter, in addition to another buffer memory (415) internal to the video decoder (410), e.g., to handle playout timing. When the receiver (431) is receiving data controllably from a store / forward device of sufficient bandwidth or from an isosynchronous network, the buffer memory (415) may not be needed or may be small. For use with best-effort packet networks such as the Internet, the buffer memory (415) may be needed, but may be relatively large and advantageously of moderate size, and may be implemented at least in part in an operating system or similar element (not shown) external to the video decoder (410).
[0047] The video decoder (410) may include a parser (420) to reconstruct symbols (421) from the coded video sequence. These symbol categories include information used to manage the operation of the video decoder (410) and information for controlling a rendering device such as a render device (412) (e.g., a display screen) that may not be an integral part of the electronic device (430) as shown in FIG. 4 but may be coupled to the electronic device (430). The control information for the rendering device may be in the form of a Supplemental Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (420) may parse / entropy decode the received code or video sequence. The coding of the coded video sequence may follow various principles, including arithmetic coding, with or without dependency on following a video coding technique or standard, etc. The parser (420) 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 subgroup. The subgroups may include Groups of Pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. The parser (420) may also extract information such as transform coefficients, quantization parameter values, motion vectors, etc. from the coded video sequence.
[0048] The parser (420) may perform an entropy decoding / parsing operation on the video sequence received from the buffer memory (415) to generate symbols (421).
[0049] The reconstruction of symbols 421 may include a number of different units, depending on the type of coded video picture or portion thereof (e.g., inter and intra pictures, inter and intra blocks) and other factors. Which units are included and how can be controlled by subgroup control information parsed from the coded video sequence by parser 420. The flow of such subgroup control information between parser 420 and the following units is not shown for clarity.
[0050] Beyond the functional blocks already mentioned, the video decoder (410) may be conceptually subdivided into a number of functional units, as described below. In an actual implementation operating under commercial constraints, many of these units may 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 following conceptual subdivision into functional units is adequate.
[0051] The first unit is a scalar / inverse transform unit 451. The scalar / inverse transform unit (451) receives quantized transform coefficients and control information, including which transform should be used, block size, quantization coefficients, quantization scaling matrices, etc., as symbols (421) from the parser (420). The scalar / inverse transform unit (451) can output blocks containing sample values that can be input to an aggregator (455).
[0052] In some examples, the output samples of the scaler / inverse transform unit (451) may belong 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 part of the current picture. Such prediction information may be provided by the intra-picture prediction unit 452. In some cases, the intra-picture prediction unit (452) generates a block of the same size and shape as the block being reconstructed using surrounding already reconstructed information fetched from the current picture buffer (458). The current picture buffer (458) may, for example, buffer the reconstructed current picture partially and / or completely. The aggregator (455) adds the prediction information generated by the intra-prediction unit (452) to the output sample information provided by the scaler / inverse transform unit (451) on a sample-by-sample basis.
[0053] In other cases, the output samples of the scaler / inverse transform unit (451) may relate to an inter-coded, possibly motion-compensated block. In such cases, the motion compensated prediction unit (453) may access the reference picture memory (457) to fetch samples used for prediction. After motion compensating the fetched samples according to the symbols (421) associated with the block, these samples may be added by the aggregator (455) to the output of the scaler / inverse transform unit (451) to generate output sample information (in this case referred to as residual samples or residual signals). The addresses in the reference picture memory (457) from which the motion compensated prediction unit (453) fetches prediction samples may be controlled by the available motion vectors of the motion compensated prediction unit (453), e.g., in the form of symbols (421) that may have X, Y, and reference picture components. Motion compensation may include interpolation of sample values fetched from the reference picture memory (457) when sub-sample accurate motion vectors are in use, motion vector prediction mechanisms, etc.
[0054] The output samples of the aggregator (455) may be subjected to various loop filtering techniques in a loop filter unit (456). The video compression techniques are controlled by parameters contained in the coded video sequence (also called a coded video bitstream) and made available to the loop filter unit (456) as symbols (421) from the parser (420), but may include in-loop filter techniques that are also responsive to meta-information obtained during the decoding of previous portions (in the decoding order) of the coded pictures or coded video sequence, and that may also be responsive to previously reconstructed and loop filtered sample values.
[0055] The output of the loop filter unit (456) may be a sample stream that can be output to a render device (412) and stored in a reference picture memory (457) for use in future inter-picture prediction.
[0056] Once a particular coded picture has been fully reconstructed, it can be used as a reference picture for future prediction. For example, once a coded picture corresponding to a current picture has been fully reconstructed and the coded picture has been identified as a reference picture (e.g., by the parser (420)), the current picture buffer (458) can become part of the reference picture memory (457), and a fresh current picture buffer can be reallocated before beginning reconstruction of a subsequent coded picture.
[0057] The video decoder (410) may perform decoding operations according to a given video compression technique of a standard, such as ITU-T Rec. H.265. The encoded video sequence may comply with a syntax specified by the video compression technique or standard in use, in the sense that the encoded video sequence complies with both the video compression technique or standard and a profile documented in the video compression technique or standard. In particular, a profile may select certain tools from the total set of tools available in the video compression technique or standard as tools that are only available under the profile. Also, a requirement for compliance may be that the complexity of the encoded video sequence is within the limits defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples / second), 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 HDR buffer management signaled in the encoded video sequence.
[0058] In one embodiment, the receiver 431 may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence. The additional data may be used by the video decoder 410 to correctly 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 signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0059] 5 shows a block diagram of a video encoder (503) according to one embodiment of the present disclosure. The video encoder (503) is included in an electronic device (520). The electronic device (520) includes a transmitter (540) (e.g., a transmission circuit). The video encoder (503) can be used in place of the video encoder (303) in the example of FIG. 3.
[0060] The video encoder (503) may receive video samples from a video source (501) (which in the example of FIG. 5 is not part of the electronic device (520)) that may capture video images to be encoded by the video encoder (503). In another example, the video source (501) is part of the electronic device (520).
[0061] The video source (501) may provide a source video sequence to be encoded by the video encoder (503) in the form of a digital video sample stream of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 YCrCb, RGB, ...), and any suitable sampling structure (e.g., YCrCb 4:2:0, YCrCb 4:4:4). In a media presentation system, the video source 501 may be a storage device that stores previously prepared video. In a video conferencing system, the video source 501 may be a camera that captures local image information as a video sequence. The video data may be provided as a number of individual pictures that, when viewed in succession, give the appearance of motion. The pictures themselves may be organized as a spatial array of pixels. Each pixel may contain one or more samples, depending on the sampling structure, color space, etc., being used. Those skilled in the art will readily appreciate the relationship between pixels and samples. The following description focuses on samples.
[0062] According to one embodiment, the video encoder (503) may encode and compress pictures of a source video sequence into a coded video sequence (543) in real-time or under any other time constraint required by the application. Enforcing an appropriate coding rate is one function of the controller (550). In some embodiments, the controller (550) controls and is operatively coupled to other functional units, which are described below, and are not shown for clarity. Parameters set by the controller (550) may include rate control related parameters (picture skip, quantizer, lambda value for rate distortion optimization techniques, ...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (550) may be configured to have other appropriate functions associated with the video encoder (503) optimized for a particular system design.
[0063] In some embodiments, the video encoder (503) is configured to operate in an encoding loop. As a very simplified description, in one example, the encoding loop may include a source coder (530) (e.g., responsible for generating symbols, such as a symbol stream, based on an input picture to be encoded and reference pictures) and a (local) decoder (533) built into the video encoder (503). The decoder (533) reconstructs the symbols to generate sample data in a manner similar to that generated by a (remote) decoder (when any compression between the symbols and the encoded bit stream is lossless in the video compression techniques considered in the disclosed subject matter). The reconstructed sample stream (sample data) is input to a reference picture memory (534). When the decoding of the symbol stream produces bit-accurate results independent of the decoder location (local or remote), the contents of the reference picture memory (534) are also bit-accurate between the local and remote encoders. In other words, the prediction part of the encoder "sees" exactly the same sample values as the reference picture samples that the decoder "sees" when using prediction during decoding. This basic principle of reference picture synchrony (and the resulting drift if synchrony cannot be maintained, e.g., due to channel errors) is used in several related techniques as well.
[0064] The operation of the "local" decoder (533) may be the same as that of a "remote" decoder, such as the video decoder (410) detailed above in connection with Figure 4. Referring briefly also to Figure 4, however, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder (545) and parser (420) may be lossless, the entropy decoding portion of the video decoder (410), including the buffer memory (415), and the parser (420), may not be fully implemented in the local decoder (533).
[0065] An observation to be made at this point is that any decoder techniques, other than parsing / entropy decoding, present in the decoder must also be present in substantially the same functional form as in the corresponding encoder. For this reason, the subject matter of the disclosure focuses on the decoder operation. A description of the encoder techniques can be omitted, as they are the inverse of the decoder techniques, which are described generically. Only in certain areas are more detailed descriptions necessary and are provided below.
[0066] In operation, in some examples, the source coder (530) may perform motion-compensated predictive coding, which predictively codes an input picture with reference to one or more previously coded pictures from a video sequence designated as "reference pictures." In this method, the coding engine (532) codes differences between pixel blocks of the input picture and pixel blocks of reference pictures that may be selected as prediction references for the input picture.
[0067] The local video decoder (533) may decode the encoded video data of pictures that may be designated as reference pictures based on the symbols generated by the source coder (530). The operation of the encoding engine 532 may advantageously be lossy. When the encoded video data may be decoded in a video decoder (not shown in FIG. 5), the reconstructed video sequence may typically be a copy of the source video sequence with some errors. The local video decoder (533) may replicate the decoding process that may be performed by the video decoder on the reference pictures, resulting in reconstructed reference pictures to be stored in the reference picture cache (534). In this way, the video encoder (503) may store copies of reconstructed reference pictures that have common content with the reconstructed reference pictures that would be obtained by the far-end video decoder (in the absence of transmission errors).
[0068] The predictor (535) may perform a prediction search for the coding engine (532). That is, for a new picture to be coded, the predictor (535) may search the reference picture memory (534) for sample data (such as candidate reference pixel blocks) or specific metadata such as reference picture motion vectors, block shapes, etc. that may serve as suitable prediction references for the new picture. The predictor (535) may operate on a sample block-pixel block basis to find a suitable prediction reference. In some examples, the input picture may have prediction references derived from multiple reference pictures stored in the reference picture memory 534, as determined by the search results obtained by the predictor 535.
[0069] The control unit (550) may manage the encoding operations of the source coder (530), including, for example, setting parameters and subgroup parameters used for encoding the video data.
[0070] The output of all the aforementioned functional units may undergo entropy coding in an entropy coder (545), which converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques such as Huffman coding, variable length coding, arithmetic coding, etc.
[0071] The transmitter (540) may buffer the encoded video sequence generated by the entropy coder (545) to prepare it for transmission over a communication channel (560), which may be a hardware / software link to a storage device that may store the encoded video data. The transmitter 540 may merge the encoded video data from the video coder 503 with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (sources not shown).
[0072] A control unit (550) may manage the operation of the video encoder (503). During encoding, the control unit 550 may assign a particular encoding picture type to each encoded picture, which may affect the encoding technique that may be applied to the respective picture. For example, pictures may often be assigned as one of the following picture types:
[0073] An intra picture (I-picture) may be a picture that can be coded and decoded without using any other picture in a sequence as a source of prediction. Some video codecs allow different kinds of intra pictures, including, for example, Independent Decoder Refresh (IDR) pictures. Those skilled in the art will recognize the variations of I-pictures and their respective applications and characteristics.
[0074] A predictive picture (P-picture) may be a picture that can be encoded and decoded using intra- or inter-prediction, in most cases using one motion vector and reference index to predict the sample values of each block.
[0075] A bidirectionally predicted picture (B-picture) may be a picture that 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, a multi-predictive picture can use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0076] A source picture may commonly be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples, respectively) and coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks determined by the coding assignment applied to the respective picture of the block. For example, blocks of I pictures may be non-predictively coded, or they may be predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). Pixel blocks of P pictures may be predictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Blocks of B pictures may be predictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.
[0077] The video decoder (503) may perform encoding operations according to a given video encoding technique or standard, such as ITU-T Rec. H.265. In its operations, the video encoder (503) may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancy in the input video sequence. The encoded video data may therefore conform to a syntax specified by the video encoding technique or standard being used.
[0078] In one embodiment, the transmitter 540 may transmit additional data along with the coded video. The source coder (530) may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other types of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.
[0079] A video may be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (sometimes 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 being coded / decoded is called a current picture and 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 can 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.
[0080] In some embodiments, bi-prediction techniques can be used in inter-picture prediction. According to bi-prediction techniques, two reference pictures are used, such as a first reference picture and a second reference picture, both of which are before the current picture in the video in decoding order (but may be in the past and future, respectively, in display order). A block in the current picture can be coded with a first motion vector that points to a first reference block in the first reference picture and a second motion vector that points to a second reference block in the second reference picture. A block can be predicted by a combination of the first reference block and the second reference block.
[0081] Furthermore, to improve coding efficiency, a blended mode technique can be used in inter-picture prediction.
[0082] According to some embodiments of the present disclosure, predictions such as inter-picture prediction and intra-picture prediction are performed in units of blocks. For example, according to the HEVC standard, pictures in a video picture sequence are partitioned into coding tree units (CTUs) for compression. The CTUs in a picture have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. Typically, a CTU includes three coding tree blocks (CTBs), i.e., one luma CTB and two chroma CTBs. Each CTU can be recursively quad-tree partitioned into one or more coding units (CUs). For example, a CTU of 64×64 pixels can be partitioned into one CU of 64×64 pixels, or four CUs of 32×32 pixels, or 16 CUs of 16×16 pixels. In one example, each CU is analyzed to determine a prediction type of the CU, such as an inter prediction type or an intra prediction type. A CU is divided into one or more prediction units (PUs) depending on temporal and / or spatial predictability. Typically, each PU includes a luma prediction block (PB) and two chroma PBs. In one embodiment, prediction operations in coding (encoding / decoding) are performed in units of prediction blocks. Using a luma prediction block as an example of a prediction block, the prediction block includes a matrix of values (e.g., luma values) for pixels such as 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, and so on.
[0083] 6 shows a diagram of a video encoder (603) according to another embodiment of the present disclosure. The video encoder (603) is configured to receive a processed block of sample values (e.g., a predictive block) in a current video picture in a video picture sequence and to encode the processed block into a coded picture that is part of the coded video sequence. In one example, the video encoder (603) is used in place of the video encoder (303) in the example of FIG. 3.
[0084] In an HEVC example, the video encoder (603) receives a matrix of sample values for a processing block, such as a prediction block, such as 8×8 samples. The video encoder (603) determines whether the processing block is best coded using intra mode, inter mode, or bi-prediction mode, for example using rate-distortion optimization. When the processing block is coded in intra mode, the video encoder (603) may use intra prediction techniques to code the processing block into a coded picture. When the processing block is coded in inter mode or bi-prediction mode, the video encoder (603) may use inter prediction or bi-prediction techniques, respectively, to code the processing block into a coded picture. In certain video coding techniques, the fusion mode may be an inter picture prediction sub-mode in which motion vectors are obtained from one or more motion vector predictors without a coded motion vector component in the predictor gear. In certain other video coding techniques, there may be a motion vector component applicable to the current block. In one example, the video encoder (603) includes other components, such as a mode decision module (not shown), to determine the mode of the processing block.
[0085] In the example of FIG. 6, the video encoder (603) includes an inter-encoder (630), an intra-encoder (622), a residual calculator (623), a switch (626), a residual encoder (624), a general control unit (621), and an entropy encoder (625) together as shown in FIG.
[0086] The inter-encoder (630) is configured to receive samples of a current block (e.g., a block being processed), compare the block to one or more reference blocks in a reference picture (e.g., blocks in previous and subsequent pictures), generate inter-prediction information (e.g., an explanation of redundant information due to inter-coding techniques, motion vectors, blending mode information), and calculate an inter-prediction result (e.g., a prediction block) based on the inter-prediction information using any suitable technique. In some examples, the reference picture is a decoded reference picture that is decoded based on the coded video information.
[0087] The intra encoder (622) is configured to receive samples of a current block (e.g., a block being processed), in some cases compare the block to already encoded blocks in a sample picture, and generate transformed and quantized coefficients, and in some cases also intra prediction information (e.g., intra prediction direction information according to one or more intra encoding techniques). In one example, the intra encoder (622) also calculates intra prediction results (e.g., predicted blocks) based on the intra prediction information and reference blocks in the same picture.
[0088] The general control unit (621) is configured to determine general control data and control other components of the video encoder (603) based on the general control data. In one example, the general control unit (621) determines the mode of the block and provides a control signal to the switch (626) based on the mode. For example, when the mode is an intra mode, the general control unit (621) controls the switch (626) to select an intra mode result for use by the residual calculator (623) and controls the entropy encoder (625) to select intra prediction information and include the intra prediction information in the bitstream, and when the mode is an inter mode, the general control unit (621) controls the switch (626) to select an inter prediction result for use by the residual calculator (623) and controls the entropy encoder (625) to select inter prediction information and include the inter prediction information in the bitstream.
[0089] The residual calculator (623) is configured to calculate a difference (residual data) between the received block and a selected prediction result from the intra-encoder (622) or the inter-encoder (630). The residual encoder (624) is configured to operate on the residual data to encode the residual data and generate transform coefficients. In one example, the residual encoder (624) is configured to transform the residual data from the spatial domain to the frequency domain and generate transform coefficients. The transform coefficients are then subjected to a quantization process to obtain quantized transform coefficients. In various embodiments, the video encoder (603) also includes a residual decoder (628). The residual decoder (628) is configured to perform an inverse transform and generate decoded residual data. The decoded residual data can be suitably used by the intra-encoder (622) and the inter-encoder (630). For example, the inter-encoder (630) can generate decoded blocks based on the decoded residual data and the inter-prediction information, and the intra-encoder (622) can generate decoded blocks based on the decoded residual data and the intra-prediction information. The decoded blocks are appropriately processed to generate a decoded picture, which in some examples may be buffered in a memory circuit (not shown) and used as a reference picture.
[0090] The entropy encoder (625) is configured to format the bitstream to include the coded block. The entropy encoder (625) is configured to include various information in accordance with an appropriate standard, such as the HEVC standard. In one example, the entropy encoder (625) is configured to include in the bitstream general control data, selected prediction information (e.g., intra-prediction information or inter-prediction information), residual information, and other appropriate information. It is noted that, according to the disclosed subject matter, when encoding a block in a merged sub-mode of either the inter-mode or the bi-prediction mode, the residual information is not present.
[0091] 7 shows a diagram of a video encoder (710) according to another embodiment of the present disclosure. The video decoder (710) is configured to receive coded pictures that are part of a coded video sequence and to decode the coded pictures to generate reconstructed pictures. In one example, the video decoder (710) is used in place of the video decoder (310) in the example of FIG. 3.
[0092] In the example of FIG. 7, the video decoder (710) includes an entropy decoder (771), an inter decoder (780), a residual decoder (773), a reconstruction module (774), and an intra decoder (772) together as shown in FIG.
[0093] The entropy decoder (771) may be configured to reconstruct, from the coded picture, certain symbols that represent generated syntax elements of the coded picture. Such symbols may include, for example, prediction information (e.g., intra-mode, inter-mode, bi-directional mode, blended sub-mode or the latter two of another sub-mode) that can identify the coded mode of the block, certain samples or metadata used for prediction by the intra decoder (772) or the inter decoder (780), respectively, residual information, for example in the form of quantized transform coefficients, etc. In one example, when the prediction mode is an inter or bi-directional prediction mode, the inter prediction information is provided to the inter decoder (780), and when the prediction type is an intra prediction type, the intra prediction information is provided to the intra decoder (772). The residual information is dequantized and provided to the residual decoder (773).
[0094] The inter decoder (780) is configured to receive the inter prediction information and to generate inter prediction results based on the inter prediction information.
[0095] The intra decoder (772) is configured to receive the intra prediction information and to generate a prediction result based on the intra prediction information.
[0096] The residual decoder (773) is configured to perform inverse quantization to extract inverse quantized transform coefficients, and process the inverse quantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (773) may also require certain control information (to include Quantizer Parameters (QP)). This information may be provided by the entropy decoder (771) (data path not shown since this is only low capacity control information).
[0097] The reconstruction module (774) is configured to combine, in the spatial domain, the residual as output by the residual decoder (773) and the prediction result (possibly as output by an inter- or intra-prediction module) to form a reconstructed block, which may be part of a reconstructed picture, which in turn may be part of the reconstructed video. Other suitable operations, such as a deblocking operation, may be performed to improve visual quality.
[0098] It is noted that the video encoders (303), (503), and (603) and the video decoders (310), (410), and (710) may be implemented using any suitable technology. In one embodiment, the video encoders (303), (503), and (603) and the video decoders (310), (410), and (710) may be implemented using one or more integrated circuits. In another embodiment, the video encoders (303), (503), and (503) and the video decoders (310), (410), and (710) may be implemented using one or more processors executing software instructions.
[0099] 8 is a schematic diagram of spatial and temporal neighboring blocks of a current block (801) according to one embodiment. A list of motion information candidates of the current block (801) can be constructed according to a normal merging mode based on the motion information of one or more of the spatial and / or temporal neighboring blocks. The motion information candidates in the list of motion information candidates constructed according to the normal merging mode are also referred to as normal merging candidates in this disclosure.
[0100] For example, in HEVC, a merge mode for inter-picture prediction is introduced. When a merge flag (including a skip flag) carried in the encoded video bitstream is signaled as true, a merge index may also be signaled to indicate which candidate in a list of motion information candidates (also called a merge candidate list) constructed with the merge mode should be used to indicate the motion vector of the current block. At the decoder, the merge candidate list is constructed based on the motion information (i.e., candidates) of the spatial and / or temporal neighboring blocks of the current block. Such a merge mode is also referred to as a normal merge mode in this disclosure simply to be distinguishable from the affine merge mode further described with reference to FIG. 9.
[0101] Referring to FIG. 8, a motion vector (for unidirectional prediction) or a motion vector (for bidirectional prediction) of a current block (801) may be predicted based on a list of motion information candidates constructed using a normal merge mode. The list of motion information candidates may be derived based on motion information of neighboring blocks, such as spatial neighboring blocks denoted as A0, A1, B0, B1, and B2 (802-806, respectively) and / or temporal neighboring blocks denoted as C0 and C1 (812 and 813, respectively). In some examples, the spatial neighboring blocks A0, A1, B0, B1, and B2 and the current block (801) belong to the same picture. In some examples, the temporal neighboring blocks C0 and C1 belong to a reference picture. Block C0 corresponds to an outer position of the current block (801) and is adjacent to the lower right corner of the current block (801). Block C1 may correspond to a position on the lower right side of the center of the block (801) and is adjacent to it.
[0102] In some examples, to construct a list of motion information candidates using normal merge mode, neighboring blocks A1, B1, B0, A0, and B2 are checked in order. When any of the checked blocks contains favorable motion information (e.g., a valid candidate), the valid candidate can be added to the list of motion information candidates. In order to avoid including duplicate motion information candidates in the list, a pruning operation can be performed.
[0103] The temporal neighboring blocks may be checked to add temporal motion information to the list. The temporal neighboring blocks may be checked after the spatial neighboring blocks. In some examples, the motion information of block C0 is added to the list as a temporal motion information candidate if available. If block C0 is coded in inter mode or is not available, the motion information of block C1 can be used instead as a temporal motion information candidate.
[0104] In some examples, after checking and / or adding the spatial and temporal motion information candidates to the list of motion information candidates, a zero motion vector may be added to the list.
[0105] FIG. 9 is a schematic diagram of spatial and temporal neighboring blocks of a current block (901) according to one embodiment. A list of motion information candidates for the current block (901) can be constructed using an affine merge mode based on the motion information of one or more of the spatial and / or temporal neighboring blocks. FIG. 9 shows the current block (901), its spatial neighbors denoted as A0, A1, A2, B1, B2, B3 (902, 903, 907, 904, 905, 906, 908, respectively), and a temporal neighboring block denoted as C0 (912). In some examples, the spatial neighboring blocks A0, A1, A2, B0, B1, B2, and B3 and the current block (901) belong to the same picture. In some examples, the temporal neighboring block C0 belongs to a reference picture, corresponds to a position outside the current block (901), and is adjacent to the bottom right corner of the current block (901).
[0106] In some examples, the motion vectors of the current block (901) and / or the sub-blocks of the current block can be derived using an affine model (e.g., a six-parameter affine model or a four-parameter affine model). In some examples, the affine model has six parameters to describe the motion vectors of the block (e.g., a six-parameter affine model). In one example, the six parameters of an affine-coded block can be represented by three motion vectors (also called three control point motion vectors) at three different positions of the block (e.g., control points CP0, CP1, and CP2 at the top-left, top-right, and bottom-left corners of FIG. 9). In another example, a simplified affine model uses four parameters to describe the motion information of an affine-coded block. These can be represented by two motion vectors (also called two control point motion vectors) at two different positions of the block (e.g., control points CP0 and CP1 at the top-left and top-right corners of FIG. 9).
[0107] The list of motion information candidates may be constructed using an affine merge mode (also referred to as an affine merge candidate list). The motion information candidates in the list of motion information candidates constructed according to the affine merge mode are also referred to as affine merge candidates in this disclosure. In some examples, the affine merge mode may be applied when the current block has a width and height of 8 samples or more. According to the affine merge mode, a control point motion vector (CPMV) of the current block may be generated based on the motion information of spatially neighboring blocks. In some examples, the list of motion information candidates may include up to 5 CPMV candidates, and an index may be signaled to indicate which CPMV candidate should be used for the current block.
[0108] In some embodiments, the affine merge candidate list may have three types of CPMV candidates, including inherited affine candidates, constituent affine candidates, and zero MV. The inherited affine candidates may be derived by estimation from the CPMVs of neighboring blocks. The constituent affine candidates may be derived using the translational MVs of neighboring blocks.
[0109] In the VTM example, there are at most two inherited affine candidates, which are derived from the corresponding affine motion models of neighboring blocks, including one from the left neighboring blocks (A0 and A1) and one from the top neighboring blocks (B0, B1, B2). For the candidate from the left, the neighboring blocks A0 and A1 are checked in order, and the first available inherited affine candidate from the neighboring blocks A0 and A1 is used as the inherited affine candidate from the left. For the candidate from above, the neighboring blocks B0, B1, and B2 are checked in order, and the first available inherited affine candidate from the neighboring blocks B0, B1, and B2 is used as the inherited affine candidate from above. In some examples, no pruning check is performed between two inherited affine candidates.
[0110] Once a neighboring affine block is identified, the corresponding successor affine candidate to be added to the affine merge list of the current CU can be derived from the control point motion vector of the neighboring affine block. In the example of FIG. 9, if the neighboring block A1 is coded according to the affine mode, the upper left corner of block A1 (control point CP0 A1 ), upper right corner (control point CP1 A1 ), and the lower left corner (control point CP2 A1 When block A1 is coded using a four-parameter affine model, the two CPMVs as successor affine candidates for the current block (901) are the control point CP0 A1 and control point CP1 A1 When block A1 is coded using a six-parameter affine model, the three CPMVs as successive affine candidates of the current block (901) can be calculated according to the motion vectors of control points CP0, CP1, CP2, CP3, CP4, CP5, CP6, CP7, CP8, CP9, CP10, CP11, CP12, CP13, CP14, CP15, CP16, CP17, CP18, CP19, CP111, CP112, CP193, CP194, CP195, CP196, CP197, CP198, CP199, CP20, CP201, CP202, CP203, CP204, CP205, CP206, CP207, CP208, CP209, A1 , control point CP1 A1and control point CP2 A1 The motion vectors can be calculated according to the
[0111] Furthermore, the configuration affine candidates can be derived by combining the neighboring translational motion information of each control point. The motion information of the control points CP0, CP1, CP2 is derived from the designated spatial neighboring blocks A0, A1, A2, B0, B1, B2, and B3.
[0112] For example, CPMV k (k=1,2,3,4) represents the motion vector of the kth control point, where CPMV1 corresponds to the control point CP0, CPMV2 corresponds to the control point CP1, CPMV3 corresponds to the control point CP2, and CPMV4 corresponds to the temporal control point based on the temporal neighboring block C0. For CPMV1, the neighboring blocks B2, B3, and A2 can be checked in order, and the first available motion vector from the neighboring blocks B2, B3, and A2 is used as CPMV1. For CPMV2, the neighboring blocks B1 and B0 can be checked in order, and the first available motion vector from the neighboring blocks B1 and B0 is used as CPMV2. For CPMV3, the neighboring blocks A1 and A0 can be checked in order, and the first available motion vector from the neighboring blocks A1 and A0 is used as CPMV3. Furthermore, the motion vector of the temporal neighboring block C0 can be used as CPMV4 if available.
[0113] After the four control points CP0, CP1, CP2 and the temporal control points CPMV1, CPMV2, CPMV3, CPMV4 are obtained, an affine merge candidate list can be constructed to include affine merge candidates arranged in the following order: {CPMV1, CPMV2, CPMV3}, {CPMV1, CPMV2, CPMV4}, {CPMV1, CPMV3, CPMV4}, {CPMV2, CPMV3, CPMV4}, {CPMV1, CPMV2}, and {CPMV1, CPMV3}. Any combination of three CPMVs can form a six-parameter affine merge candidate, and any combination of two CPMVs can form a four-parameter affine merge candidate. In some examples, to avoid motion scaling processing, if the reference indexes of a group of control points are different, the corresponding combination of CPMVs can be discarded.
[0114] 10A is a schematic diagram of spatial neighboring blocks that can be used to determine predicted motion information of a current block (1011) using a sub-block-based temporal MV prediction method based on motion information of spatial neighboring blocks according to one embodiment. FIG. 10A shows a current block (1011) and its spatial neighboring blocks denoted as A0, A1, B0, and B1 (1012, 1013, 1014, and 1015, respectively). In some examples, the spatial neighboring blocks A0, A1, B0, and B1 and the current block (1011) belong to the same picture.
[0115] 10B is a schematic diagram of determining motion information for a sub-block of a current block (1011) using a sub-block-based temporal MV prediction method based on a selected spatial neighboring block, such as block A1 in this non-limiting example, according to one embodiment. In this example, the current block (1011) is in a current picture (1010), and a reference block (1061) is in a reference picture (1060) and can be identified based on a motion shift (or displacement) between the current block (1011) and the reference block (1061) indicated by a motion vector (1022).
[0116] In some embodiments, similar to temporal motion vector prediction (TMVP) in HEVC, sub-block based temporal MV prediction (SbTMVP) uses motion information in various reference sub-blocks in a reference picture relative to a current block in a current picture. In some embodiments, the same reference picture used by TMVP can be used for SbTVMP. In some embodiments, TMVP predicts motion information at a CU level, while SbTVMP predicts motion at a sub-CU level. In some embodiments, TMVP uses a temporal motion vector from a co-located block in a reference picture with a corresponding location adjacent to the lower right corner or center of the current block, and SbTVMP uses a temporal motion vector from a reference block that can be identified by performing a motion shift based on a motion vector from one of the spatial neighboring blocks of the current block.
[0117] For example, as shown in Figure 10A, neighboring blocks A1, B1, B0, and A0 can be checked sequentially in the SbTVMP process. As soon as the first spatial neighboring block with a motion vector that uses the reference picture (1060) as its reference picture is identified, such as block A1 with a motion vector (1022) pointing to reference block AR1 in the reference picture (1060), this motion vector (1022) can be used to perform the motion shift. When such a motion vector is not available from the spatial neighboring blocks A1, B1, B0, and A0, the motion shift is set to (0,0).
[0118] After determining the motion shift, the reference block (1061) can be identified based on the position of the current block (1011) and the determined motion shift. In FIG. 10B, the reference block (1061) can be further divided into 16 sub-blocks by reference motion information MRa-MRp. In some examples, the reference motion information of each sub-block in the reference block (1061) can be determined based on a minimum motion grid covering a central sample of such sub-block. The motion information can include a motion vector and a corresponding reference index. The current block (1011) can be further divided into 16 sub-blocks, and the motion information MVa-MVp of the sub-blocks in the current block (1011) can be derived from the reference motion information MRa-MRp in a manner similar to TMVP processing, in some examples by temporal scaling.
[0119] The sub-block size used in the SbTVMP process may be fixed (or predetermined) or signaled. In some examples, the sub-block size used in the SbTVMP process may be 8×8 samples. In some examples, the SbTVMP process is only applicable to blocks having widths and heights equal to or greater than a fixed or signaled size, e.g., 8 pixels.
[0120] In the VTM example, a combined sub-block based merge list including SbTVMP candidates and affine merge candidates is used to signal the sub-block based merge mode. The SbTVMP mode can be enabled or disabled by a sequence parameter set (SPS) flag. In some examples, when the SbTMVP mode is enabled, the SbTMVP candidate is added as the first entry in the list of sub-block based merge candidates, followed by the affine merge candidates. In some embodiments, the maximum allowed size of the sub-block based merge list is set to 5. However, other sizes may be used in other embodiments.
[0121] In some embodiments, the coding logic for the additional SbTMVP merging candidates is the same as for other merging candidates: for each block in a P or B slice, an additional rate-distortion check can be performed to decide whether to use the SbTMVP candidate or not.
[0122] 11A is a flow chart outlining a process (1100) for constructing and updating a list of motion information candidates using a history based MV prediction (HMVP) method according to one embodiment. Motion information candidates in the list of motion information candidates constructed according to the MHVP method are also referred to as HMVP candidates in this disclosure.
[0123] In some embodiments, a list of motion information candidates using the HMVP method (also called a history list) can be constructed and updated during the encoding or decoding process. The history list can be emptied when a new slice starts. In some embodiments, regardless of whether there is an inter-coded non-affine block that has just been encoded or decoded, the related motion information can be added as a new HMVP candidate to the last entry of the history list. Thus, before processing (encoding or decoding) the current block, the history list with the HMVP candidates can be loaded (S1112). The current block can be encoded or decoded using the HMVP candidates in the history list (S1114). Later, the history list can be updated with the motion information for encoding or decoding the current block (S1116).
[0124] FIG. 11B is a schematic diagram of updating a list of motion information candidates using a history-based MV prediction method according to one embodiment. FIG. 11B shows a history list with size L, where each candidate in the list can be identified by an index ranging from 0 to L-1, where L is an integer equal to or greater than 0. Before encoding or decoding a current block, the history list (1120) is updated with L candidates: HMVP1, HMVP2, ..., HMVP m , ..., HMVP L-2 , and HMVP L-1Here, m is an integer ranging from 0 to L. After encoding or decoding the current block, the new entry HMVP c is added to the history list.
[0125] In the VTM example, the size of the history list can be set to 6, which means that up to 6 HMVP candidates can be added to the history list. c When inserting a new HMVP into the history list, a constrained first-in-first-out (FIFO) rule can be used. Here, a redundancy check is first applied to find out whether there are any redundant HMVPs in the history list. If no redundant HMVPs are found, the first HMVP candidate (HMVP1 in the example of FIG. 11B, with index=0) is removed from the list, and all other HMVP candidates are subsequently moved forward, e.g., their indexes are decreased by 1. The new HMVP c The candidate can be added to the last entry of the list (e.g., with index=L-1 in FIG. 11B) as shown in the resulting list (1130). On the other hand, if a redundant HMVP is found (e.g., HMVP2 in FIG. 11B), the redundant HMVP in the history list is removed from the list and all subsequent HMVP candidates are moved forward, e.g., their indexes are decreased by 1. The new HMVP c The candidate can be added to the last entry of the list (eg, having index=L-1 in FIG. 11B) as shown in the resulting list (1140).
[0126] In some examples, HMVP candidates may be used in the merge candidate list construction process. For example, the most recent HMVP candidate in the list may be checked in order and inserted into the candidate list after the TMVP candidate. In some embodiments, pruning may be applied to HMVP candidates for spatial or temporal merge candidates, but not to sub-block motion candidates (i.e., SbTMVP candidates).
[0127] In some embodiments, to reduce the number of pruning operations, one or more of the following rules can then be: (a) The number of HMPV candidates to be checked, denoted by M, is set as follows: M=(N<=4)?L:(8-N), where N denotes the number of available sub-block merging candidates and L denotes the number of available HMVP candidates in the history list. (b) Additionally, the process of constructing a merge candidate list from the HMVP list may be terminated when the total number of available merge candidates is one less than the maximum number of merge candidates signaled. (c) Furthermore, the number of pairs for deriving joint two-way prediction merge candidates can be reduced from 12 to 6.
[0128] In some embodiments, HMVP candidates can be used in the AMVP candidate list construction process. The motion vectors of the most recent K HMVP candidates in the history list can be added to the AMVP candidates after the TMVP candidates. In some examples, only HMVPs with the same reference picture as the AMVP target reference picture should be added to the AMVP candidate list. Pruning can be applied to the HMVP candidates. In some examples, K is set to 4 and the AMVP list size is kept unchanged, e.g., equal to 2.
[0129] In some examples, the list of motion information candidates can be constructed by the various list construction processes described above and / or any other applicable list construction process. After the list of motion information candidates is constructed, an additional average reference motion vector can be determined by pairwise averaging the reference motion information already determined according to a predefined pairing.
[0130] In some examples, there may be at most four reference motion vectors determined to be included in the list of reference motion candidates for encoding the current block. These four reference motion vectors may be arranged in the list in association with an index (e.g., 0, 1, 2, and 3) indicating the order of the reference motion vectors in the list. An additional average reference motion vector may be determined based on a pair defined as, for example, {(0,1), (0,2), (1,2), (0,3), (1,3), (2,3)}, respectively. In some examples, if both reference motion vectors of a given pair are available in the list of reference motion vectors, these two reference motion vectors can still be averaged even when they point to different reference pictures.
[0131] Furthermore, current picture referencing (CPR) is sometimes referred to as intra block copy (IBC), where the motion vector of the current block represents an already reconstructed sample in the current picture. CPR is supported in HEVC screen content coding extension (HEVC SCC). CPR coded blocks can be signaled as inter coded blocks. The luma motion (or block) vectors of CPR coded blocks can be provided with integer precision. The chroma motion vectors can be clipped to integer precision as well. When combined with AMVR, CPR modes can switch between 1 pixel (pel) and 4 pixel (pel) motion vector precision. The current picture can be placed at the end of the reference picture list L0. To reduce memory consumption and decoder complexity, CPR in the VTM example may allow referencing only the reconstructed part of the current CTU. This reduction allows the CPR mode to be implemented using local on-chip memory for hardware implementation.
[0132] At the encoder side, hash-based motion estimation is performed for CPR. The encoder can perform a rate-distortion check for blocks with width or height no longer than 16 luma samples. In non-merge mode, the block vector search can be performed first using a hash-based search. If the hash search does not return a valid candidate, a local search based on block matching can be performed.
[0133] In some examples, when performing a hash-based search, the hash key match (32-bit CRC) between the current block and the reference block can be extended to all allowed block sizes. The hash key calculation for all locations in the current picture can be based on 4×4 sub-blocks. For larger sized current blocks, when the hash keys of all 4×4 sub-blocks match the hash keys at the corresponding reference locations, the hash key can be determined to match the hash key of the reference block. In some examples, if the hash keys of multiple reference blocks are found to match the hash key of the current block, the cost of the block vector of each matched reference can be calculated and the one with the smallest cost can be selected.
[0134] In some examples, when performing a block match search, the search range can be set to R samples to the left above the current block in the current CTU. At the start of the CTU, the value of R can be initially set to 128 if no temporal reference pictures exist, or initially set to 64 if at least one temporal reference picture exists. The hash hit rate can be defined as the proportion of samples in the CTU that have a match using a hash-based search. In some embodiments, while encoding the current CTU, R can be reduced by half if the hash hit rate is lower than 5%.
[0135] In some applications, for a block that is reconstructed using bi-directional prediction, a generalized bi-prediction (GBi) index may be used and included in the motion information of the block. In some examples, the GBi index may indicate a first weight applicable to a first reference picture from list 1, and a second weight applicable to a second reference picture from list 0 may be derived from the first weight. In some examples, the GBi index may represent a derived weight parameter w, where the first weight w1 may be determined according to w1=w / F, where F represents a precision factor.
[0136] Moreover, the second weight w0 can be determined according to w0=1-w1.
[0137] In some examples, when the precision factor F is set to 8 (i.e., with 1 / 8 sample precision), the bi-predictive P bi-pred can be generated according to =((8-w)*P0+w*P1+4)>>3, where P0 and P1 are reference samples from reference pictures in list 0 and list 1, respectively.
[0138] In some examples, with the precision factor F set to 8, the GBi index can be assigned to represent one of five available weights {-2 / 8, 3 / 8, 4 / 8, 5 / 8, 10 / 8} for low-delay pictures and three weights {3 / 8, 4 / 8, 5 / 8} for non-low-delay pictures. The weight to be signaled with the GBi index can be determined by a rate-distortion cost analysis. In some examples, the weight check order can be {4 / 8, -2 / 8, 10 / 8, 3 / 8, 5 / 8} at the encoder.
[0139] In some applications using advanced motion vector prediction (AMVP) modes, the weight parameter selection can be explicitly signaled at the CU level using the GBi index if the particular CU is coded bi-predictively. If bi-prediction is used and the CU region is smaller than 256 luma samples, the GBi index signaling can be discarded.
[0140] In some applications, in inter-merge mode from spatial candidates and inherit affine merge mode, the weight parameter selection can be inherited from the selected merge candidate based on its GBi index. For other merge types, e.g., temporal merge candidates, HMVP candidates, SbTMVP candidates, constituent affine merge candidates, pairwise averaging candidates, etc., the weights may be set to represent the default weights (e.g., 1 / 2 or 4 / 8) and the GBi index from the selected candidate is not inherited.
[0141] While inheritance of GBi indexes may sometimes be advantageous in some merge modes, in others it may not be, and the penalty due to the additional memory space required to record the GBi index from the previously encoded block may sometimes be significant. Thus, in addition to the examples above, in some embodiments, the GBi index inheritance function may be further configured for application in various scenarios, as further described below. The GBi index inheritance configurations, as described below, may be used separately or combined in any order. In some examples, not all of the following GBi index inheritance configurations are implemented at the same time.
[0142] According to a first GBi index inheritance configuration of some examples, GBi index inheritance can be enabled for HMVP merge candidates. In some embodiments, the GBi index of a bi-predicted coding block can be stored in each entry of the HMVP candidate list. In this way, according to the first GBi index inheritance configuration, management of HMVP candidates can be coordinated with management of motion information candidates configured or obtained according to other modes, such as a normal merge mode.
[0143] In one embodiment, when any entry in the HMVP candidate list is updated, the motion information (e.g., including MV, reference list, and reference index) and the corresponding GBi index from the coding block can be updated as well. For example, after obtaining prediction information of a block, when it is determined that a motion information candidate should be stored in the HMVP candidate list according to the prediction information of the block, the motion information candidate can be stored to include at least the motion information of the block when the first block is coded according to bidirectional prediction, and a weight parameter for performing bidirectional prediction of the first block. Also, the motion information candidate can be stored to include at least the motion information of the block when the block is coded according to unidirectional prediction, and a specified weight parameter.
[0144] When a normal inter-merge candidate from the HMVP candidate list is selected as the MV predictor of a currently coded block in a decoding process and the candidate is coded using two-way prediction (also called bi-prediction), the GBi index of the current block can be set to the value of the GBi index value from the candidate. Alternatively, if the HMVP merge candidate is coded using one-way prediction (also called uni-prediction), the GBi index of the current block can be set to a default GBi index, which in some examples corresponds to a weight of 1 / 2.
[0145] According to a second GBi index inheritance configuration of some examples, the GBi index inheritance may be enabled only for spatial inter-merge candidates. In some embodiments, the GBi index inheritance may be enabled only for normal spatial inter-merge candidates. Thus, according to the second GBi index inheritance configuration, the implementation of the GBi index inheritance function may be simplified to reduce computational complexity.
[0146] In some embodiments, after obtaining the prediction information of the block, when it is determined that the motion information candidate should be stored in the normal merge candidate list according to the prediction information of the block, the motion information candidate can be stored to include at least the motion information of the block when the first block is coded according to bidirectional prediction, and a weight parameter for performing bidirectional prediction of the first block. Also, the motion information candidate can be stored to include at least the motion information of the block when the block is coded according to unidirectional prediction, and a specified weight parameter.
[0147] In one embodiment, when a spatial merge candidate is selected in the decoding process of a current block and the candidate is bi-predicted, the GBi index of the current block can be set to a GBi index value from the candidate block. Alternatively, when the spatial merge candidate is uni-predicted, the GBi index of the current block can be set to a predefined GBi index, which corresponds to a weight of 1 / 2 in some examples. In some examples, when the merge candidate selected for the current block is not a regular spatial merge candidate, such as a temporal merge candidate, an affine model inheritance candidate, an SbTMVP candidate, an HMVP candidate, or a pairwise averaging candidate, etc., the GBi index of the current block can be set to a predefined GBi index, for example, to reduce memory load.
[0148] According to a third GBi index inheritance configuration of some examples, the GBi index inheritance can be disabled for normal spatial merge candidates from the motion data line buffer. In this way, according to the third GBi index inheritance configuration, the computational complexity can be simplified and the memory space for storing the motion information candidates can be reduced.
[0149] Specifically, when the current block is located in the top row of the current CTU, spatial merge candidates from positions above the current block may be stored in a motion data line buffer, which is used to store motion information of the last row of the minimum allowed size inter block at the bottom of the CTU of the previous CTU row.
[0150] In one embodiment, the GBi index inheritance of normal spatial merge candidates from the motion data line buffer can be disabled to save memory storage in the motion data line buffer. For example, only normal motion information including motion vector values and reference index values of list 0 and / or list 1 may be saved in the motion data line buffer. The motion data line buffer can avoid storing GBi index values corresponding to blocks in a previous CTU row. Thus, in some examples, when the spatial merge candidate selected for the current block is from a block located in a previous CTU row above a CTU boundary, the motion information can be loaded from the motion data line buffer and the GBi index of the current block can be set to a default GBi index, which in some examples corresponds to a weight of 1 / 2.
[0151] Figure 12 is a schematic diagram of a current block (801) and its spatial neighbors at a CTU boundary (1210), according to one embodiment. In Figure 12, components that are the same or similar to those shown in Figure 8 are given the same reference numbers or labels, and their detailed descriptions are given above with respect to Figure 8.
[0152] 12, for a current block (801), if the selected spatial merge candidate corresponds to a neighboring block B0, B1, or B2, their motion information can be stored in the motion data line buffer. Thus, in some examples, according to the third GBi index inheritance configuration, the GBi index of the current block (801) may be set to a specified GBi index without referring to the GBi index value of the selected spatial merge candidate.
[0153] In some examples, according to the fourth GBi index inheritance configuration, GBi index inheritance may be disabled for normal affine merge candidates from the motion data line buffer. Specifically, when the current block is located in the top row of the current CTU, affine motion information of spatially neighboring blocks from positions above the current block for deriving inherited affine merge candidates for the current block may be stored in the motion data line buffer. The motion data line buffer is used to store motion information of the last row of the minimum allowed size inter block at the bottom of the CTU of the previous CTU row.
[0154] In one embodiment, the GBi index inheritance of the affine merge candidate from the motion data line buffer can be disabled to save memory storage in the motion data line buffer. For example, the GBi index value may not be stored in the motion data line buffer. When the inherited affine merge candidate selected for the current block is derived from an affine coded block located above a CTU boundary, the affine motion information is loaded from the motion data line buffer. The GBi index of the current block can be set to a default GBi index, which in some examples corresponds to a weight of 1 / 2.
[0155] Figure 13 is a schematic diagram of a current block (901) and its spatially affine neighboring blocks at a CTU boundary (1310), according to one embodiment. In Figure 13, components that are the same or similar to those shown in Figure 9 are given the same reference numbers or labels, and their detailed description is given above with respect to Figure 9.
[0156] 13, for a current block (901), if the selected inherited affine merge candidate corresponds to neighboring blocks B0, B1, or B2, their affine motion information can be stored in the motion data line buffer. Thus, in some examples, according to the fourth GBi index inheritance configuration, the GBi index of the current block (901) may be set to the specified GBi index without referring to the GBi index value of the selected affine merge candidate.
[0157] In some examples, according to the fifth GBi index inheritance configuration, the GBi index inheritance may be limited to reference blocks in the current CTU. In some embodiments, the GBi index information may be stored only for blocks in the current CTU. When using spatial MV prediction, if the predictor is from a block outside the current CTU, the GBi index information of the reference block may not be saved for the reference block. Thus, the GBi index of the current block may be set to a default GBi index, which corresponds to a weight of 1 / 2 in some examples.
[0158] In one embodiment, the above limitations due to the fifth GBi index inheritance configuration are only applicable to spatial intermerging of translational motion information.
[0159] In another embodiment, the above limitations imposed by the fifth GBi index inheritance construct may be applied only to inherited affine merge candidates.
[0160] In another embodiment, the above-mentioned limitations due to the fifth GBi index inheritance configuration may only be applied to both spatial inter-merge of translational motion information and inherited affine merge candidates.
[0161] In some examples, according to the sixth GBi index inheritance configuration, the use of negative weights as indicated by the GBi index may be constrained such that negative weights can be used only if two reference pictures used for a block belong to the same picture. In some examples, according to the sixth GBi index inheritance configuration, the use of positive weights as indicated by the GBi index may be constrained such that positive weights can be used only if two reference pictures used for a block belong to different pictures. In some examples, according to the sixth GBi index inheritance configuration, coding efficiency can be improved in some cases.
[0162] In some examples, pictures with the same picture order count (POC) value are determined as the same picture. In some examples, the signaling of GBi information and the reference pictures of the current block can be aligned according to the constraints described above.
[0163] In some examples, according to a seventh GBi index inheritance configuration, GBi index inheritance may be enabled for current picture referencing (CPR).
[0164] In the example of VVC and VTM, under CPR mode, the spatial merging candidate selected for the current block may be from the same picture as the current block. In some embodiments, the CPR implementation may only allow the encoding of blocks using one-way prediction. However, in other embodiments, the CPR implementation may allow the encoding of blocks using two-way prediction. If the current block is encoded using two-way prediction with one reference block selected from the current picture, the GBi index may be used for the current block.
[0165] For example, in one embodiment, if the current block is coded in merge mode and the selected merge candidate is bi-predicted with a GBi index and both reference blocks are from the current picture (CPR mode), the GBi index of the current block can be set to be the same as the GBi index of the candidate. If the selected merge candidate is uni-predicted using CPR mode, the GBi index of the current block can be set to a default GBi index, which in some examples corresponds to a weight of 1 / 2. In some embodiments, when the current block is a bi-predictive block that references two different reference pictures, the GBi index of the current block can be set to a default GBi index and the GBi index is not signaled.
[0166] In some embodiments, the block is coded according to one of bidirectional prediction and unidirectional prediction with the current picture as a reference picture (CPR mode). In some examples, after obtaining prediction information of the block, when it is determined that a motion information candidate should be stored in the normal merge candidate list according to the prediction information of the block, the motion information candidate can be stored to include at least the motion information of the block when the first block is coded according to bidirectional prediction, and a weight parameter for performing bidirectional prediction of the first block. Also, the motion information candidate can be stored to include at least the motion information of the block when the block is coded according to unidirectional prediction, and a specified weight parameter.
[0167] Figure 14 shows a flow chart outlining a decoding process (1400) according to one embodiment of the present disclosure. The process (1400) can be used to construct a list of motion information candidates for reconstructing a block (i.e., a current block) of a picture. In some embodiments, one or more operations are performed before or after the process (1400), and some of the operations shown in Figure 14 may be reordered or omitted.
[0168] In various embodiments, the process (1400) is performed by a processing circuit, such as processing circuitry within the terminal devices (210), (220), (230), and (240), or processing circuitry that performs the functions of the video decoders (310), (410), or (710). In some embodiments, the process (1400) is implemented by software instructions, such that the processing circuitry performs the process (1400) when it executes the software instructions. The process begins at (S1401) and proceeds to (S1410).
[0169] At (S1410), prediction information for a first block in a picture is obtained from the coded video bitstream. The prediction information indicates a mode of constructing a list of motion information candidates from one or more previous decoded blocks. In some embodiments, the mode of constructing the list of motion information candidates includes various modes as described above, such as HEVC merge mode, affine merge mode, sub-block based temporal MV prediction, history based MV prediction, pair-wise averaged MV candidate, CPR, and / or other applicable processes, or combinations thereof. In some examples, the prediction information can be obtained using the systems or decoders shown in Figures 3, 4, and 7.
[0170] At (S1420), reconstructed samples of the first block are generated (e.g., for output) according to one of bidirectional prediction and unidirectional prediction and the prediction information. In some examples, the reconstructed samples of the first block can be generated using the systems or decoders shown in Figures 3, 4, and 7.
[0171] When it is determined in (S1430) that the motion information candidate should be stored in the list of motion information candidates according to the prediction information of the first block, the motion information candidate can be stored.
[0172] In some embodiments, the GBi index inheritance from the HMVP merge candidate is enabled. Thus, the motion information candidate can be stored as an HMVP candidate including at least the first information and a first weight parameter indicating a first weight for performing bidirectional prediction of the first block when the first block is coded according to bidirectional prediction. Also, the motion information candidate as an HMVP candidate can include the first motion information and a prescribed weight parameter indicating a prescribed weight when the first block is coded according to unidirectional prediction. In some examples, the prescribed weight is 1 / 2.
[0173] In some embodiments, GBi index inheritance can be enabled for CPR. Thus, the motion information candidate can be stored to include at least the first information and a first weight parameter for performing bidirectional prediction of the first block when the first block is coded according to bidirectional prediction. Also, the motion information candidate can include the first motion information and a prescribed weight parameter indicating a prescribed weight when the first block is coded according to unidirectional prediction.
[0174] In some embodiments, GBi index inheritance can be enabled for spatial inter-merge candidates. The motion information candidate can be stored to include at least first information when the first block is coded according to bidirectional prediction, and a first weight parameter for performing bidirectional prediction of the first block. Also, the motion information candidate can include the first motion information and a prescribed weight parameter indicating a prescribed weight when the first block is coded according to unidirectional prediction.
[0175] In some examples, the candidate motion information may be stored using the systems or decoders shown in FIGS.
[0176] In some embodiments, the first block is encoded according to bi-directional prediction based on a first reference picture in a first list (e.g., list 1) and a second reference picture in a second list (e.g., list 0), where a weight w1 applicable to the first reference picture can be determined according to w1=w / F.
[0177] Moreover, the weight w0 applicable to the second reference picture can be determined according to w0=1-w1.
[0178] where w and F are integers, w represents a derived weighting parameter (e.g., weighting indicated by GBi index) to be included in the stored candidate motion information, and F represents a precision factor. In some examples, the precision factor F is 8.
[0179] In some examples, the reconstructed samples of the current block may be generated using the systems or decoders shown in FIGS.
[0180] When it is determined that the second block in the picture should be decoded based on the motion information candidate at (S1460), a reconstructed sample of the second block can be generated for output according to the motion information candidate. In some examples, the reconstructed sample of the second block can be generated using the system or decoder shown in Figures 3, 4, and 7.
[0181] In some embodiments, in (S1460), when the motion information candidate is stored as a normal spatial merge candidate and the second block is coded according to bidirectional prediction, the second weight for performing bidirectional prediction of the second block can be set according to the first weight parameter stored in the motion information candidate when the first block is spatially adjacent to the second block, and the second weight for performing bidirectional prediction of the second block can be set to a default weight when the first block is not spatially adjacent to the second block.
[0182] In some embodiments, at (S1460), when the motion information candidate is stored as a candidate that is neither a normal spatial merge candidate nor an HMVP candidate, and the second block is encoded according to bidirectional prediction, the second weight for performing bidirectional prediction on the second block may be a default weight.
[0183] In some embodiments, when the first block is in a current coding tree unit (CTU) row different from the CTU row in which the second block is included, the motion information candidates are stored as normal merge candidates or affine merge candidates, and the second block is coded according to bidirectional prediction, the second weight for performing bidirectional prediction for the second block can be set to a specified weight.
[0184] In some embodiments, when the first block is outside the current CTU in which the second block is contained, the motion information candidates are stored as translational merge candidates or inherited affine merge candidates, and the second block is encoded according to bidirectional prediction, the second weight for performing bidirectional prediction on the second block can be set to a specified weight.
[0185] In some embodiments, the first block is encoded according to bidirectional prediction, and both a first weight corresponding to a first reference picture in the first list and a second weight derived from the first weight and corresponding to a second reference picture in the second list are positive when the first and second reference pictures are the same reference picture.
[0186] In some embodiments, the first block is encoded according to bidirectional prediction, and one of the first weight corresponding to a first reference picture in the first list and the second weight derived from the first weight and corresponding to a second reference picture in the second list is negative when the first and second reference pictures are different reference pictures.
[0187] After (S1460), the process proceeds to (S1499) and ends.
[0188] Figure 15 shows a flow chart outlining an encoding process (1500) according to one embodiment of the present disclosure. The process (1500) can be used to encode a block (i.e., the current block) of a picture encoded using inter mode. In some embodiments, one or more operations are performed before or after the process (1500), and some of the operations shown in Figure 15 may be reordered or omitted.
[0189] In various embodiments, the process (1500) is performed by a processing circuit, such as processing circuitry within the terminal devices (210), (220), (230), and (240), or processing circuitry performing the functions of the video encoders (303), (503), or (603). In some embodiments, the process (1500) is implemented by software instructions, such that the processing circuitry performs the process (1500) when it executes the software instructions. The process begins at (S1501) and proceeds to (S1510).
[0190] At (S1501), a first prediction information for encoding a first block in a picture is obtained. In some embodiments, the first prediction information can be obtained by any applicable motion estimation process that generates a suitable predictor for the first block. In some examples, the determination can be performed using the systems or encoders shown in Figures 3, 5, and 6.
[0191] In (S1530), when it is determined that the motion information candidate should be stored in the list of motion information candidates according to the prediction information of the first block, the motion information candidate can be stored. In some examples, (S1530) can be performed in a similar manner to (S1430). In some examples, storing the motion information candidate can be performed using the system or encoder shown in Figures 3, 5, and 6.
[0192] In (S1560), when it is determined that a second block in a picture should be decoded based on the motion information candidate, second prediction information for encoding the second block can be obtained according to the motion information candidate. In some examples, (S1560) may include determining weights for performing bi-directional prediction for the second block in a manner similar to (S1460). In some examples, the determination of the second prediction information can be performed using the system or encoder shown in Figures 3, 5, and 6.
[0193] After (S1560), the process proceeds to (S1599) and ends.
[0194] The techniques described above may be implemented as computer software using computer readable instructions and physically stored on one or more computer readable media. For example, Figure 16 illustrates a computer system (1600) suitable for implementing certain embodiments of the subject matter of this disclosure.
[0195] Computer software can be encoded using any suitable machine code or computer language that can be processed by mechanisms such as assembly, compilation, linking, etc. to generate code including instructions that can be executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., directly or through interpretation, microcode execution, etc.
[0196] The instructions may be executed in a variety of computers or components thereof, including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, and the like.
[0197] 16 of the computer system (1600) are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing the embodiments of the present disclosure. Furthermore, the arrangement of components should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary embodiment of the computer system (1600).
[0198] The computer system (1600) may include certain human interface input devices. Such human interface input devices may be responsive to input by one or more human users, for example, through sensory input (e.g., keystrokes, swipes, data grabbing actions), audio input (e.g., voice, clapping), visual input (e.g., gestures), olfactory input (not shown). Human interface devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as sound (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a digital camera), and video (including, for example, two-dimensional video, three-dimensional video, stereoscopic video).
[0199] The input human interface devices may include one or more of a keyboard (1601), a mouse (1602), a trackpad (1603), a touch screen (1610), a data glove (not shown), a joystick (1605), a microphone (1606), a scanner (1607), and a camera (1608) (only one of which is shown).
[0200] The computer system (1600) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through sensory output, sound, light, and smell / taste. Such human interface output devices may include sensory output devices (e.g., sensory feedback via a touch screen (1610), data glove (not shown), or joystick (1605 (although there may also be sensory feedback devices that do not function as input devices)), audio output devices (e.g., speakers (1609), headphones (not shown), visual output devices (e.g., screens (1610), including CRT screens, LCD screens, plasma screens, OLED screens, each with or without touch screen input capability, each with or without sensory feedback capability, some of which may be capable of outputting two-dimensional visual output or three-dimensional or higher output through such means as stereoscopic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), and printers (not shown)).
[0201] The computer system (1600) may also include human accessible storage and associated media such as optical media such as CD / DVD ROM / RW (1620) with media such as CDs / DVDs (1621), thumb drives (1622), removable hard drives or solid state drives (1623), legacy magnetic media such as tape and floppy disks (not shown), dedicated ROM / ASIC / PLD based devices such as security dongles (not shown), etc.
[0202] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter of this disclosure does not encompass transmission media, carrier waves, or other transitory signals.
[0203] The computer system (1600) may also include interfaces to one or more communication networks. The networks may be, for example, wireless, wired, or optical. The networks may further be local, wide area, metropolitan area, vehicular and industrial, real-time, delay tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LAN, cellular networks including GSM, 3G, 4G, 5G, LET, etc., TV wired or wireless wide area digital networks including cable TV, satellite TV, terrestrial broadcast TV, vehicular and industrial including CANBus, etc. Certain networks generally require an external network interface that is attached to a specific general purpose data port or peripheral bus (1649) (e.g., a USB port on the computer system (1600)). Others are generally integrated into the core of the computer system (1600) by attachment to a system bus as described below (e.g., an Ethernet interface to a PC computer system, or a cellular network interface to a smartphone computer system). Using these networks, the computer system (1600) can communicate with other entities. Such communications may be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., CANbus to a specific CANbus device), or two-way to other computer systems, for example, using local or wide area digital networks. Specific protocols and protocol stacks may be used in each of the above mentioned networks and network interfaces.
[0204] The aforementioned human interface devices, human accessible storage devices, and network interfaces may be attached to a core (1640) of the computer system (1600).
[0205] The core (1640) may include one or more central processing units (CPUs) (1641), graphics processing units (GPUs) (1642), dedicated programmable processing units (1643) in the form of GPS, hardware accelerators (1644) for specific tasks, etc. These devices may be connected through a system bus (1648), along with read only memory (ROM) (1645), random access memory (1646), internal mass storage devices (1647) such as internal non-user accessible hard drives, SSDs, etc. In some computer systems, the system bus 1648 is accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripherals may be attached directly to the core's system bus 1648 or through a peripheral bus 1649. Peripheral bus architectures include PCI, USB, etc.
[0206] The CPU (1641), GPU (1642), FPGA (1643), and accelerator (1644) may execute certain instructions that may be combined to generate the aforementioned computer code. The computer code may be stored in a ROM (1645) or a RAM (1646). Temporary data may also be stored in the RAM (1646), while permanent data may be stored, for example, in an internal mass storage device (1647). Rapid storage and retrieval from any of the memory devices may be made possible through the use of a cache memory that may be closely associated with one or more of the CPU (1641), GPU (1642), mass storage device (1647), ROM (1645), RAM (1646), etc.
[0207] The computer-readable medium may bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.
[0208] As an example and not by way of limitation, the computer system (1600) having the architecture, and specifically the core (1640), can provide functionality as a result of the processor (including CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be specific storage of the core (1640) of a non-transitory nature, such as the core's internal mass storage (1647) or ROM (1645), and media associated with user-accessible mass storage as described above. Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (1640). The computer-readable media can include one or more memory devices or chips, depending on the particular needs. The software can cause the core (1640) and specifically the processor therein (including CPU, GPU, FPGA, etc.) to perform certain operations or certain portions of certain operations described herein, including defining and modifying data structures stored in RAM (1646) according to software-defined operations. Additionally or alternatively, the computer system may provide functionality as a result of implementation in hardwired or other circuitry (e.g., accelerator (1644)) that can operate in conjunction with or in place of software to perform certain processes or certain portions of certain processes described herein. Reference to software includes logic, and vice versa, where appropriate. Reference to computer-readable medium may include circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that implements logic for execution, or both, where appropriate. The present disclosure includes any appropriate combination of hardware and software. Appendix A: Glossary JEM: joint exploration model VVC: versatile video coding BMS: benchmark set MV: Motion Vector HEVC: High Efficiency Video Coding SEI: Supplementary Enhancement Information VUI: Video Usability Information GOPs: Groups of Pictures TUs: Transform Units, PUs: Prediction Units CTUs: Coding Tree Units CTBs: Coding Tree Blocks PBs: Prediction Blocks HRD: Hypothetical Reference Decoder SNR: Signal Noise Ratio CPUs: Central Processing Units GPUs: Graphics Processing Units CRT: Cathode Ray Tube LCD: Liquid-Crystal Display OLED: Organic Light-Emitting Diode CD: Compact Disc DVD: Digital Video Disc ROM: Read-Only Memory RAM: Random Access Memory ASIC:Application-Specific Integrated Circuit PLD: Programmable Logic Device LAN: Local Area Network GSM: Global System for Mobile communications LTE: Long-Term Evolution CANBus: Controller Area Network Bus USB: Universal Serial Bus PCI: Peripheral Component Interconnect FPGA: Field Programmable Gate Areas SSD: solid-state drive IC: Integrated Circuit CU: Coding Unit SDR: standard dynamic range HDR: high dynamic range VTM: VVC Test Mode CPMV: Control point motion vector CPMVP: Control point motion vector predictor MVP: Motion Vector Prediction AMVP: Advanced Motion Vector Prediction ATMVP: Advanced Temporal Motion Vector Prediction HMVP: History-based Motion Vector Prediction STMVP: Spatial-temporal Motion Vector Prediction TMVP: Temporal Motion Vector Prediction SbTMVP: subblock-based temporal motion vector prediction GBi: Generalized Bi-prediction HEVC SCC: HEVC screen content coding CPR: Current Picture Referencing AMVR: Adaptive motion vector resolution SPS: sequence parameter set RD: Rate-Distortion
[0209] While this disclosure has described several exemplary embodiments, there are alterations, permutations, and various substitute equivalents, which are encompassed within the scope of this disclosure. It will be apparent to those skilled in the art that numerous systems and methods can be devised that, although not explicitly shown or described herein, embody the principles of the disclosure and thus are encompassed within the spirit and scope of the disclosure.
Claims
1. 1. A method for video decoding performed by a decoder, comprising: obtaining prediction information for a first block in a picture from an encoded video bitstream; generating reconstructed samples of the first block for output according to one of bidirectional prediction and unidirectional prediction and according to the prediction information; When it is determined that a motion information candidate should be stored according to the prediction information of the first block, and is stored as a history-based motion vector prediction (HMVP) candidate, Storing the motion information candidates, the motion information candidates including at least first motion information and a weight index: When the first block is encoded according to the one-way prediction, the weight index is a specified value indicating a specified weight; when the first block is coded according to the bidirectional prediction, the weight index is a first value indicating a first weight for performing the bidirectional prediction of the first block, the first value being one of a plurality of values including the specified value; when it is determined that a second block in the picture should be decoded based on the motion information candidate, obtaining prediction information for generating a reconstructed sample of the second block according to the motion information candidate; The method includes:
2. The step of obtaining prediction information for generating the reconstructed samples of the second block comprises: When the motion information candidate is stored as a normal spatial merge candidate and the second block is coded according to the bi-prediction, setting a second weight for performing the bi-directional prediction on the second block according to the first weight parameter stored in the motion information candidate when the first block is spatially adjacent to the second block; setting the second weight for performing the bi-directional prediction on the second block to the predetermined weight when the first block is not spatially adjacent to the second block; The method of claim 1 , comprising:
3. The step of obtaining prediction information for generating the reconstructed samples of the second block comprises: When the motion information candidate is stored as a candidate other than the normal spatial merge candidate or the HMVP candidate, and the second block is coded according to the bi-directional prediction, The method of claim 2 , comprising setting the second weight for performing the bi-directional prediction on the second block to the defined weight.
4. The step of obtaining prediction information for generating the reconstructed samples of the second block comprises: When the first block is in a current coding tree unit (CTU) row different from a CTU row in which the second block is included, the motion information candidates are stored as normal merge candidates or affine merge candidates, and the second block is coded according to the bi-directional prediction, The method of claim 1 , further comprising setting a second weight for performing the bi-directional prediction on the second block to the defined weight.
5. The step of obtaining prediction information for generating the reconstructed samples of the first block comprises: When the first block is outside a current coding tree unit (CTU) including the second block, the motion information candidate is stored as a translational merge candidate or an inherited affine merge candidate, and the second block is coded according to the bi-directional prediction, The method of claim 1 , further comprising setting a second weight for performing the bi-directional prediction on the second block to the defined weight.
6. The method of claim 1 , wherein the first block is coded according to one of the bidirectional prediction and the unidirectional prediction using the picture as a reference picture.
7. The method of claim 1 , wherein the defined weight is 1 / 2.
8. The first block is coded according to the bi-prediction, and the first weight w 1 Ha, w 1 = w / F, Another weight w corresponding to the second reference picture in the second list 0 Ha, w 0 = 1 - w 1 is determined in accordance with The method of claim 1 , wherein w and F are integers, w represents the first value indicating the first weight, and F represents a precision factor.
9. The method of claim 8 , wherein the precision factor F is eight.
10. one or more processors; one or more memories storing a computer program; having The computer program causes the one or more processors to carry out a method according to any one of claims 1 to 9. device.
11. A computer program causing a computer to carry out the method according to any one of claims 1 to 9.
12. 1. A method for video encoding performed by an encoder, comprising: obtaining and signaling prediction information for encoding a first block in a picture; encoding the first block according to one of bidirectional prediction and unidirectional prediction and the prediction information; storing the motion information candidate when it is determined that the motion information candidate should be stored according to the prediction information of the first block and is stored as a history-based motion vector prediction (HMVP) candidate, the motion information candidate including at least a first motion information and a weight index: When the first block is encoded according to the one-way prediction, the weight index is a specified value indicating a specified weight; when the first block is coded according to bidirectional prediction, the weight index is a first value indicating a first weight for performing the bidirectional prediction of the first block, the first value being one of a plurality of values including the specified value; when it is determined that a second block in the picture should be coded based on the motion information candidate, obtaining prediction information for coding the second block according to the motion information candidate; The method includes:
13. one or more processors; one or more memories storing a computer program; having The computer program causes the one or more processors to perform the method of claim 12. device.
14. A computer program product causing a computer to carry out the method according to claim 12.