Full pixel-based and group-based motion compensated picture border padding
Patent Information
- Application Number
- JP2024547446
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-06-08
- Filing Date
- 2023-06-14
- Publication Date
- 2025-03-07
- Estimated Expiration
- 2043-06-14
Smart Images

Figure 2025506163000001_ABST
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, entitled "Full Pixel-Based and Group-Based Motion Compensated Picture Boundary Padding," filed on June 8, 2023, which claims the benefit of priority to U.S. Provisional Application No. 63 / 388,598, entitled "Picture Boundary Fractional Motion Compensated Free Padding and Grouping-Based MC Padding," filed on July 12, 2022. The disclosures of the prior applications 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 provided 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 such work is described in this background section or in a descriptive manner that may not otherwise qualify as prior art at the time of filing.
[0004]
[0004] Image / video compression can help transmit image / video files among various devices, storages, and networks with minimal quality loss. In some examples, video codec techniques can compress video based on spatial and temporal redundancy. In one example, video codecs can use a technique called intra prediction that 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, video codecs can use a technique called inter prediction that 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 indicated by a motion vector (MV). Summary of the Invention
[0005]
[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 a plurality of pictures. An initial motion vector (MV) associated with a motion compensation padding (MCP) block is determined according to motion information of a border block located at a picture boundary of a picture in the plurality of pictures. The border block is located within the picture. The MCP block is located within an MCP area that is 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 in the MCP block are reconstructed according to the generated final MV.
[0006] In an embodiment, an MV associated with an MCP block is determined according to motion information of respective border blocks located at a picture boundary of a picture in a plurality of pictures. The border blocks are located in the picture, and the MCP block is located in an MCP area adjacent to the picture boundary outside the picture. Each of the border blocks is a spatial neighbor of a border block in the border blocks. The border 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, the MV associated with the MCP block is determined according to the motion information of a border block located at a picture boundary of the picture. The border block is located within the picture. The MCP block is located within an MCP area outside the picture and adjacent to the picture boundary of the picture. The samples in the MCP block are determined according to the determined MV using motion compensation padding. 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, cause the computer to perform a method for video encoding / decoding. [Brief description of the drawings]
[0009] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings. [Figure 1]
[0010] FIG. 1 is a schematic diagram of an example block diagram of a communication system (100). [Diagram 2]
[0011] FIG. 2 is a schematic diagram of an example block diagram of a decoder. [Diagram 3]
[0012] FIG. 3 is a schematic diagram of an example block diagram of an encoder. [Figure 4A]
[0013] 4A-4B show examples of reference pictures along with the areas to be expanded. [Figure 4B] 4A-4B show examples of reference pictures with areas to be expanded. [Diagram 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] 6-8 show examples illustrating group-based motion compensation boundary padding. [Figure 8] 6-8 show examples illustrating group-based motion compensation boundary padding. [Figure 9]
[0016] FIG. 9 shows an exemplary flow chart outlining the encoding process. [Figure 10]
[0017] 10-12 show exemplary flow charts outlining the decoding process. [Figure 11] 10-12 show an exemplary flow chart outlining the decoding process. [Figure 12] 10-12 show an exemplary flow chart 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 PREFERRED EMBODIMENTS
[0010]
[0019] 1 illustrates a block diagram of a video processing system (100) according to 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, storage of compressed video on digital media (including CDs, DVDs, memory sticks, etc.), and the like.
[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 stream of video pictures (102) includes samples captured by the digital camera. The stream of video pictures (102), depicted as a thick line to emphasize the amount of data when compared to the encoded video data (104) (or coded video bitstream), may be processed by an electronic device (120) that includes a video encoder (103) coupled to the video source (101). The video encoder (103) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter as described in more detail below. The encoded video data (104) (or encoded video bitstream), depicted as thin lines to emphasize the smaller amount of data when compared to the stream of video pictures (102), can be stored in 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, the 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) may be included in an electronic device (230). The electronic device (230) may include a receiver (231) (e.g., a receiving circuit). The video decoder (210) may be used in place of the video decoder (110) in the example of FIG. 1.
[0015]
[0023] The receiver (231) is capable of receiving one or more coded video sequences to be decoded by the video decoder (210). In an embodiment, one coded video sequence is received 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 may be received from a channel (201), which may be a hardware / software link to a storage device that stores the coded video data. The receiver (231) may receive the coded video data together with other data, such as coded audio data and / or auxiliary data streams, which may be transferred using respective entities (not shown). The receiver (231) is capable of separating the coded video sequences from the other data.
[0016] To deal with network jitter, a buffer memory (215) may be coupled between the receiver (231) and the entropy decoder / parser (220) (hereafter 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 outside the video decoder (210) (not shown). In yet another example, there may be a buffer memory (not shown) outside the video decoder (210), for example to deal with network jitter, and even another buffer memory (215) inside the video decoder (210), for example to handle playback timing. If the receiver (231) is receiving data from a store / 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) to reconstruct 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 and may follow various principles including variable length coding, Huffman coding, arithmetic coding with or without context effects, etc. The parser (220) can extract from the coded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on the at least one parameter corresponding to the group. The subgroups 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 different units depending on the type of the 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 mentioned, the video decoder (210) may be further conceptually subdivided into a number of functional units as described below. In a practical implementation operating within commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is adequate.
[0021]
[0028] The first unit is a scalar / inverse transform unit (251), which receives the 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 part 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 a block of the same size and shape of the block being reconstructed using already reconstructed surrounding information taken from the current picture buffer (258). The current picture buffer (258) buffers, for example, the partially reconstructed current picture and / or the fully reconstructed current picture. The aggregator (255) adds, possibly 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 a case, 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) related to the block, these samples are added by the aggregator (255) to the output of the scalar / inverse transform unit (251) (in this case called 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 the prediction samples may be controlled by the 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 may 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 a loop filter unit (256). Video compression techniques may include in-loop filtering techniques controlled by parameters contained in the coded video sequence (also called 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 parts (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 can be stored in a reference picture memory (257) for use in future inter-picture prediction.
[0026]
[0033] Once a given coded picture has been fully reconstructed, it can be used as a reference picture for future predictions. For example, once a coded picture corresponding to a 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 future coded picture.
[0027]
[0034] The video decoder (210) may perform decoding operations according to a standard or a given video compression technique, such as ITU-T Rec. H.265. The coded video sequence may comply with the syntax specified by the video compression technique or standard used in the sense that the coded video sequence conforms to both the syntax of the video compression technique or standard and the profile as documented in the video compression technique or standard. In particular, a profile may select a particular tool from all tools available in the video compression technique or standard as the only tool that may be used under that profile. Also, what is required for compliance is that the complexity of the coded video sequence falls within a range defined by the level of the video compression technique or standard. In some cases, that level limits the maximum picture size, the maximum frame rate, the maximum reconstruction sample rate (e.g., measured in megasamples per second), the maximum reference 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) may receive video samples from a video source (301) (which in the example of FIG. 3 is not part of the electronic device (320)) capable of capturing 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 that 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. The video data may be provided as a number of individual pictures that convey motion when viewed in sequence. The picture itself may be organized as a spatial array of pixels, 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 appreciate 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 constraint. Enforcing an appropriate coding rate is one function of the controller (350). In some embodiments, the controller (350) controls and is operatively coupled to other functional units as described below, the couplings of 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, ...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (350) may be configured with other suitable 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 reference pictures) and a (local) decoder (333) embedded in the video encoder (303). The decoder (333) reconstructs the symbols to generate sample data in a similar manner as the (remote) decoder would generate them. The reconstructed sample stream (sample data) is input to a reference picture memory (334). Since the decoding of the symbol stream produces bit-exact results independent of the location of the decoder (local or remote), the contents in the reference picture memory (334) are also bit-exact between the local and remote encoders. In other words, the predictor of the encoder "sees" exactly the same sample values as the reference picture samples that the decoder would "see" if it were to use 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 techniques 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, with brief reference 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 the parser (220), may not be fully implemented in the local decoder (333).
[0035]
[0042] In an embodiment, 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. Thus, the disclosed subject matter focuses on the operation of the decoder. A description of the encoder techniques can be omitted, since they are the inverse 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 the reference pictures that may be selected as predictive references for the input picture.
[0037]
[0044] The local video decoder (333) can decode the coded video data of the pictures that can be designated as reference pictures based on the symbols generated by the source coder (330). The operation of the coding engine (332) can advantageously be a non-lossless process. If the coded video data can be decoded by a video decoder (not shown in FIG. 3), the reconstructed video sequence can be a replica of the source video sequence, typically 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 as reconstructed reference pictures obtained by the far-end video decoder (assuming there are no transmission errors).
[0038]
[0045] The predictor (335) may perform a prediction search for the coding engine (332). That is, for a new picture to be coded, the predictor (335) may search the reference picture memory (334) for sample data (as candidate reference pixel blocks) or predefined metadata (reference picture motion vectors, block shapes, etc.), which may serve as suitable prediction references for the new picture. The predictor (335) may 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), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (334).
[0039]
[0046] The controller (350) may manage the coding operations of the source coder (330), including, for example, setting the 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 a 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) may manage the operation of the video encoder (303). During coding, the controller (350) may assign a particular coded picture type to each coded picture, which may affect the coding technique that may 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 a 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 predictive picture (P-picture) is one that 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] Bi-directionally predicted pictures (B-pictures) are those that 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 usually spatially subdivided into several 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 I pictures can be non-predictively coded or they can be predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). Pixel blocks of P pictures can be predictively coded with temporal or spatial prediction with reference to one previously coded reference picture. Blocks of B pictures 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 given video coding technique or standard, such as ITU-T Rec. H.266, in which 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 thus conform to a syntax specified by the video coding technique or standard being used.
[0047]
[0055] In an embodiment, the transmitter (340) may transmit additional data along with the encoded video. The source coder (330) may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data (redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.).
[0048]
[0056] A 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 in 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 in the video and is still buffered, the block in the current picture can be coded by a vector called a motion vector. The motion vector points to a reference block in the reference picture and can 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. According to bi-prediction techniques, two reference pictures are used, such as a first reference picture and a second reference picture, both preceding in decoding order (but potentially past and future, respectively, in display order) the current picture in a 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, predictions such as inter-picture prediction and intra-picture prediction are 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 in a picture have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. In general, a CTU includes three coding tree blocks (CTBs), one luma CTB and two chroma CTBs. Each CTU can be recursively quad-tree partitioned into one or more coding units (CUs). For example, a 64×64 pixel CTU can be partitioned into one CU-1 of 64×64 pixels, four CU-4 of 32×32 pixels, or sixteen CU-16 of 16×16 pixels. In one example, each CU is analyzed to determine a prediction type of the CU, such as an inter prediction type or an intra prediction type. A CU is divided into one or more Prediction Units (PUs) depending on temporal and / or spatial predictability. In general, 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. Taking a luma prediction block as an example of a prediction block, the prediction block includes a matrix of values (e.g., luma values) for pixels, such as 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, 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 an embodiment, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more integrated circuits. In another embodiment, 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 compensation 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 pictures. 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 in 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] Various inter prediction modes can be used in VVC. For an inter predicted CU, the 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. The motion parameters can be signaled explicitly or implicitly. If the 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., MVD), or reference picture indices. A merge mode can be specified, in which the motion parameters for the current CU, including spatial and / or temporal candidates, and optionally additional information as introduced in VVC, are obtained from nearby CUs. The merge mode can be applied to inter predicted CUs, not just for skip mode. In one example, an alternative to the merge mode is explicit transmission of motion parameters, in which motion information including, for example, the MV, the corresponding reference picture index for each reference picture list, a reference picture list usage flag, 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), and the like.
[0056]
[0064] Examples of inter-prediction and related methods (e.g., refined inter-prediction coding tools) are described below. To use TMVP in merge and / or AMVP modes, 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 block units. To limit the storage of MVs used for temporal prediction, it is possible to compress the stored MVs, for example in VVC, using a 10-bit mantissa-exponent representation. In some embodiments, such as in ECM5, the granularity of the motion storage is reduced to a 4x4 block basis.
[0057]
[0065] Techniques for picture boundary padding can be used. The padded parts 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 that surrounds the picture with a size of (maxCUwidth+16) in each direction of the picture boundary. Pixels in 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 in the extended area can be used similarly to 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 the 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 a pixel in the picture boundary of the reference picture (401); In a second round of the 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 iterative border 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 shows an example of a reference picture with an extended area (also called 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 predefined value L(eg, 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 with MVs pointing to blocks outside the frame boundary (or picture boundary) of a reference picture (e.g., (401) or (451)), it is possible to use padded pixels in the repeated padding area (410) or the extended area (e.g., including the repeated padding area (480) and the MCP area (470)) of Figure 4B as reference pixels.
[0061]
[0069] 5 shows an example illustrating motion compensation (MC) border padding. In MC border padding, it is possible to derive an MV (561) based on a boundary block (BBlk) (e.g., a 4x4 border block) (511) in a picture 551. For example, the 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 a zero MV can be used. For example, the MV (561) is set to zero MV.
[0062]
[0070] If the boundary block (511) is coded with 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 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, the second MV can be used (eg, MV(561) is the second MV).
[0063]
[0071] The MV (561) can be used to derive a padding block (or MCP block) (e.g., an Lx4 or 4xL padding block) (521) in the MC padding area (570) of the picture (551). For example, the MV (561) points to a reference block (also referred to as a reference border block or Ref BBlk) (531) in the reference picture (501) of the picture (551). 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., MCP block (521)) are modified (e.g., compensated) with 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 a picture (551) and reference samples in a corresponding reference block (e.g., Ref BBlk (531) in FIG. 5) in a reference picture (501). The offset may be equal to the difference between the DC values (e.g., average pixel value) of the reconstructed border block (e.g., border block (511)) in a picture (551) and the corresponding reference block (e.g., Ref BBlk (531)) in a reference picture (501).
[0065]
[0073] 5 may 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 may indicate a desired frame boundary extension (or a desired picture boundary extension).
[0066]
[0074] In one example, two different padded area sizes are implemented, e.g., 64 (shown in FIG. 4B) and 16. If MV (561) points to an interior location of a reference picture boundary, L may be set equal to at least 4. In one example, if L is less than 64, the remaining portion of the MC padding area (570) may be filled with repetitively padded samples by using repetitive 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 an 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 an 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 may be significant. Due to this complex motion compensation operation, a simple DMA method may not be applicable to fractional motion compensation.
[0068]
[0076] According to an embodiment of the present disclosure, MVs with integer sample (or integer pel) precision (eg, 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 in integer precision, the MCP reference block to which the integer MV points may be directly copied from the reference picture without fractional motion compensation. If the MV of the MCP block to be MC padded (or the MV associated with the MCP block) is in fractional precision, the integer pel MV associated with the MCP block may be generated based on the MV associated with the MCP block having fractional precision. In an embodiment, the MV associated with the MCP block (e.g., MV (561)) may be determined based on the motion information of a border block (e.g., border block (511)) as described in FIG. 5. The border block may 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 MV associated with the MCP block (e.g., the MV (561) for the MCP block (521)) has fractional precision, and the MV associated with the MCP block may be clipped (e.g., by a simple clipping operation) to generate a final MV with integer precision. The clipping operation may be applied to the values of the components of the MV associated with the MCP block.
[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 an MCP block (e.g., MV (561) of MCP block (521)) has fractional precision, and the MV associated with the MCP block may 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 MV has a fractional precision part, the value of the X component of 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 an embodiment, 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 an MCP block is rounded towards negative infinity.
[0079] For example, if the X component of MV has a fractional precision portion, 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 portion, the value of the Y component of MV may be rounded towards negative infinity.
[0081]
[0082] In an embodiment, a sign-based rounding process 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, then 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, then the negative component of MV may be rounded towards negative infinity.
[0084]
[0083] Referring to FIG. 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)) to which a final MV (or integer MV) points 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 FIG. 5, if the MV (561) is a final MV with integer precision, only L×4 samples are used to determine the MCP block (521). If the MV (561) is an MV with fractional precision, more than L×4 samples are used to determine the MCP block (521), for example due to interpolation. Thus, performing full pixel motion compensation padding using the final MV may be more efficient (e.g., involves less memory bandwidth and less computational complexity) than fractional motion compensation padding using the MV. It is now possible to use DMA for full pixel motion compensation padding.
[0085] In an embodiment, the 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 used directly as MC padding pixels. For example, the MC padding pixels in an MCP block (e.g., MCP block (521)) are copied directly from the MCP reference block.
[0086]
[0085] The reference samples in the MCP reference block (e.g., MCP reference block (541)) can be calibrated, for example, with 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 a 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)) of the boundary block in a reference picture. In one example, the first DC value is an average of pixel values of pixels (or samples) in the boundary block (e.g., boundary block (511)), and the second DC value is an average of pixel values of 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, a DC offset is added to the reference sample in the MCP reference block to determine the MC padding pixels in the MCP block.
[0089] In an embodiment, the offset may be signaled relative to the MCP block or a border block associated with the MCP block, for example, the offset is signaled relative to each MCP block or each border block associated with the respective MCP block.
[0090]
[0089] In an embodiment, the offset may be signaled in association with a group of MCP blocks or a group of border blocks associated with the group of MCP blocks. In one example, the group of border blocks includes a plurality of border blocks that are in a picture and adjacent to a picture boundary. The group of MCP blocks may include an MCP block that is in an MCP padding area of the 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, the offset is signaled in association with each group of MCP blocks or each group of border blocks.
[0091]
[0090] The other MCP blocks in 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 MV used for motion compensation padding can be determined based on multiple motion information of a group of blocks, such as consecutive blocks (e.g., consecutive 4×4 blocks). In an embodiment, multiple MVs of consecutive blocks are grouped into an MV. For example, n consecutive blocks (e.g., consecutive 4×4 blocks) along a picture boundary are merged into one 4n×4 block (e.g., in one row) or one 4×4n block (e.g., in one column). n may be an integer greater than 1. The n consecutive blocks may include n border 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 the 4n×4 block or 4×4n block may be determined based on the MVs of the respective consecutive blocks. For example, the MV associated with the 4n×4 block or 4×4n block may be determined based on an average or weighted average of the MVs of each consecutive block. The MV associated with the 4n×4 block or 4×4n block may be determined based on a median filter of the MVs of each consecutive block, for example, when n is greater than 2. The MV associated with the 4n×4 block or 4×4n block may specify an MCP reference block in a reference picture of the picture. The MCP block in 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 4n×4 block or 4×4n block. In one example, the MCP block and the MCP reference block have a size of 4n×L blocks or L×4n, where L may be any suitable integer such as 4, 16, or 64.
[0094]
[0093] In one example, the MV associated with the 4nx4 block or 4x4n block has fractional precision and is used to determine the MCP reference block and then the MCP block using fractional motion compensation padding. In one example, the MV associated with the 4nx4 block or 4x4n block has fractional precision and is therefore clipped or rounded to obtain an MV with integer precision. The MV associated with the 4nx4 block or 4x4n block with integer precision can be used to determine the MCP reference block and then the MCP block 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) may 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 into 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 the 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 4×4. Thus, the block (610) and the reference block (631) include 4 columns and 8 rows, and the MCP block (621) and the MCP reference block (641) include L columns and 8 rows. 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., upper row or lower row) 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 top 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) in the MC padding area (672) may be determined based on the reference samples in 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 4×4. 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. L may be any suitable integer, such as 4, 16, or 64.
[0099] In an embodiment, the above description in relation to FIG. 7 may be applied to the top row and / or bottom row of a picture. In an embodiment, n consecutive blocks (e.g., n consecutive 4×4 blocks) along a portion of the top row or the entire top row of a picture boundary are merged into a 4n×4 block (e.g., the top 4n×4 block). In an embodiment, consecutive blocks along a portion of the bottom row or the entire bottom row of a picture boundary are merged into a 4n×4 block (e.g., the bottom 4n×4 block). The MV associated with the top 4n×4 block (e.g., block (615)) may point to a corresponding 4n×4 block (e.g., reference block (632)) in a reference picture (e.g., picture (602)) and to a first MCP reference block (e.g., MCP reference block (642)) in the reference picture. The 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 4n×4 block can point to the corresponding 4n×4 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 4×4 border block in the picture can be used to obtain MC padding pixels, which are padded outside the picture boundary toward the left of the picture boundary and toward the right of the picture boundary, as described in FIG. 5.
[0100]
[0099] The consecutive block or n consecutive blocks may include a corner block (or corner border 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 neighboring border block (617). The consecutive blocks (616)-(617) may be merged into a block (618). The MV (663) associated with the block (618) may be determined based on the MVs of the respective consecutive blocks (616)-(617), as described with reference to Figures 6-7. The 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) in the MC padding area (673) may be determined based on the reference samples in 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 4×4. 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 any suitable 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]
[0101] 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 a 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 (which are in the picture and are used as inputs to filter the current padded sample). For example, the current padded sample to be filtered is on the left of the picture (e.g., the one in column minus 1), and the one or more reconstructed samples used in boundary sample filtering are in the same row as the current padded sample and are located 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 weight W of one or more reconstructed samples in each consecutive column 0 to (N1-1) may depend on the distance between the current padded sample and one of the one or more reconstructed samples (which are in the picture and are used as inputs to filter the current padded sample). For example, the current padded sample to be filtered is on the left of the picture (e.g., the one in column minus 1), and the one or more reconstructed samples used in boundary sample filtering are in the same row as the current padded sample and are located 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). 0 -W N1 may decrease with column number. For example, the weight W 0 -W N1 Of these, weight W 0 is the largest, and weight W N1 is the smallest.
[0104]
[0103] 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 flow chart 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 in 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 starts 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 the motion information of a border block located at a picture boundary of a picture, as described in Fig. 5. The border block may be located within the picture, and the MCP block may be located in an MCP area outside the picture and adjacent to the picture boundary of the picture. The initial MV may have fractional precision.
[0108]
[0107] At (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]
[0108] 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, the 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, an offset may be added to the samples in the MCP block determined by directly copying the reference samples in the MCP reference block to obtain the final samples in the MCP 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 samples within at least an MCP block.
[0116]
[0112] The process then proceeds to (S999) and ends. The process (900) may be adapted as appropriate. Steps in the process (900) may be modified and / or omitted. Additional steps may be added. Any suitable order of execution may be used. In one example, coding information indicating the offset is encoded. The encoded coding information may be included in the bitstream.
[0117]
[0113] FIG. 10 is a flow chart outlining 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), and the like. In some embodiments, the process (1000) is implemented in software instructions, such that the processing circuit performs the process (1000) when the processing circuit executes the software instructions. The process (1000) starts 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 in a plurality of pictures, as described in Fig. 5. The border block may be located within the picture, and the MCP block may be located in an MCP area outside the picture and 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, the MCP reference block of the MCP block is 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 the reference block of the boundary block, which is in the reference picture. In one example, coding information is 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 the samples in the MCP block. For example, an offset may be added to the samples in the MCP block, which are determined by directly copying the reference samples in the MCP reference block, to obtain the final samples in the MCP 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]
[0121] 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 in the MCP area using 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 described in FIG. 4B.
[0130]
[0122] Figure 11 is a flow chart 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 a video decoder (110), a processing circuit performing the functions of a video decoder (210), and the like. In some embodiments, the process (1100) is implemented with software instructions, such that 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 a plurality of 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 a picture boundary of a picture in the pictures, as described in relation to Figures 6-8. The border blocks may be located in 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 in the border blocks, and the border blocks may be spatially adjacent to the MCP block.
[0133] In an embodiment, the motion information includes MVs of each of the boundary blocks. In one example, the MV associated with the MCP block is determined by averaging (e.g., weighted averaging) the MVs of each of the boundary blocks, as described in connection with Figures 6-7. In one example, the MV associated with the MCP block is determined by applying a median filter to the MVs, for example, when the number of MVs 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 border blocks are located at the top picture border. In one example, the border blocks are located at the bottom picture border. In one example, the size of each of the border blocks is 4x4, the number of the 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 in a reference picture and may be specified by the determined MV. The offset may be applied to at least samples in the MCP block. In one example, the above offset and filtering are applied to at least samples in 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 execution order 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 flow chart 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 a video decoder (110), a processing circuit performing the functions of a video decoder (210), and the like. In some embodiments, the process (1200) is implemented with software instructions, and thus the processing circuit performs the process (1200) when the processing circuit executes the software instructions. The process (1200) begins at (S1201) and proceeds to (S1210).
[0140]
[0132] At (S1210), a bitstream including a plurality of pictures is received.
[0141]
[0133] In (S1220), a motion vector (MV) associated with the MCP block can be determined according to the motion information of a border block located at a picture boundary of a picture among the multiple pictures, where the border 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] In (S1230), the 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 samples and at least one sample in the picture. The weight of the samples in the at least one sample in the picture is based on the distance between (i) the samples in the MCP block and (ii) the samples in the at least one sample in the picture. In one example, the samples in the MCP block are within N2 lines of a picture boundary, and the samples in the MCP block that are outside the N2 lines of the picture boundary are not filtered.
[0144]
[0136] 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 execution order 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), the encoder, and the decoder may be implemented by a processing circuit (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 may be implemented as computer software using computer readable instructions and may 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 contains instructions that can be executed directly by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or instructions 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]
[0141] The components illustrated in Figure 13 for computer system (1300) are exemplary in nature and are not intended to suggest any limitation as to the scope of functionality or application of the computer software implementing the 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 illustrated in the exemplary embodiment of computer system (1300).
[0150]
[0142] The computer system (1300) may include certain human interface input devices. Such human interface input devices may be responsive to input by one or more human users, for example, 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 are not necessarily directly related to conscious human 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 (although only one of each is depicted) 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]
[0144] The computer system (1300) may also include certain human interface output devices that may stimulate one or more of the senses of a human user, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touch screen (1310), data gloves (not shown), joystick (1305), although there may 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, 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 or more dimensional 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 tapes 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 transitional signals.
[0155]
[0147] The computer system (1300) may also include interfaces to one or more communication networks (1355). The networks may be, for example, wireless, wired, or optical. The networks may further be local, wide area, metropolitan, vehicle industrial, 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), vehicle industrial 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, 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 communications can be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., CANbus to certain CANbus devices), or bi-directional, such as to other computer systems using local or wide area digital networks. Specific protocols and protocol stacks can be used with each of these networks and network interfaces, as described above.
[0156]
[0148] The aforementioned human interface devices, human accessible storage devices, and network interfaces may be attached to a core (1340) of the computer system (1300).
[0157]
[0149] 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 areas (FPGAs) (1343), task specific hardware accelerators (1344), graphics adapters (1350), etc. These devices may be connected via a system bus (1348) 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). 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 certain instructions that may constitute the aforementioned computer code. The computer code may be stored in a ROM (1345) or a RAM (1346). Temporary data may be stored in the RAM (1346), while persistent data may be stored, for example, in an internal mass storage (1347). Fast storage and retrieval from any memory device may be made possible by utilizing a 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]
[0152] By way of example and not limitation, the architecture (1300), and in particular the computer system having the core (1340), can 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 can be media associated with user-accessible mass storage as described above, as well as the core's internal mass storage (1347) or specific storage of the core (1340) of a non-transitory nature, such as ROM (1345). Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (1340). The computer-readable media can include one or more memory devices or chips, depending on the particular needs. The software can cause the core (1340) and in particular the processors therein (including CPUs, GPUs, FPGAs, etc.) to execute certain processes or certain 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)) that can execute in place of or in conjunction with software to execute certain processes or certain portions of certain processes described herein. References to software include logic, and vice versa, where appropriate. References to computer-readable media can include circuitry (such as integrated circuits (ICs)) that store software for execution, circuitry that embodies logic for execution, or both, as appropriate. The present disclosure encompasses any appropriate combination of hardware and software.
[0161]
[0153] 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 the 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 modifications, permutations, and various alternative equivalents that fall within the scope of this disclosure. Thus, it will be understood that those skilled in the art will be able to devise many systems and methods that, although not explicitly shown or described herein, embody the principles of this disclosure and are therefore within the spirit and scope of this disclosure.
Claims
1. 1. A method for video decoding 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 in the plurality of pictures, the border block being located within the picture, and the MCP block being located within an MCP area outside the picture and adjacent to the picture boundary of the picture; generating a final MV having 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; The method includes:
2. 2. The method of claim 1, wherein the step of generating the final MV comprises: generating a final MV associated with the MCP block by clipping the initial MV associated with the MCP block to integer precision; A method comprising:
3. 2. The method of claim 1, wherein the step of generating the final MV comprises: generating a final MV associated with said MCP block by rounding an initial MV associated with said MCP block towards zero; A method comprising:
4. 2. The method of claim 1, wherein the step of generating the final MV comprises: generating a final MV associated with said MCP block by rounding an initial MV associated with said MCP block towards positive infinity or negative infinity; A method comprising:
5. 2. The method of claim 1, 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 having fractional precision: In response to the component being positive, generating the final MV includes rounding the component towards positive infinity; and 4. The method of claim 3, wherein in response to a component being negative, generating the final MV comprises rounding the component towards negative infinity.
6. 2. The method of claim 1, wherein the reconstructing step comprises: determining an MCP reference block for the MCP block according to the final MV, the MCP reference block being within a reference picture of the picture; and reconstructing the MCP block according to the MCP reference block; The method includes:
7. 7. The method of claim 6, 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:
8. 7. The method of claim 6, 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.
9. 7. The method of claim 6, wherein the step of reconstructing the MCP block according to the MCP reference block comprises:
23. 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.
10. 1. A method for video decoding in a video coder, comprising: receiving a bitstream including a plurality of pictures; determining a motion vector (MV) associated with a motion compensated padding (MCP) block according to motion information of respective border blocks located at a picture boundary of a picture in the plurality of pictures, where the border blocks are located within the picture, the MCP block is located within an MCP area outside the picture and adjacent to the picture boundary of the picture, each of the border blocks is in a spatial neighborhood of a border block in the plurality of border blocks, and the border blocks are in a neighborhood of the MCP block; determining at least samples within the MCP block based on the determined MV; The method includes:
11. The method of claim 10, the motion information includes MVs of the respective border blocks; The method of claim 1, wherein determining the MV comprises determining an MV associated with the MCP block by averaging MVs of the respective border blocks.
12. The method of claim 10, The motion information includes MVs of the respective border blocks; and The method of claim 1, wherein determining the MV comprises determining an MV associated with the MCP block by applying a median filter to MVs of the respective border blocks.
13. The method of claim 10, the picture boundaries include a top picture boundary, a bottom picture boundary, a left picture boundary, and a right picture boundary; each of the plurality of border blocks is 4×4 in size; The number of the plurality of border blocks is n; The size of the MCP block is 4n×L, where L is a positive integer; The method of claim 1, wherein the border blocks are located at the top picture border or the bottom picture border.
14. 11. The method of claim 10, wherein the step of determining at least the samples in the MCP block comprises: determining an MCP reference block for the MCP block according to the determined MV, the MCP reference block being within a reference picture of the picture; and determining the MCP block according to the MCP reference block; The method includes:
15. 15. The method of claim 14, wherein the step of determining the MCP block comprises: determining an offset based on a difference between an average pixel value of the plurality of border blocks and an average pixel value of a plurality of reference blocks corresponding to the plurality of border blocks, the plurality of reference blocks being within the reference picture; and applying the offset to the at least samples in the MCP block; A method comprising:
16. 11. The method of claim 10, wherein the step of determining at least the samples in the MCP block comprises: In response to the determined MV associated with the MCP having fractional precision, Based on the determined MV, determine a final MV with integer precision associated with the MCP block; and determining the MCP block according to the determined final MV having integer precision.
17. 1. A method for video decoding in a video coder, comprising: receiving a bitstream including a plurality of pictures; determining a 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 in the plurality of pictures, the border block being located within the picture, and the MCP block being located within an MCP area outside the picture and adjacent to the picture boundary of the picture; determining samples in the MCP block using motion compensation padding according to the determined MV; and 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; The method includes:
18. 20. The method of claim 17, wherein the filtering step comprises: filtering samples in the MCP block based on a weighted average of the samples and at least one sample in the picture; The method includes:
19. 19. The method of claim 18, A method according to claim 1, wherein a weight of a sample of the at least one sample in the picture is based on a distance between (i) a sample in the MCP block and (ii) a sample of the at least one sample in the picture.
20. 18. The method of claim 17, the samples in the MCP block are within N2 lines of the picture boundary; A method according to claim 1, wherein samples in the MCP block that are outside the N2 lines of the picture boundary are not filtered.
21. 1. A method for video encoding 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, the border block being located within the picture, the MCP block being located within an MCP area outside the picture and adjacent to the picture boundary of the picture, the initial MV having fractional precision; determining a final MV associated with the MCP block, the final MV having integer precision, based on an initial MV 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 the samples and transmitting the encoded bitstream to a decoder; The method includes:
Citation Information
Patent Citations
Motion compensated boundary pixel padding
US20190082193A1