Full pixel-based and group-based motion-compensated picture border padding
By employing full-pixel motion compensation and motion vector grouping for picture boundary padding, the challenges of fractional motion vectors are addressed, enhancing efficiency and reducing complexity in video coding.
Patent Information
- Application Number
- JP2024547446
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2023-06-08
- Filing Date
- 2023-06-14
- Publication Date
- 2026-01-22
- Estimated Expiration
- 2043-06-14
AI Technical Summary
Existing video coding technologies face challenges in efficiently handling motion compensation at picture boundaries, particularly when motion vectors have fractional precision, leading to increased computational complexity and memory bandwidth issues.
The implementation of full-pixel motion compensation and motion vector grouping methods for picture boundary padding, which uses integer precision motion vectors and direct memory access to fetch pixel data from reference pictures, reducing the need for fractional interpolation.
This approach simplifies the padding process at picture boundaries, improving memory bus access efficiency and reducing computational complexity while maintaining video quality.
Smart Images

Figure 0007804777000001 
Figure 0007804777000002 
Figure 0007804777000003
Abstract
Description
[Technical Field]
[0001]
[0001] Incorporation by Reference This application claims the benefit of priority to U.S. Patent Application No. 18 / 207,541, filed June 8, 2023, entitled "Full-Pixel-Based and Group-Based Motion Compensated Picture Boundary Padding," which in turn claims the benefit of priority to U.S. Provisional Application No. 63 / 388,598, filed July 12, 2022, entitled "Picture Boundary Fractional Motion Compensated Free Padding and Grouping-Based MC Padding," the disclosures of which are incorporated herein by reference in their entireties.
[0002]
[0002] Technical Field This disclosure describes embodiments generally related to video coding. [Background technology]
[0003] The background statement presented herein is intended to generally present the context of the present disclosure. Work under the names of the current inventors is not admitted, expressly or impliedly, as prior art to the present disclosure to the extent that that work is described in this background section or in a descriptive manner that may not otherwise qualify as prior art as of the filing date.
[0004]
[0004] Image / video compression can help transmit image / video files between various devices, storage devices, and networks with minimal quality loss. In some examples, video codec technology can compress video based on spatial and temporal redundancy. In one example, a video codec can use a technique called intra-prediction, which can compress images based on spatial redundancy. For example, intra-prediction can utilize reference data from the current picture being reconstructed for sample prediction. In another example, a video codec can use a technique called inter-prediction, which can compress images based on temporal redundancy. For example, inter-prediction can predict samples in a current picture from a previously reconstructed picture using motion compensation. Motion compensation is commonly represented by a motion vector (MV). Summary of the Invention
[0005] Aspects of the present disclosure provide a method and apparatus for video and / or picture encoding / decoding. The video decoding apparatus includes a processing circuit that receives a bitstream including multiple pictures. An initial motion vector (MV) associated with a motion compensation padding (MCP) block is determined according to motion information of a boundary block located at a picture boundary of a picture within the multiple pictures. The boundary block is located within the picture. The MCP block is located within an MCP area outside the picture and adjacent to the picture boundary. The initial MV has fractional precision. A final MV associated with the MCP block is generated based on the initial MV. At least samples within the MCP block are reconstructed according to the generated final MV.
[0006]
[0006] In an embodiment, an MV associated with an MCP block is determined according to motion information of a plurality of respective boundary blocks located at picture boundaries of pictures in a plurality of pictures. The boundary blocks are located within the pictures, and the MCP block is located within an MCP area outside the pictures adjacent to the picture boundary. Each of the plurality of boundary blocks is a spatial neighbor of a boundary block in the plurality of boundary blocks. The plurality of boundary blocks are in the neighborhood of the MCP block. At least one sample in the MCP block is determined based on the determined MV.
[0007]
[0007] In an embodiment, an MV associated with an MCP block is determined according to motion information of a boundary block located at a picture boundary of a picture. The boundary block is located within the picture. The MCP block is located outside the picture within an MCP area adjacent to the picture boundary of the picture. Samples in the MCP block are determined using motion compensation padding according to the determined MV. The samples in the MCP block are filtered based on at least one sample in the picture that is within N1 lines of the picture boundary of the picture.
[0008]
[0008] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer for video encoding / decoding, cause the computer to perform a method for video encoding / decoding. [Brief explanation of the drawings]
[0009]
[0009] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings. [Figure 1]
[0010] FIG. 1 is a schematic diagram of an exemplary block diagram of a communication system (100). [Figure 2]
[0011] FIG. 2 is a schematic diagram of an exemplary block diagram of a decoder. [Figure 3]
[0012] FIG. 3 is a schematic diagram of an exemplary block diagram of an encoder. [Figure 4A]
[0013] 4A-4B show examples of reference pictures along with the area to be extended. [Figure 4B] 4A-4B show examples of reference pictures with areas to be expanded. [Figure 5]
[0014] FIG. 5 shows an example illustrating motion compensated boundary padding. [Figure 6]
[0015] Figures 6-8 show examples illustrating group-based motion compensation boundary padding. [Figure 7]
[0015] Figures 6-8 show examples illustrating group-based motion compensation boundary padding. [Figure 8]
[0015] Figures 6-8 show examples illustrating group-based motion compensation boundary padding. [Figure 9]
[0016] FIG. 9 shows an exemplary flowchart outlining the encoding process. [Figure 10]
[0017] 10-12 show exemplary flowcharts outlining the decoding process. [Figure 11] 10-12 show exemplary flowcharts outlining the decoding process. [Figure 12] 10-12 show exemplary flowcharts outlining the decoding process. [Figure 13]
[0018] FIG. 13 is a schematic diagram of a computer system according to an embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0010]
[0019] Figure 1 illustrates a block diagram of a video processing system (100) in some examples. The video processing system illustrates an example application of the disclosed subject matter: a video encoder and a video decoder in a streaming environment. The disclosed subject matter is equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, streaming services, and storage of compressed video on digital media (including CDs, DVDs, memory sticks, etc.).
[0011]
[0020] The streaming system (100) includes a video source (101), which may include, for example, a digital camera, and a capture subsystem (113) capable of generating, for example, a stream of uncompressed video pictures (102). In one example, the video picture stream (102) includes samples captured by the digital camera. The video picture stream (102), depicted as a thick line to emphasize its large amount of data when compared to the encoded video data (104) (or coded video bitstream), may be processed by an electronic device (120) including a video encoder (103) coupled to the video source (101). The video encoder (103) may include hardware, software, or a combination thereof, and may enable or implement aspects of the disclosed subject matter, as described in more detail below. The coded video data (104) (or coded video bitstream), depicted as a thin line to emphasize its smaller amount of data when compared to the stream of video pictures (102), can be stored on a streaming server (105) for future use.
[0012] One or more streaming client subsystems, such as the client subsystems (106) and (108) of FIG. 1, can access the streaming server (105) to retrieve copies (107) and (109) of the encoded video data (104). The client subsystem (106) can include a video decoder (110), for example, within an electronic device (130). The video decoder (110) decodes the incoming copy (107) of the encoded video data and generates an output stream (111) of video pictures that can be rendered on a display (112) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (104), (107), and (109) (e.g., a video bitstream) can be encoded according to a particular video coding / compression standard. Examples of these standards include ITU-T Recommendation H.265. In one example, a video coding standard under development is informally known as Versatile Video Coding (VVC), and the disclosed subject matter may be used in the context of VVC.
[0013]
[0021] It should be noted that electronic devices 120 and 130 may include other components (not shown). For example, electronic device 120 may include a video decoder (not shown), and electronic device 130 may include a video encoder (not shown).
[0014]
[0022] 2 shows an example block diagram of a video decoder (210). The video decoder (210) can be included in an electronic device (230). The electronic device (230) can include a receiver (231) (e.g., a receiving circuit). The video decoder (210) can be used in place of the video decoder (110) in the example of FIG. 1.
[0015]
[0023] The receiver (231) can receive one or more coded video sequences to be decoded by the video decoder (210). In some embodiments, coded video sequences are received one at a time, where the decoding of each coded video sequence is independent of the decoding of the other coded video sequences. The coded video sequences can be received from a channel (201), which can be a hardware or software link to a storage device that stores the coded video data. The receiver (231) can receive the coded video data together with other data, such as coded audio data and / or auxiliary data streams, which can be transferred using respective entities (not shown). The receiver (231) can separate the coded video sequences from the other data.
[0016] To address network jitter, a buffer memory (215) may be coupled between the receiver (231) and the entropy decoder / parser (220) (hereinafter referred to as the "parser (220)"). In certain applications, the buffer memory (215) is part of the video decoder (210). In other cases, it may be external to the video decoder (210) (not shown). In yet another example, there may be a buffer memory (not shown) external to the video decoder (210), for example, to address network jitter, and there may even be another buffer memory (215) internal to the video decoder (210), for example, to handle playback timing. If the receiver (231) is receiving data from a store-and-forward device with sufficient bandwidth and controllability or from a synchronous network, the buffer memory (215) may not be needed or may be small. For use in a best-effort packet network such as the Internet, a buffer memory (215) may be required, which may be relatively large and may advantageously be adaptively sized, and may be implemented at least in part in an operating system or similar element (not shown) outside the video decoder (210).
[0017]
[0024] The video decoder (210) may include a parser (220) for reconstructing symbols (221) from the coded video sequence. These symbol categories include information used to manage the operation of the video decoder (210) and, potentially, information for controlling a rendering device, such as a rendering device (212) (e.g., a display screen) that is not an integral part of the electronic device (230) but may be coupled to the electronic device (230), as shown in FIG. 2. The rendering device control information 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 (220) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard, including variable length coding, Huffman coding, arithmetic coding with or without context effects, and various other principles. The parser (220) can extract from the coded video sequence a set of subgroup parameters for at least one subgroup of pixels in the video decoder based on at least one parameter corresponding to the group. The subgroup can include a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. The parser (220) can also extract from the coded video sequence information such as transform coefficients, quantization parameter values, motion vectors, etc.
[0018]
[0025] The parser (220) is capable of performing an entropy decoding / parsing process on the video sequence received from the buffer memory (215) to generate symbols (221).
[0019]
[0026] The reconstruction of the symbols (221) may include several different units depending on the type of coded video picture or part 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 by the parser (220) from the coded video sequence. The flow of such subgroup control information between the parser (220) and subsequent units is not depicted for clarity.
[0020]
[0027] Beyond the functional blocks already described, the video decoder (210) may be conceptually subdivided into a number of functional units, as described below. In a practical implementation operating within commercial constraints, many of these units will interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is appropriate.
[0021]
[0028] The first unit is a scalar / inverse transform unit (251), which receives quantized transform coefficients as well as control information (including the transform to use, block size, quantization factor, quantization scaling matrix, etc.) from the parser (220) as symbols (221). The scalar / inverse transform unit (251) can output blocks containing sample values that can be input to an aggregator (255).
[0022]
[0029] In some cases, the output samples of the scalar / inverse transform unit (251) may relate to intra-coded blocks. Intra-coded blocks are blocks that do not use prediction information from a previously reconstructed picture, but may use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by the intra picture prediction unit (252). In some cases, the intra picture prediction unit (252) generates blocks of the same size and shape as the block being reconstructed using already reconstructed surrounding information retrieved from the current picture buffer (258). The current picture buffer (258), for example, buffers the partially reconstructed and / or fully reconstructed current picture. The aggregator (255) optionally adds, on a sample-by-sample basis, the prediction information generated by the intra prediction unit (252) to the output sample information as provided by the scalar / inverse transform unit (251).
[0023]
[0030] In other cases, the output samples of the scalar / inverse transform unit (251) may relate to a block that may be inter-coded and motion-compensated. In such cases, the motion-compensated prediction unit (253) may access the reference picture memory (257) to retrieve samples used for prediction. After motion-compensating the retrieved samples according to the symbols (221) associated with the block, these samples are added by the aggregator (255) to the output of the scalar / inverse transform unit (251) (in this case, referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (257) from which the motion-compensated prediction unit (253) retrieves prediction samples may be controlled by motion vectors available to the motion-compensated prediction unit (253), for example, in the form of symbols (221) that may have X, Y, and reference picture components. Motion compensation can also include interpolation of sample values taken from a reference picture memory (257), motion vector prediction mechanisms, etc., where sub-sample accurate motion vectors are used.
[0024]
[0031] The output samples of the aggregator (255) may be subjected to various loop filtering techniques in the loop filter unit (256). Video compression techniques may include in-loop filtering techniques controlled by parameters contained in the coded video sequence (also called the coded video bitstream) and made available to the loop filter unit (256) as symbols (221) from the parser (220). Video compression may also depend on meta-information obtained during decoding of previous portions (in decoding order) of the coded picture or coded video sequence, as well as on previously reconstructed loop-filtered sample values.
[0025]
[0032] The output of the loop filter unit (256) may be a sample stream that can be output to a rendering device (212) or stored in a reference picture memory (257) for use in future inter-picture prediction.
[0026]
[0033] Once a given coded picture is fully reconstructed, it can be used as a reference picture for future prediction. For example, once the coded picture corresponding to the current picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (220)), the current picture buffer (258) can become part of the reference picture memory (257), and a fresh current picture buffer can be reallocated before starting the reconstruction of a subsequent coded picture.
[0027]
[0034] The video decoder (210) may perform decoding operations according to a standard or predetermined video compression technology, such as ITU-T Rec. H.265. A coded video sequence may conform to the syntax specified by the video compression technology or standard in the sense that the coded video sequence conforms to both the syntax of the video compression technology or standard and the profile, as documented in the video compression technology or standard. Specifically, a profile may select certain tools from all tools available in the video compression technology or standard as the only tools that can be used under that profile. Compliance also requires that the complexity of the coded video sequence fall within a range defined by the level of the video compression technology or standard. In some cases, the level may limit the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the levels may in some cases be further constrained by Hypothetical Reference Decoder (HRD) specifications and metadata for HRD buffer management signaled in the coded video sequence.
[0028]
[0035] In an embodiment, the receiver (231) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder (210) to properly 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.
[0029]
[0036] 3 shows an example block diagram of a video encoder (303). The video encoder (303) is included in an electronic device (320). The electronic device (320) includes a transmitter (340) (e.g., a transmission circuit). The video encoder (303) can be used in place of the video encoder (103) in the example of FIG. 1.
[0030]
[0037] The video encoder (303) can receive video samples from a video source (301) (which in the example of FIG. 3 is not part of the electronic device (320)) that can capture video images to be coded by the video encoder (303). In another example, the video source (301) is part of the electronic device (320).
[0031]
[0038] The video source (301) may provide a source video sequence to be coded by the video encoder (303) in the form of a digital video sample stream, which may be 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 serving system, the video source (301) may be a storage device that stores pre-prepared video. In a video conferencing system, the video source (301) may be a camera that captures local image information as a video sequence. Video data may be provided as multiple individual pictures that convey motion when viewed sequentially. The picture itself may be organized as a spatial array of pixels, each of which may contain one or more samples, depending on the sampling structure, color space, etc., in use. Those skilled in the art will readily understand the relationship between pixels and samples. The following discussion focuses on examples.
[0032]
[0039] According to an embodiment, the video encoder (303) is capable of coding and compressing pictures of a source video sequence into a coded video sequence (343) in real time or under any other required time constraints. Enforcing an appropriate coding rate is one function of the controller (350). In some embodiments, the controller (350) controls and is functionally coupled to other functional units, as described below, which are not depicted for clarity. Parameters set by the controller (350) may include rate control-related parameters (picture skip, quantizer, lambda value for rate-distortion optimization techniques, etc.), picture size, group-of-picture (GOP) layout, maximum motion vector search range, etc. The controller (350) may be configured to have other appropriate functions associated with the video encoder (303) optimized for a particular system design.
[0033]
[0040] In some embodiments, the video encoder (303) is configured to operate in a coding loop. As a simplified explanation, in one example, the coding loop may include a source coder (330) (e.g., responsible for generating symbols, such as a symbol stream, based on an input picture to be coded and a reference picture) and a (local) decoder (333) embedded in the video encoder (303). The decoder (333) reconstructs the symbols to generate sample data in a manner similar to that generated by the (remote) decoder. The reconstructed sample stream (sample data) is input to a reference picture memory (334). Because decoding of the symbol stream produces bit-exact results independent of the location (local or remote) of the decoder, the contents of the reference picture memory (334) are also bit-exact between the local and remote encoders. In other words, the predictor in the encoder "sees" as reference picture samples exactly the same sample values that the decoder would "see" if it were using prediction during decoding. This basic principle of reference picture synchronization (and the resulting drift if synchronization cannot be maintained, e.g., due to channel errors) is used in several related technologies as well.
[0034]
[0041] The operation of the "local" decoder (333) may be the same as that of a "remote" decoder, such as the video decoder (210) already described in detail above in connection with Figure 2. However, briefly referring also to Figure 2, because symbols are available and the encoding / decoding of the symbols into a coded video sequence by the entropy coder (345) and parser (220) may be lossless, the entropy decoding portion of the video decoder (210), including the buffer memory (215) and parser (220), may not be fully implemented in the local decoder (333).
[0035]
[0042] In embodiments, decoder techniques other than analysis / entropy decoding present in a decoder are also present in the corresponding encoder, ideally or in substantially the same functional form. Therefore, the disclosed subject matter focuses on the operation of the decoder. A description of the encoder techniques can be omitted, as they are the opposite of the decoder techniques described generically. In certain areas, more detailed descriptions are provided below.
[0036]
[0043] During operation, in some examples, the source coder (330) 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 manner, the coding engine (332) codes differences between pixel blocks of the input picture and pixel blocks of reference pictures that may be selected as predictive references for the input picture.
[0037]
[0044] The local video decoder (333) can decode coded video data of pictures that can be designated as reference pictures based on symbols generated by the source coder (330). The operation of the coding engine (332) can advantageously be a non-lossless process. When the coded video data can be decoded by a video decoder (not shown in FIG. 3), the reconstructed video sequence can typically be a replica of the source video sequence with some errors. The local video decoder (333) can repeat the decoding process that can be performed by the video decoder on the reference pictures, causing the reconstructed reference pictures to be stored in the reference picture cache (334). In this way, the video encoder (303) can locally store copies of reconstructed reference pictures that have common content with reconstructed reference pictures obtained by a far-end video decoder (assuming there are no transmission errors).
[0038]
[0045] The predictor (335) can perform a prediction search for the coding engine (332). That is, for a new picture to be coded, the predictor (335) can search the reference picture memory (334) for sample data (as candidate reference pixel blocks) or predetermined metadata (reference picture motion vectors, block shapes, etc.), which may serve as suitable prediction references for the new picture. The predictor (335) can operate on a sample-block-pixel-block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor (335), an input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (334).
[0039]
[0046] The controller (350) can manage the coding operations of the source coder (330), including, for example, setting parameters and subgroup parameters used to encode the video data.
[0040]
[0047] All outputs of the aforementioned functional units can be entropy coded in an entropy coder (345), which converts the symbols produced by the various functional units into a coded video sequence by applying lossless compression to the symbols according to techniques such as Huffman coding, variable length coding, arithmetic coding, etc.
[0041]
[0048] The transmitter (340) can buffer the coded video sequence, as produced by the entropy coder (345), and prepare it for transmission over a communication channel (360), which may be a hardware / software link to a storage device that stores the coded video data. The transmitter (340) can merge the coded video data from the video coder (303) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0042]
[0049] The controller (350) can manage the operation of the video encoder (303). During coding, the controller (350) can assign a particular coded picture type to each coded picture, which can affect the coding technique that can be applied to each picture. For example, pictures may often be assigned as one of the following picture types:
[0050] An intra picture (I-picture) is one that can be coded and decoded without using any other picture in the sequence as a source of prediction. Some video codecs allow different types of intra pictures, including, for example, Independent Decoder Refresh ("IDR") pictures. Those skilled in the art are aware of these variations of I-pictures and their respective uses and characteristics.
[0043]
[0051] A predicted picture (P-picture) can be coded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict the sample values of each block.
[0044]
[0052] Bidirectionally predicted pictures (B-pictures) can be coded and decoded using intra- or inter-prediction, which uses at most two motion vectors and reference indices to predict the sample values of each block. Similarly, multiple predicted pictures can use more than two reference pictures and associated metadata for the reconstruction of a block.
[0045]
[0053] A source picture is typically spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and can be coded block by block. Blocks can be predictively coded with reference to other (already coded) blocks, as determined by the coding assignment applied to the respective picture. For example, blocks of an I-picture can be non-predictively coded, or they can be predictively coded with reference to previously coded blocks of the same picture (spatial or intra prediction). Pixel blocks of a P-picture can be predictively coded with temporal or spatial prediction with reference to one previously coded reference picture. Blocks of a B-picture can be predictively coded with temporal or spatial prediction with reference to one or two previously coded reference pictures.
[0046]
[0054] The video encoder (303) may perform coding operations according to a predetermined video coding technique or standard, such as ITU-T Rec. H.266. In this operation, the video encoder (303) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancies in the input video sequence. The coded video data may therefore conform to a syntax specified by the video coding technique or standard being used.
[0047]
[0055] In an embodiment, the transmitter (340) can transmit additional data along with the coded video. The source coder (330) can include such data as part of the coded video sequence. The additional data can include temporal, spatial, and SNR enhancement layers, as well as other forms of redundant data (such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.).
[0048]
[0056] Video can be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlation within a given picture, while inter-picture prediction exploits correlation (temporal or otherwise) between pictures. In one example, a particular picture under encoding / decoding, called the current picture, is partitioned into blocks. If a block in the current picture is similar to a reference block in a reference picture that was previously coded and is still buffered in the video, the block in the current picture can be coded by a vector called a motion vector. The motion vector points to a reference block within the reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.
[0049]
[0057] In some embodiments, bi-prediction techniques may be used for inter-picture prediction. Bi-prediction techniques use two reference pictures, such as a first reference picture and a second reference picture, that both precede the current picture in decoding order (but may be past and future, respectively, in display order) in the video. A block in the current picture may 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 may be predicted by a combination of the first and second reference blocks.
[0050]
[0058] Furthermore, to improve coding efficiency, it is possible to use merge mode techniques for inter-picture prediction.
[0051]
[0059] According to some embodiments of the present disclosure, prediction, such as inter-picture prediction and intra-picture prediction, is performed on a block-by-block basis. For example, according to the HEVC standard, pictures in a sequence of video pictures are partitioned into coding tree units (CTUs) for compression, and the CTUs within a picture have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Generally, a CTU includes three coding tree blocks (CTBs): one luma CTB and two chroma CTBs. Each CTU can be recursively quadtree partitioned into one or more coding units (CUs). For example, a 64x64 pixel CTU can be partitioned into one 64x64 pixel CU, four 32x32 pixel CUs, or sixteen 16x16 pixel CUs. In one example, each CU is analyzed to determine the CU's prediction type, 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. Generally, each PU includes a luma prediction block (PB) and two chroma PBs. In an 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 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.
[0052]
[0060] It should be noted that the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using any suitable technology. In some embodiments, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more integrated circuits. In other embodiments, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more processors executing software instructions.
[0053]
[0061] Aspects of the present disclosure provide techniques for motion-compensated picture boundary padding (also referred to as motion-compensated boundary padding or motion-compensated padding (MCP)). Techniques for motion-compensated picture boundary padding may include using full-pixel (or full-sample) motion compensation data for padding at picture boundaries of a picture. By using full-pixel motion compensation, full pixel data can be fetched from a corresponding reference picture using direct memory access (DMA) (e.g., simple DMA) as padded pixel data within the MCP area at the picture boundary without any fractional interpolation. The MCP area is outside the picture. A motion vector (MV) grouping method can also be used to improve memory bus access efficiency.
[0054]
[0062] VVC allows various inter-prediction modes. For an inter-predicted CU, motion parameters can include a motion vector, one or more reference picture indices, a reference picture list usage index, and additional information for the specific coding features used to generate the inter-predicted samples. Motion parameters can be signaled explicitly or implicitly. If a CU is coded in skip mode, the CU can be associated with a PU and cannot have significant residual coefficients, coded motion vector deltas or MV differences (e.g., MVDs), or reference picture indices. A merge mode can be specified, in which motion parameters for the current CU, including spatial and / or temporal candidates and, optionally, additional information as introduced in VVC, are obtained from neighboring CUs. Merge mode can be applied to inter-predicted CUs, not just skip mode. In one example, an alternative to merge mode is explicit transmission of motion parameters, in which motion information including, for example, MVs, corresponding reference picture indices for each reference picture list, reference picture list usage flags, and other information, is explicitly signaled per CU.
[0055]
[0063] In an embodiment such as VVC, the VVC Test Model (VTM) reference software includes one or more refined inter-predictive coding tools, including: enhanced merge prediction, merged motion vector difference (MMVD) mode, adaptive motion vector prediction with symmetric MVD signaling (AMVP) mode, affine motion compensation prediction, sub-block-based temporal motion vector prediction (SbTMVP), adaptive motion vector resolution (AMVR), motion field storage (1 / 16 luma sample MV storage and 8x8 motion field compression), bi-prediction with CU-level weighting (BCW), bi-directional optical flow (BDOF), prediction refinement using optical flow (PROF), decoder-side motion vector refinement (DMVR), joint inter- and intra-prediction (CIIP), geometric partitioning mode (GPM), etc.
[0056]
[0064] Examples of inter-prediction and related methods (e.g., refined inter-prediction coding tools) are described below. To use TMVP in merge mode and / or AMVP mode, some examples, such as in VVC, store motion data in collocated reference frames (or collocated reference pictures). In one example, motion data is stored in 8x8 blocks. To limit the storage of MVs used for temporal prediction, it is possible to compress the stored MVs, e.g., in VVC, using a 10-bit mantissa-exponent notation. In some embodiments, such as in ECM5, the granularity of motion storage is reduced to a 4x4 block basis.
[0057]
[0065] Techniques for picture boundary padding can be used. The padded portion outside the picture boundary may be used to predict other pictures. For example, in VVC and ECM-4.0, the extended picture area (also referred to as the extended area) is an area surrounding the picture with a size of (maxCUwidth + 16) in each direction of the picture boundary. Pixels within the extended picture area (also called repeated padding pixels) can be derived by repeated boundary padding. When a reference block is located partially or completely outside the picture boundary (OOB), the repeated padded pixels within the extended area can be used in the same way as pixels in a reference picture for motion compensation.
[0058]
[0066] FIG. 4A shows an example of a reference picture (401) with an extension area (also called a repeat padding area or padded area) (410) that is padded according to repeat boundary padding in some examples (e.g., ECM-4.0). In a first round of iterative boundary padding, a first pixel in the extended area that is an immediate neighbor of a pixel in the picture boundary of the reference picture (401) is padded based on the pixel in the picture boundary of the reference picture (401); In a second round of iterative boundary padding, a second pixel in the expanded area that is an immediate neighbor of the first pixel is padded based on the first pixel; and The repeated boundary padding can continue until all pixels in the extension area have been padded.
[0059]
[0067] In a related example, techniques for motion compensation boundary padding may be used. For example, samples outside the picture boundary may be derived by motion compensation rather than using only repetitive padding. FIG. 4B illustrates an example of a reference picture with an extended area (also referred to as a padding area) padded according to motion compensation boundary padding and repetitive boundary padding. In the example of FIG. 4B, the total padded area size may be increased by a predetermined value L (e.g., 64) compared to the padded area (410) in FIG. 4A. The extended area in FIG. 4B may include a first portion (470) that may be padded according to motion compensation boundary padding. The first portion (470) may also be referred to as a motion compensation (MC) padding area (or MCP area). The extended area in FIG. 4B may include a repetitive padding area (480) that is padded by repetitive padding based on the MCP area as described in FIG. 4A, for example.
[0060]
[0068] Referring to Figures 4A-4B, for motion compensation involving MVs pointing to blocks outside the frame boundary (or picture boundary) of a reference picture (e.g., (401) or (451)), the padded pixels in the repetition padding area (410) or the extension area (e.g., including the repetition padding area (480) and the MCP area (470)) of Figure 4B can be used as reference pixels.
[0061]
[0069] 5 shows an example illustrating motion compensation (MC) boundary padding. In MC boundary padding, the motion vector (MV) (561) can be derived based on a boundary block (BBlk) (e.g., a 4x4 boundary block) (511) in a picture 551. For example, the motion vector (MV) (561) is determined based on motion information of the boundary block (511). If the boundary block (511) is intra-coded, the motion information of the boundary block (511) is not available, and zero motion vector (MV) can be used. For example, the motion vector (MV) (561) is set to zero.
[0062]
[0070] When the boundary block (511) is coded using bi-directional inter prediction, the motion information of the boundary block (511) may include two MVs, for example, a first MV pointing to a first pixel position in a first reference picture and a second MV pointing to a second pixel position in a second reference picture. In one example, only one MV (e.g., the first MV or the second MV) is used in MC boundary padding. The MV used in MC boundary padding may point to a pixel position that is further away from a picture boundary in the reference picture of the picture (551). For example, if the first pixel position is further away from a first picture boundary in the first reference picture of the picture (551) than the second pixel position is further away from a second picture boundary in the second reference picture of the picture (551), the first MV is used (e.g., MV (561) is the first MV). If not, a second MV can be used (eg, MV(561) is the second MV).
[0063]
[0071] The motion vector (561) can be used to derive a padding block (or MCP block) (e.g., an Lx4 or 4xL padding block) (521) within the MC padding area (570) of the picture (551). For example, the motion vector (561) points to a reference block (531) in the reference picture (501) of the picture (551) (also referred to as a reference border block or Ref BBlk). An MCP reference block (541) in the reference picture (501) that is adjacent to the reference block (531) can be used to determine the MCP block (521). The size of the MCP reference block (541) can be the same as the size of the MCP block (521). In one example, the size of the reference block (531) is equal to the size of the border block (511).
[0064]
[0072] In some examples, pixels in an MC padding block (e.g., an MCP block (521)) are modified (e.g., compensated) using an offset (e.g., a DC offset or DC offset value). The offset may be determined based on samples in a reconstructed border block (e.g., border block (511) in FIG. 5) in the picture (551) and reference samples in a corresponding reference block (e.g., Ref BBlk (531) in FIG. 5) in the reference picture (501). The offset may be equal to the difference between the DC values (e.g., average pixel values) of the reconstructed border block (e.g., border block (511)) in the picture (551) and the corresponding reference block (e.g., Ref BBlk (531)) in the reference picture (501).
[0065]
[0073] 5 can be combined with the iterative padding method to determine the extension area of the picture (551), as described in FIG. 4B to determine the extension area of the reference picture (451). The value L can indicate the desired frame boundary extension (or desired picture boundary extension).
[0066]
[0074] In one example, two different padded area sizes are implemented, such as 64 (shown in FIG. 4B) and 16. If MV (561) points to a location inside a reference picture boundary, L may be set equal to at least 4. In one example, if L is less than 64, the remainder of the MC padding area (570) may be filled with repeatedly padded samples by using repeated padding as described in FIG. 4A.
[0067]
[0075] In a related example, fractional motion compensation is used to determine an MCP block (e.g., an L×4 block) such as the MCP block (521) in a picture (551) when the MV (561) has a fractional precision part. In some examples, when fractional motion compensation is used to determine the L×4 MCP block, more than L×4 pixels will be fetched from memory for MC padding. When fractional motion compensation is used, the computational complexity and memory bandwidth access can be significant. Due to this complex motion compensation operation, simple DMA methods may not be applicable to fractional motion compensation.
[0068]
[0076] According to embodiments of the present disclosure, MVs with integer sample (or integer pel) precision (e.g., 1-pel) may be used in the MC padding process of a picture. If the MV associated with a block to be MC padded (e.g., an MCP block or an MC padding block) is integer precision, the MCP reference block pointed to by the integer MV can be directly copied from the reference picture without fractional motion compensation. If the MV of the MC padded MCP block (or the MV associated with the MCP block) is in fractional precision, the integer pel MV associated with the MCP block can be generated based on the MV associated with the MCP block having fractional precision. In embodiments, the MV associated with the MCP block (e.g., MV (561)) can be determined based on motion information of a boundary block (e.g., boundary block (511)), as described in FIG. 5. The boundary block can be adjacent to the MCP block. The border blocks and MCP blocks may be separated by a picture boundary of a picture, and the border blocks may be inside the picture and the MCP blocks may be outside the picture.
[0069]
[0077] In an embodiment, the MVs associated with the MCP blocks (e.g., the MVs (561) for the MCP blocks (521)) have fractional precision, and the MVs associated with the MCP blocks may be clipped (e.g., by a simple clipping process) to generate final MVs with integer precision. The clipping process may be applied to the component values of the MVs associated with the MCP blocks.
[0070] For example, the value of the X component of the MV is clipped to retain only the integer sample precision portion, and the fractional precision portion of the value of the X component of the MV is discarded.
[0071] For example, the value of the Y component of the MV is clipped to retain only the integer sample precision part, and the fractional precision part of the Y component of the MV is discarded.
[0078] The MV associated with the MCP block (e.g., MV(561) of MCP block (521)) has fractional precision, and the MV associated with the MCP block can be rounded to generate a final MV with integer precision.
[0072]
[0079] In an embodiment, the MV associated with an MCP block may be rounded towards zero.
[0073] For example, if the X component of the MV has a fractional precision part, the value of the X component of the MV may be rounded towards zero.
[0074] For example, if the Y component of the MV has a fractional precision part, the value of the Y component of the MV may be rounded towards zero.
[0075]
[0080] In embodiments, the MV associated with the MCP block may be rounded towards positive infinity or negative infinity to obtain a final MV associated with the MCP block. In one example, the MV associated with the MCP block is rounded towards positive infinity.
[0076] For example, if the X component of MV has a fractional precision part, the value of the X component of MV is rounded towards positive infinity.
[0077] For example, if the Y component of MV has a fractional precision part, the value of the Y component of MV is rounded towards positive infinity.
[0078]
[0081] In one example, the MV associated with the MCP block is rounded towards negative infinity.
[0079] For example, if the X component of MV has a fractional precision part, the value of the X component of MV may be rounded towards negative infinity.
[0080] For example, if the Y component of MV has a fractional precision part, the value of the Y component of MV may be rounded towards negative infinity.
[0081]
[0082] In an embodiment, sign-based rounding may be applied to the MV associated with the MCP block to generate a final MV with integer precision.
[0082] If a component of MV (eg, the X component or the Y component) is positive, for example, if the positive component of MV has a fractional precision part, the positive component of MV may be rounded towards positive infinity.
[0083] If a component of MV is negative, for example if the negative component of MV has a fractional precision part, the negative component of MV may be rounded towards negative infinity.
[0084]
[0083] Referring to Figure 5, a reference sample (or MCP reference sample) in an MCP reference block (e.g., MCP reference block (541)) in a reference picture (e.g., reference picture (501)) pointed to by a final MV (or integer MV) can be used to determine an MCP block (e.g., MCP block (521)) in an MC padding area (e.g., MC padding area (570)) of a picture (e.g., picture (551)). Referring to Figure 5, if the MV (561) is a final MV with integer precision, only L x 4 samples are used to determine the MCP block (521). If the MV (561) is an MV with fractional precision, for example, due to interpolation, more than L x 4 samples are used to determine the MCP block (521). Therefore, performing full-pixel motion compensation padding using the final MV may be more efficient (e.g., involving less memory bandwidth and less computational complexity) than fractional motion compensation padding using an MV. It allows the use of DMA for full pixel motion compensation padding.
[0085] In an embodiment, reference samples in an MCP reference block (e.g., MCP reference block (541)) can be copied from a reference picture (e.g., reference picture (501)) and directly used as MC padding pixels. For example, MC padding pixels in an MCP block (e.g., MCP block (521)) are directly copied from an MCP reference block.
[0086]
[0085] The reference samples in the MCP reference block (e.g., MCP reference block (541)) can be calibrated, for example, using an offset (or offset value), and the calibrated reference samples (or reference samples with calibration) can be used as MC padding pixels. For example, the MC padding pixels in the MCP block (e.g., MCP block (521)) are based on the reference samples and offsets in the MCP reference block (e.g., MCP reference block (541)).
[0087]
[0086] In one example, an offset such as a DC offset is used in the calibration process. For example, the DC offset is determined based on the difference between a first DC value (e.g., average pixel value) of a boundary block (e.g., boundary block (511)) and a second DC value (e.g., average pixel value) of a reference block (e.g., reference block (531)) for the boundary block in a reference picture. In one example, the first DC value is the average of the pixel values of the pixels (or samples) in the boundary block (e.g., boundary block (511)), and the second DC value is the average of the pixel values of the reference pixels (or reference samples) in the reference block (e.g., reference block (531)) in the reference picture.
[0088]
[0087] The reference block can be determined based on the MV of the MCP block or the final MV (integer MV). A DC offset can be applied to the reference sample in the MCP reference block. For example, to determine the MC padding pixels in the MCP block, a DC offset is added to the reference sample in the MCP reference block.
[0089] In an embodiment, the offset may be signaled relative to an MCP block or a border block associated with an MCP block, for example, relative to each MCP block or each border block associated with a respective MCP block.
[0090]
[0089] In an embodiment, an offset may be signaled in association with a group of MCP blocks or a group of border blocks associated with a group of MCP blocks. In one example, the group of border blocks includes a plurality of border blocks that are within a picture and adjacent to a picture boundary. The group of MCP blocks may include MCP blocks that are within an MCP padding area of a picture and adjacent to a picture boundary. In one example, each border block in the group of border blocks is adjacent to a respective MCP block in the group of MCP blocks. For example, an offset is signaled in association with each group of MCP blocks or each group of border blocks.
[0091]
[0090] Other MCP blocks within the MCP area (570) can be determined using full-pixel motion compensation padding as described for the MCP block (521). Thus, the MCP area (570) can be determined by full-pixel motion compensation padding, which is more efficient than fractional motion compensation padding. An extended area of the picture (551) can include the MCP area (570). The picture (and the extended area) can be used as a reference picture for coding (e.g., reconstructing) another picture.
[0092] According to an embodiment of the present disclosure, the motion vectors used for motion compensation padding may be determined based on multiple motion information of a group of blocks, such as consecutive blocks (e.g., consecutive 4x4 blocks). In an embodiment, multiple motion vectors of consecutive blocks are grouped into a motion vector. For example, n consecutive blocks (e.g., consecutive 4x4 blocks) along a picture boundary are merged into one 4nx4 block (e.g., in one row) or one 4x4n block (e.g., in one column). n may be an integer greater than 1. The n consecutive blocks may include n boundary blocks in a picture adjacent to the picture boundary.
[0093]
[0092] The MV of one of the consecutive blocks may be determined, for example, as described in FIG. 5. In an embodiment, for MC padding, the MV associated with a 4nx4 block or a 4x4n block may be determined based on multiple MVs of each consecutive block. For example, the MV associated with a 4nx4 block or a 4x4n block may be determined based on an average or weighted average of multiple MVs of each consecutive block. The MV associated with a 4nx4 block or a 4x4n block may be determined based on a median filter of multiple MVs of each consecutive block, for example, when n is greater than 2. The MV associated with a 4nx4 block or a 4x4n block may specify an MCP reference block in a reference picture of the picture. The MCP block within the MC padding area may be determined based on a reference sample in the MCP reference block. The MC padding area may be outside the picture and adjacent to a picture boundary. The MCP block may be adjacent to the 4nx4 block or the 4x4n block. In one example, the MCP block and the MCP reference block have a size of 4n×L blocks or L×4n, where L can be any suitable integer such as 4, 16, or 64.
[0094] In one example, MVs associated with 4nx4 blocks or 4x4n blocks have fractional precision and are used to determine MCP reference blocks and then MCP blocks using fractional motion compensation padding. In one example, MVs associated with 4nx4 blocks or 4x4n blocks have fractional precision and are therefore clipped or rounded to obtain MVs with integer precision. MVs associated with 4nx4 blocks or 4x4n blocks with integer precision can be used to determine MCP reference blocks and then MCP blocks using full-pixel motion compensation padding.
[0095]
[0094] Consecutive blocks (e.g., consecutive 4x4 blocks) may include consecutive blocks in a column (e.g., left column, right column) of a picture as shown in Figure 6. Consecutive blocks may include consecutive blocks in a row (e.g., top row, bottom row) of a picture as shown in Figure 7. Consecutive blocks may include a corner block (or corner border block) of a picture and at least one neighboring block (or neighboring border block) of the corner block, as shown in Figure 8.
[0096]
[0095] In an embodiment, the DC offset value for MC padding of each MCP block (e.g., a 4nxL block or an Lx4n block) can be determined based on the difference between the average pixel value of the 4nx4 block or 4x4n block in the picture and the average pixel value of the corresponding reference block (e.g., a 4nx4 block or a 4x4n block) in the reference picture.
[0097]
[0096] The consecutive block or n consecutive blocks may include border blocks in the same column (e.g., left column or right column) in the picture, as shown in Figure 6. Referring to Figure 6, the border blocks (611)-(612) of the picture (651) are arranged in the left column of the picture (651). The border block (611) may have a first MV, and the border block (612) may have a second MV. The border blocks (611)-(612) may be merged with the block (610). The MV (661) associated with the block (610) may be determined based on an average of the first MV and the second MV, such as a weighted average of the first MV and the second MV. The MV (661) may indicate the MCP reference block (641) and the reference block (631) in the reference picture (601) of the picture (651). The MCP block (621) in the MC padding area (670) may be determined based on reference samples in the MCP reference block (641). The MC padding area (670) may be outside the picture (651) and adjacent to the picture boundary (691). The MCP block (621) may be adjacent to the block (610). The reference block (631) may correspond to the block (610). In one example, the size of each of the boundary blocks (611-612) is 4x4. Thus, the block (610) and the reference block (631) each include 4 columns and 8 rows, and the MCP block (621) and the MCP reference block (641) each include L columns and 8 rows, where L may be any suitable integer, such as 4, 16, or 64.
[0098]
[0097] A consecutive block or n consecutive blocks may include a border block in the same row (e.g., the row above or the row below) in a picture, as shown in Figure 7. Referring to Figure 7, the border blocks (613)-(614) of a picture (652) are located in the first row of the picture (652). The border block (613) may have a third MV, and the border block (614) may have a fourth MV. The border blocks (613)-(614) may be merged into a block (615). The MV (662) associated with the block (615) may be determined based on an average of the third MV and the fourth MV, such as a weighted average of the third MV and the fourth MV. The MV (662) may indicate the MCP reference block (642) and the reference block (632) in the reference picture (602) of the picture (652). The MCP block (622) within the MC padding area (672) may be determined based on reference samples within the MCP reference block (642). The MC padding area (672) may be outside the picture (652) and adjacent to the picture boundary (692). The MCP block (622) may be adjacent to the block (615). The reference block (632) may correspond to the block (615). In one example, the size of each of the boundary blocks (613)-(614) is 4x4. Thus, the block (615) and the reference block (632) include 8 columns and 4 rows, and the MCP block (622) and the MCP reference block (642) include 8 columns and L rows, where L may be any suitable integer, such as 4, 16, or 64.
[0099] In an embodiment, the description above in connection with FIG. 7 may apply to the top and / or bottom row of a picture. In an embodiment, n consecutive blocks (e.g., n consecutive 4x4 blocks) along a portion of or the entire top row of a picture boundary are merged into a 4nx4 block (e.g., the top 4nx4 block). In an embodiment, consecutive blocks along a portion of or the entire bottom row of a picture boundary are merged into a 4nx4 block (e.g., the bottom 4nx4 block). The MV associated with the top 4nx4 block (e.g., block (615)) may point to a corresponding 4nx4 block (e.g., reference block (632)) in a reference picture (e.g., picture (602)) and to the first MCP reference block (e.g., MCP reference block (642)) in the reference picture. Reference samples in the first MCP reference block are used as padding pixels along the top row of the picture boundary. The MV associated with the bottom 4nx4 block may point to the corresponding 4nx4 block in the reference picture and the second MCP reference block. The reference samples in the second MCP reference block are used as padding pixels along the bottom row of the picture boundary. In one example, along the left and right picture boundaries, the motion information (e.g., MV) of each 4x4 boundary block in the picture may be used to obtain MC padding pixels, which are padded outside the picture boundary to the left and right of the picture boundary, as shown in Figure 5.
[0100]
[0099] The consecutive block or n consecutive blocks may include a corner block (or corner boundary block) in a picture, as shown in Figure 8. Referring to Figure 8, consecutive blocks (616)-(617) in a picture (653) include a corner block (616) and a nearby boundary block (617). The consecutive blocks (616)-(617) may be merged into a block (618). The motion vector (MV) (663) associated with the block (618) may be determined based on the motion vectors of the respective consecutive blocks (616)-(617), as described with reference to Figures 6-7. The motion vector (MV) (663) may indicate the MCP reference block (643) and the reference block (633) in the reference picture (603) of the picture (653). The MCP block (623) within the MC padding area (673) may be determined based on reference samples within the MCP reference block (643). The MC padding area (673) may be outside the picture (653) and adjacent to the picture boundary (693). The MCP block (623) may be adjacent to the block (618). The reference block (633) may correspond to the block (618). In one example, the size of the consecutive blocks (616)-(617) is 4x4. Thus, the block (618) and the reference block (633) include 8 columns and 4 rows. Each of the MCP block (623) and the MCP reference block (643) may include a top portion of 8 columns and L rows and a left portion of L columns and 4 rows. L may be an appropriate integer, such as 4, 16, or 64.
[0101] According to an embodiment of the present disclosure, a filtering process may be applied to one or more padded samples in the MC padding area (e.g., (570), (670), (672), or (673)). In an embodiment, boundary sample filtering is applied to the padded samples in the MC padding area using spatially nearby samples located in the picture (e.g., (551), (651), (652), or (653)).
[0102] Boundary sample filtering can be applied as a weighted average of padded samples outside the picture and reconstructed samples near the inside of the picture boundary. In an embodiment, a padded sample in the MC padding area (or the current padded sample to be filtered) is filtered based on the padded sample and one or more reconstructed samples in the picture (e.g., at least one sample in the picture that is within N1 lines of the picture boundary of the picture). For example, the filtered padding sample is a weighted average of the padding sample in the MC padding area and one or more reconstructed samples in the picture.
[0103]
[0102] The weight of one of the one or more reconstructed samples used in boundary sample filtering may depend on the distance between the current padded sample and one of the one or more reconstructed samples (located in the picture and used as input for filtering the current padded sample). For example, the current padded sample to be filtered is located on the left of the picture (e.g., in column minus 1), and the one or more reconstructed samples used in boundary sample filtering are located in the same row as the current padded sample and in consecutive columns 0 to (N1-1) in the picture, where N1 is greater than 0. The consecutive columns may include the left column of the picture (e.g., column 0). The weights W0-W of one or more reconstructed samples in each of the consecutive columns 0 to (N1-1) may be: N1 may decrease with column number. For example, weight W0-W N1 Among them, weight W0 is the largest, and weight W N1 is the smallest.
[0104] In an embodiment, the MC padding area includes a first padded sample and a second padded sample. The first padded sample is within N2 lines of the picture boundary, and the second padded sample is outside N2 lines of the picture boundary. The first padded sample can be filtered as described above. The second padded sample is not filtered.
[0105]
[0104] For example, only padded samples that are outside the picture but close to the picture boundary are filtered. For example, padded samples in N2 rows of the picture boundary (e.g., padded samples in N2 rows above the picture and padded samples in N2 rows below the picture) and padded samples in N2 columns of the picture boundary (e.g., padded samples in N2 columns to the left of the picture and padded samples in N2 columns to the right of the picture) can be filtered. N2 can be a positive integer. The value of N2 can include, but is not limited to, 1, 2, 3, 4, etc.
[0106]
[0105] Figure 9 is a flowchart outlining a process (900) according to an embodiment of the present disclosure. The process (900) can be used in a video encoder. In various embodiments, the process (900) is performed by a processing circuit, such as a processing circuit performing the functions of the video encoder (103), a processing circuit performing the functions of the video encoder (303), and the like. In some embodiments, the process (900) is implemented by software instructions, such that the processing circuit performs the process (900) when the processing circuit executes the software instructions. In one example, the process (900) performs full-pixel motion compensation padding or full-pixel MC padding. The process begins at (S901) and proceeds to (S910).
[0107]
[0106] In (S910), an initial motion vector (MV) associated with a motion compensation padding (MCP) block may be determined according to motion information of a boundary block located at a picture boundary of a picture, as described in Fig. 5. The boundary block may be located within the picture, and the MCP block may be located in an MCP area outside the picture, adjacent to the picture boundary of the picture. The initial MV may have fractional precision.
[0108]
[0107] In (S920), a final MV associated with the MCP block may be determined based on the initial MV associated with the MCP block. The final MV may have integer precision.
[0109] In an embodiment, the final MV associated with an MCP block is determined by clipping the initial MV to integer precision.
[0110] In an embodiment, the final MV associated with an MCP block is determined by rounding the initial MV towards zero.
[0111] In an embodiment, the final MV associated with an MCP block is determined by rounding the initial MV towards positive infinity or negative infinity.
[0112] In an embodiment, the initial MV includes an X component and a Y component, and the final MV is determined by rounding the initial MV. For each of the X and Y components with fractional precision, if the component has a positive value, the component may be rounded toward positive infinity. If the component has a negative value, the component may be rounded toward negative infinity.
[0113]
[0109] In (S930), at least the samples in the MCP block may be determined according to the determined final MV with integer precision. For example, the samples in the MCP block may be determined using full-pixel MC padding. In an embodiment, an MCP reference block of the MCP block may be determined according to the final MV associated with the MCP block. The MCP reference block is in a reference picture of the picture. The MCP block may be determined according to the MCP reference block. In one example, the samples in the MCP block may be determined by directly copying the reference samples in the MCP reference block. In one example, an offset (e.g., a DC offset value) is determined based on a difference between an average pixel value of the boundary block and an average pixel value of a reference block of the boundary block in the reference picture. The offset may be applied to at least the samples in the MCP block. For example, to obtain the final samples in the MCP block, an offset may be added to the samples in the MCP block determined by directly copying the reference samples in the MCP reference block.
[0114]
[0110] In one example, one or more samples in an MCP block are filtered based on at least one sample in the picture that is within N1 lines of a picture boundary of the picture.
[0115]
[0111] In one example, the offset and filtering described above is applied to at least the samples within the MCP block.
[0116]
[0112] The process then proceeds to (S999) and ends. The process (900) can be adapted as appropriate. Steps in the process (900) may be modified and / or omitted. Additional steps can be added. Any suitable order of execution can be used. In one example, coding information indicating the offset is encoded. The encoded coding information can be included in the bitstream.
[0117]
[0113] Figure 10 is a flowchart illustrating an overview of a process (1000) according to an embodiment of the present disclosure. The process (1000) can be used in a video decoder. In various embodiments, the process (1000) is performed by a processing circuit, such as a processing circuit performing the functions of the video decoder (110), a processing circuit performing the functions of the video decoder (210), or the like. In some embodiments, the process (1000) is implemented by software instructions, and thus, the processing circuit performs the process (1000) when the processing circuit executes the software instructions. The process (1000) begins at (S1001) and proceeds to (S1010). In one example, the process (1000) performs full-pixel motion compensation padding or full-pixel MC padding.
[0118]
[0114] At (S1010), a bitstream including a plurality of pictures is received.
[0119]
[0115] In (S1020), an initial motion vector (MV) associated with a motion compensation padding (MCP) block may be determined according to motion information of a border block located at a picture boundary of a picture within a plurality of pictures, as described in Figure 5. The border block may be located within the picture, and the MCP block may be located in an MCP area outside the picture, adjacent to the picture boundary of the picture. The initial MV may have fractional precision.
[0120]
[0116] At (S1030), a final MV associated with the MCP block may be determined based on the initial MV. The final MV may have integer precision for full-pixel MC padding.
[0121] In an embodiment, the final MV is determined by clipping the initial MV to integer precision.
[0122] In an embodiment, the final MV is determined by rounding the initial MV towards zero.
[0123] In an embodiment, the final MV is determined by rounding the initial MV towards positive infinity or negative infinity.
[0124] In an embodiment, the initial MV includes an X component and a Y component, and the final MV is determined by rounding the initial MV. For each of the X and Y components with fractional precision, if the component has a positive value, the component may be rounded toward positive infinity. If the component has a negative value, the component may be rounded toward negative infinity.
[0125]
[0117] In (S1040), at least the samples in the MCP block may be reconstructed according to the determined final MV with integer precision, for example, the samples in the MCP block may be reconstructed using full-pixel MC padding.
[0126]
[0118] In an embodiment, an MCP reference block for an MCP block is determined according to a final MV associated with the MCP block. The MCP reference block is within a reference picture of the picture. The MCP block may be determined according to the MCP reference block. In one example, samples within the MCP block may be determined by directly copying reference samples within the MCP reference block. In one example, an offset (e.g., a DC offset value) is determined based on a difference between an average pixel value of a boundary block and an average pixel value of a reference block for the boundary block within the reference picture. In one example, coding information may be signaled and received by a decoder (e.g., a video decoder), and the coding information may indicate the offset. The offset may be applied to at least samples within the MCP block. For example, to obtain a final sample within the MCP block, an offset may be added to samples within the MCP block determined by directly copying reference samples within the MCP reference block.
[0127]
[0119] In one example, one or more samples in an MCP block are filtered based on at least one sample in the picture that is within N1 lines of a picture boundary of the picture.
[0128]
[0120] In one example, the offset and filtering described above is applied to samples within at least an MCP block.
[0129] The process then proceeds to (S1099) and ends. The process (1000) may be adapted as appropriate. Steps in the process (1000) may be modified and / or omitted. Additional steps may be added. Any suitable execution order may be used. The MCP area may be determined, for example, by determining MCP blocks within the MCP area using the steps in the process (1000). The extended area of the picture may include the MCP area. The picture (and the extended area) may be used as a reference picture for coding (e.g., reconstructing) another picture. In one example, the extended area of the picture includes a repeated padding area (e.g., (480)), as illustrated in FIG. 4B.
[0130]
[0122] Figure 11 is a flowchart outlining a process (1100) according to an embodiment of the present disclosure. The process (1100) can be used in a video / image coder, such as a video decoder. In various embodiments, the process (1100) is performed by a processing circuit, such as a processing circuit performing the functions of the video decoder (110), a processing circuit performing the functions of the video decoder (210), and the like. In some embodiments, the process (1100) is implemented by software instructions, and thus, the processing circuit performs the process (1100) when it executes the software instructions. The process (1100) begins at (S1101) and proceeds to (S1110).
[0131]
[0123] At (S1110), a bitstream including multiple pictures is received.
[0132]
[0124] In (S1120), a motion vector (MV) associated with a motion compensation padding (MCP) block may be determined according to motion information of respective border blocks located at picture boundaries of pictures within the plurality of pictures, as described in relation to Figures 6-8. The border blocks may be located within the picture. The MCP block may be located in an MCP area (adjacent to the picture boundary of the picture) outside the picture. Each of the border blocks may be a spatial neighbor of a border block within the plurality of border blocks, and the border blocks may be spatially adjacent to the MCP block.
[0133] In an embodiment, the motion information includes a plurality of motion vectors (MVs) for each of the plurality of boundary blocks. In one example, the MV associated with the MCP block is determined by averaging (e.g., weighted averaging) the plurality of motion vectors for each of the plurality of boundary blocks, as described in connection with FIGS. 6-7. In one example, the MV associated with the MCP block is determined by applying a median filter to the plurality of motion vectors, for example, when the number of motion vectors is greater than two.
[0134]
[0126] In one example, the picture border includes a top picture border, a bottom picture border, a left picture border, and a right picture border. In one example, the plurality of border blocks are located at the top picture border. In one example, the plurality of border blocks are located at the bottom picture border. In one example, the size of each of the plurality of border blocks is 4x4, the number of the plurality of border blocks is n, and the size of the MCP block is 4nxL, where L can be a positive integer such as 4, 16, or 64.
[0135]
[0127] In (S1130), at least the samples in the MCP block can be determined according to the determined MV. In an embodiment, the MCP reference block of the MCP block is determined according to the determined MV, and the MCP reference block is in the reference picture of the picture. The MCP block can be determined according to the MCP reference block as described above.
[0136]
[0128] In one example, the offset is determined based on samples in a plurality of boundary blocks and reference samples in a plurality of reference blocks corresponding to the plurality of boundary blocks. In one example, the offset is determined based on a difference between an average pixel value of the plurality of boundary blocks and an average pixel value of the plurality of reference blocks. The plurality of reference blocks may be present in the reference picture and may be specified by the determined MV. The offset may be applied to samples in at least the MCP block. In one example, the above-mentioned offset and filtering are applied to samples in at least the MCP block.
[0137]
[0129] In an embodiment, the determined MV associated with the MCP has fractional precision, and the final MV associated with the MCP block having integer precision is determined based on the determined MV. The MCP block can be determined according to the determined final MV having integer precision.
[0138]
[0130] The process then proceeds to (S1199) and ends. The process (1100) may be adapted as appropriate. Steps in the process (1100) may be modified and / or omitted. Additional steps may be added. Any suitable order of execution may be used. The process (1100) may be adapted for use in an encoder (e.g., a video encoder or an image encoder). For example, steps (S1120) and (S1130) may be used in an encoder.
[0139]
[0131] Figure 12 is a flowchart outlining a process (1200) according to an embodiment of the present disclosure. The process (1200) can be used in a video / image coder, such as a video decoder. In various embodiments, the process (1200) is performed by a processing circuit, such as a processing circuit performing the functions of the video decoder (110), a processing circuit performing the functions of the video decoder (210), and the like. In some embodiments, the process (1200) is implemented by software instructions, and thus, the processing circuit performs the process (1200) when it executes the software instructions. The process (1200) begins at (S1201) and proceeds to (S1210).
[0140]
[0132] At (S1210), a bitstream including multiple pictures is received.
[0141]
[0133] In (S1220), a motion vector (MV) associated with the MCP block can be determined according to motion information of a boundary block located at a picture boundary of a picture among a plurality of pictures, where the boundary block is located within the picture and the MCP block is located outside the picture in an MCP area adjacent to the picture boundary of the picture.
[0142]
[0134] At (S1230), samples in the MCP block may be determined according to the determined MV using motion compensation padding. The motion compensation padding may be fractional motion compensation padding if the determined MV has fractional precision. The motion compensation padding may be full-pixel motion compensation padding if the determined MV (i) has integer precision, or (ii) is clipped or rounded to integer precision. In one example, an offset is further applied to the samples in the MCP block, as described above.
[0143]
[0135] In (S1240), the samples in the MCP block may be filtered based on at least one sample in the picture that is within N1 lines of a picture boundary of the picture. In one example, the samples in the MCP block are filtered based on a weighted average of the sample and at least one sample in the picture. The weight of the sample in the at least one sample in the picture is based on the distance between (i) the sample in the MCP block and (ii) the sample in the at least one sample in the picture. In one example, the samples in the MCP block are within N2 lines of the picture boundary, and the samples in the MCP block that are outside the N2 lines of the picture boundary are not filtered.
[0144] The process then proceeds to (S1299) and ends. The process (1200) may be adapted as appropriate. Steps in the process (1200) may be modified and / or omitted. Additional steps may be added. Any suitable order of execution may be used. The process (1200) may be adapted for use in an encoder (e.g., a video encoder or an image encoder). For example, steps (S1220), (S1230) and (S1240) may be used in an encoder.
[0145]
[0137] The embodiments in this disclosure may be used separately or combined in any order. Furthermore, each of the methods (or embodiments), encoders, and decoders may be implemented by processing circuitry (e.g., one or more processors, or one or more integrated circuits). In one example, the one or more processors execute a program stored on a non-transitory computer-readable medium.
[0146]
[0138] The techniques described above can be implemented as computer software using computer-readable instructions and can be physically stored on one or more computer-readable media. For example, Figure 13 illustrates a computer system (1300) suitable for implementing certain embodiments of the disclosed subject matter.
[0147]
[0139] Computer software can be coded using any suitable machine code or computer language that can be subject to assembly, compilation, linking, or similar mechanisms to create code that includes instructions that can be executed directly by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or that can be executed via interpretation, microcode execution, etc.
[0148]
[0140] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, etc.
[0149] 13 for computer system 1300 are exemplary in nature and are not intended to suggest any limitation on the scope of functionality or application of the computer software implementing embodiments of the present disclosure. Nor should the arrangement of components be interpreted as having any dependency or requirement regarding any one or combination of components shown in the exemplary embodiment of computer system 1300.
[0150] The computer system 1300 may include certain human interface input devices that may respond to input by one or more human users, for example, via tactile input (e.g., keystrokes, swipes, data glove movements), auditory input (e.g., voice, clapping), visual input (e.g., gestures), or olfactory input (not shown). Human interface devices may also be used to capture certain media that do not necessarily involve direct human conscious input, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from still-image cameras), and video (e.g., two-dimensional video, three-dimensional video, including stereoscopic pictures).
[0151]
[0143] The input human interface devices may include one or more of (only one of each is shown) a keyboard (1301), a mouse (1302), a trackpad (1303), a touch screen (1310), a data glove (not shown), a joystick (1305), a microphone (1306), a scanner (1307), and a camera (1308).
[0152] The computer system 1300 may also include certain human interface output devices that may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices can include haptic output devices (e.g., haptic feedback via a touch screen (1310), data gloves (not shown), joystick (1305), although there can be haptic feedback devices that do not serve as input devices), auditory output devices (e.g., speakers (1309), headphones (not shown)), visual output devices (e.g., screens (1310), including CRT screens, LCD screens, plasma screens, and OLED screens, each with or without touch screen input capability, each with or without haptic feedback capability, some of which may be capable of outputting two-dimensional visual output, three-dimensional or higher output by means such as stereoscopic output; virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0153]
[0145] The computer system (1300) may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (1320) using media such as CD / DVD (1321), thumb drives (1322), removable hard drives or solid state drives (1323), legacy magnetic media (not shown) such as tape and floppy disks (not shown), and specialized ROM / ASIC / PLD-based devices such as security dongles (not shown).
[0154]
[0146] Those skilled in the art will also understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not encompass transmission media, carrier waves, or other transient signals.
[0155] The computer system 1300 may also include interfaces to one or more communications networks 1355. The networks may be, for example, wireless, wired, or optical. The networks may further be local, wide area, metropolitan, automotive, real-time, delay-tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks (including GSM, 3G, 4G, 5G, LTE, etc.), TV wired or wireless wide area digital networks (including cable TV, satellite TV, and terrestrial TV), automotive networks including CANBus, etc. Particular networks typically require an external network interface adapter attached to a particular general-purpose data port or peripheral bus (1349) (e.g., a USB port on the computer system (1300)); others are commonly integrated into the core of the computer system (1300) by attaching to a system bus, as described below (e.g., an Ethernet interface is integrated in a PC computer system, and a cellular network interface is integrated in a smartphone computer system). Using any of these networks, the computer system (1300) can communicate with other entities. Such communication can be one-way receive-only (e.g., broadcast TV), one-way transmit-only (e.g., CANbus to certain CANbus devices), or bidirectional, such as with other computer systems using local or wide-area digital networks. Specific protocols and protocol stacks, as described above, can be used with each of these networks and network interfaces.
[0156]
[0148] The aforementioned human interface devices, human accessible storage devices, and network interfaces can be attached to the core (1340) of the computer system (1300).
[0157] The cores (1340) may include one or more central processing units (CPUs) (1341), graphics processing units (GPUs) (1342), specialized programmable processing units in the form of field programmable gate arrays (FPGAs) (1343), task-specific hardware accelerators (1344), graphics adapters (1350), etc. These devices, along with read-only memory (ROM) (1345), random access memory (1346), and internal mass storage devices (e.g., internal non-user-accessible hard drives, SSDs, etc.) (1347), may be connected via a system bus (1348). In some computer systems, the system bus (1348) may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices can be attached directly to the core system bus (1348) or via a peripheral bus (1349). In one example, a screen (1310) can be connected to a graphics adapter (1350). Peripheral bus architectures include PCI, USB, etc.
[0158]
[0150] The CPU (1341), GPU (1342), FPGA (1343), and accelerator (1344) may combine to execute specific instructions that may constitute the aforementioned computer code. The computer code may be stored in ROM (1345) or RAM (1346). Temporary data may be stored in RAM (1346), while persistent data may be stored in, for example, internal mass storage (1347). Rapid storage and retrieval from any memory device may be enabled by utilizing cache memory, which may be closely associated with one or more of the CPU (1341), GPU (1342), mass storage (1347), ROM (1345), RAM (1346), etc.
[0159]
[0151] The computer-readable medium can have computer code thereon for performing various computer-implemented operations. The medium and computer code can be those specially designed and constructed for the purposes of the present disclosure, or they can be of the kind well known and available to those having skill in the computer software arts.
[0160] By way of example and not limitation, the architecture (1300), and in particular a computer system having a core (1340), may provide functionality as a result of operations by a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be media associated with user-accessible mass storage, as described above, as well as core-internal mass storage (1347) or specific storage of a non-transitory nature, such as ROM (1345), of the core (1340). Software implementing various embodiments of the present disclosure may be stored in such devices and executed by the core (1340). The computer-readable media may include one or more memory devices or chips, depending on particular needs. Software can cause the core (1340) and, in particular, the processors therein (including CPUs, GPUs, FPGAs, etc.) to perform certain processes or portions of certain processes described herein, including defining data structures stored in RAM (1346) and modifying such data structures according to processes defined by the software. Additionally or alternatively, the computer system can provide functionality as a result of logic hardwired or otherwise embedded within circuitry (e.g., accelerators (1344)), which can execute certain processes or portions of certain processes described herein instead of or in conjunction with software. References to software include logic, and vice versa, where appropriate. References to computer-readable media can include circuitry (such as integrated circuits (ICs)) that stores software for execution, circuitry embodying logic for execution, or both, as appropriate. The present disclosure encompasses any appropriate combination of hardware and software.
[0161] The use of "at least one" or "one" in this disclosure is intended to include any one or combination of the listed elements. For example, reference to at least one of A, B, or C; at least one of A, B, and C; at least one of A, B, and / or C; and at least one of AC is intended to include A only, B only, C only, or any combination thereof. Reference to one of A or B, or one of A and B is intended to include A or B or (A and B). The use of "one" does not exclude any combination of listed elements, where applicable, for example, where the elements are not mutually exclusive.
[0162]
[0154] While this disclosure describes a number of exemplary embodiments, there are alterations, permutations, and various substitute equivalents that fall within the scope of this disclosure. It will thus be understood that those skilled in the art will be able to devise many systems and methods that, while not explicitly shown or described herein, embody the principles of the present disclosure and therefore are within its spirit and scope.
Claims
1. 1. A video decoding method in a video coder, comprising: receiving a bitstream including a plurality of pictures; determining an initial motion vector (MV) associated with a motion compensated padding (MCP) block having fractional precision, the initial MV being determined according to motion information of a border block located at a picture boundary of a picture within the plurality of pictures, the border block being located within the picture, and the MCP block being located within an MCP area of the picture that is outside the picture and adjacent to the picture boundary; generating a final MV having integer precision based on an initial MV associated with the MCP block, the final MV associated with the MCP being generated by rounding the initial MV associated with the MCP block towards zero, the final MV being associated with the MCP block; and reconstructing at least samples in the MCP block according to the generated final MV with integer precision; A method comprising:
2. A video decoding method in a video coder, comprising: receiving a bitstream including a plurality of pictures; determining an initial motion vector (MV) associated with a motion compensated padding (MCP) block having fractional precision, the initial MV being determined according to motion information of a border block located at a picture boundary of a picture within the plurality of pictures, the border block being located within the picture, and the MCP block being located within an MCP area of the picture that is outside the picture and adjacent to the picture boundary; generating a final MV having integer precision based on an initial MV associated with the MCP block, wherein the final MV associated with the MCP block is generated by rounding the initial MV associated with the MCP block towards positive infinity or negative infinity, the final MV being associated with the MCP block; and reconstructing at least samples in the MCP block according to the generated final MV with integer precision; A method comprising:
3. A video decoding method in a video coder, comprising: receiving a bitstream including a plurality of pictures; determining an initial motion vector (MV) associated with a motion compensated padding (MCP) block having fractional precision, the initial MV being determined according to motion information of a border block located at a picture boundary of a picture within the plurality of pictures, the border block being located within the picture, and the MCP block being located within an MCP area of the picture that is outside the picture and adjacent to the picture boundary; generating a final MV with integer precision based on an initial MV associated with the MCP block, the final MV being associated with the MCP block; and reconstructing at least samples in the MCP block according to the generated final MV with integer precision; wherein the initial MV associated with the MCP block has an X component and a Y component, and for each of the X component and the Y component with fractional precision, In response to a component being positive, generating the final MV includes rounding the component towards positive infinity; and A method wherein, in response to a component being negative, generating the final MV comprises rounding the component towards negative infinity.
4. A video decoding method in a video coder, comprising: receiving a bitstream including a plurality of pictures; determining an initial motion vector (MV) associated with a motion compensated padding (MCP) block having fractional precision, the initial MV being determined according to motion information of a border block located at a picture boundary of a picture within the plurality of pictures, the border block being located within the picture, and the MCP block being located within an MCP area of the picture that is outside the picture and adjacent to the picture boundary; generating a final MV with integer precision based on an initial MV associated with the MCP block, the final MV being associated with the MCP block; and reconstructing at least samples in the MCP block according to the generated final MV with integer precision; wherein the reconstructing step comprises: determining an MCP reference block for the MCP block according to the final MV, wherein the MCP reference block is within a reference picture of the picture; and reconstructing the MCP block according to the MCP reference block; A method comprising:
5. 5. The method of claim 4, wherein the step of reconstructing the MCP block according to the MCP reference block comprises: determining an offset based on a difference between an average pixel value of the border block and an average pixel value of a reference block of the border block in the reference picture; and applying the offset to the at least samples in the MCP block; A method comprising:
6. 5. The method of claim 4, comprising receiving coding information specifying an offset; The method of claim 1, wherein reconstructing the MCP block according to the MCP reference block comprises applying the offset to the at least samples in the MCP block.
7. 5. The method of claim 4, wherein the step of reconstructing the MCP block according to the MCP reference block comprises:
10. A method comprising: filtering samples in the MCP block based on at least one sample in the picture that is within N1 lines of a picture boundary of the picture.
8. 1. A video encoding method in a video coder, comprising: determining an initial motion vector (MV) associated with a motion compensated padding (MCP) block according to motion information of a border block located at a picture boundary of a picture, wherein the border block is located within the picture, and the MCP block is located within an MCP area outside the picture and adjacent to the picture boundary of the picture, and the initial MV has fractional precision; determining a final MV with integer precision based on an initial MV associated with the MCP block, wherein the initial MV associated with the MCP block is rounded towards zero to generate the final MV associated with the MCP block, the final MV being associated with the MCP block; and determining at least samples in the MCP block according to the determined final MV with integer precision; encoding a bitstream including pictures containing said samples and transmitting the encoded bitstream to a decoder; A method comprising:
Citation Information
Patent Citations
Motion compensated boundary pixel padding
US20190082193A1