Method and apparatus for video coding / decoding

JP2025131763A5Pending Publication Date: 2026-05-15TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
TENCENT AMERICA LLC
Filing Date
2025-06-06
Publication Date
2026-05-15

AI Technical Summary

Technical Problem

Existing video encoding and decoding technologies face challenges in efficiently reducing redundancy through intra-frame prediction, particularly in handling the increasing number of possible prediction directions, which can lead to inefficient bit usage for less likely directions.

Method used

The proposed solution involves selecting a resolution for a block vector difference based on candidate resolutions and determining a block vector for the current block, using flags to adjust the resolution of block vector components, and constraining the block vector to a valid region, thereby optimizing the encoding and decoding process.

Benefits of technology

This approach enhances video compression efficiency by reducing bit usage for less likely prediction directions, leading to improved coding efficiency and reduced data requirements.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

To provide a method and apparatus for video coding / decoding.SOLUTION: An apparatus includes processing circuitry for video decoding. The processing circuitry decodes prediction information of a current block from a coded video bitstream. The prediction information is indicative of an intra frame block copy mode. The processing circuitry selects, from a set of multiple candidate resolutions, a resolution of a block vector difference for the current block, and determines a block vector of the current block according to the selected resolution of the block vector difference and a block vector predictor of the current block. Then, the processing circuitry reconstructs at least one sample of the current block according to the block vector.SELECTED DRAWING: Figure 10
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This disclosure claims priority to U.S. Provisional Application No. 62 / 639,862, filed March 7, 2018, entitled "Method for Motion and Block Vector Resolution Adaptation in Image and Video Compression," and U.S. Patent Application No. 16 / 182,788, filed November 7, 2018, entitled "Video Encoding / Decoding Method and Apparatus," both of which are incorporated by reference herein in their entireties. [Technical field] This disclosure describes embodiments generally related to video encoding / decoding. [Background technology]

[0002] The background discussion provided herein is intended to provide an overall context for the present disclosure. The extent of the work of the currently signed inventors described in this background section and in each aspect of this specification has not been shown as prior art at the time of the filing of this disclosure, and is not expressly or impliedly admitted as prior art to the present disclosure.

[0003] Video encoding and decoding can be performed using interframe image prediction with motion compensation. Uncompressed digital video can include a series of images, each with spatial dimensions of, for example, 1920 x 1080 luma samples and associated chroma samples. The series can have a fixed or variable image rate (informally known as the frame rate), for example, 60 images per second or 60 hertz (Hz). Uncompressed video has very high bitrate requirements. For example, 1080p60 4:2:0 video (1920 x 1080 luma sample resolution at a 60 Hz frame rate) with 8 bits per sample requires nearly 1.5 Gbit / s of bandwidth. Such video requires more than 600 GB of storage space per hour.

[0004] One goal of video encoding and decoding is to reduce redundant information in an input video signal through compression. Compression can help reduce the bandwidth or storage requirements, in some cases by more than two orders of magnitude. Both lossless and lossy compression, as well as a combination of both, can be used. Lossless compression refers to a technique in which an exact copy of the original signal can be reconstructed from a compressed version of the original signal. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signal is small enough that it can be used in applications where a reconstructed signal is expected. For video, lossy compression is widely used. The amount of acceptable distortion depends on the application; for example, a user consuming a streaming application can tolerate higher distortion than a user of a television contribution application. The achievable compression ratio reflects the fact that a higher allowable / tolerable distortion can produce a higher compression ratio.

[0005] Video encoders and decoders can utilize techniques from several broad categories, including, for example, motion compensation, transform, quantization, and entropy coding.

[0006] Video encoding / decoding techniques can include a technique known as intraframe coding. In intraframe coding, sample values ​​are represented without reference to samples or other data from a previously reconstructed reference image. In some video codecs, an image is spatially subdivided into sample blocks. If all sample blocks are coded in intraframe mode, the image can be an intraframe image. Intraframe images and their derivatives, such as independent decoder refresh images, can be used to reset the decoder state and thus can be used as the first image or still image in the coded video bitstream and video session. Samples in intraframe blocks are used in transforms, and the transform coefficients can be quantized before entropy coding. Intraframe prediction can be a technique that minimizes sample values ​​in the pre-transform domain. In some cases, the smaller the DC value and AC coefficients after the transform, the fewer bits required for a given quantization step size to represent the block after entropy coding.

[0007] Conventional intraframe coding, such as that known from MPEG-2 coding techniques, does not use intraframe prediction. However, some newer video compression techniques include techniques that attempt to derive data blocks from surrounding sample data and / or metadata, for example, obtained during the encoding / decoding of spatially adjacent blocks and prior in decoding order. Such techniques are hereinafter referred to as "intraframe prediction" techniques. It should be noted that, at least in some cases, intraframe prediction does not use reference data from a reference picture, but only reference data from the current picture being reconstructed.

[0008] There can be many different forms of intra-frame prediction. If a given video coding technology can use more than one of these technologies, the technology in use can encode in intra-frame prediction mode. In some cases, a mode may have sub-modes and / or parameters, and these modes may be coded separately or included in a mode codeword. This may be the case for the entropy coding technology used to convert the codeword into a bitstream, as which codeword is used for a given mode / sub-mode / parameter combination affects the coding efficiency gain from intra-frame prediction.

[0009] A specific mode of intraframe prediction was introduced in H.264, improved in H.265, and further improved in modern encoding / decoding techniques such as the joint exploration model (JEM), versatile video coding (VVC), and benchmark set (BMS). A prediction block can be formed using neighboring sample values ​​belonging to already available samples. The sample values ​​of the neighboring samples are copied into the prediction block according to a certain direction. A reference to the direction in use may be coded in the bitstream or may itself be predicted.

[0010] Referring to Figure 1, the bottom right corner depicts a subset of nine known prediction directions from the 35 possible prediction directions in H.265. The point where the arrows converge (101) represents the sample being predicted. The arrows represent the direction from which the sample is predicted. For example, arrow (102) indicates that sample (101) is predicted from one or more samples to the upper right, which are at a 45-degree angle from horizontal. Similarly, arrow (103) indicates that sample (101) is predicted from one or more samples to the lower left of sample (101), which are at a 22.5-degree angle from horizontal.

[0011] Continuing with FIG. 1 , a square block (104) of 4×4 samples is depicted in the upper left (indicated by a thick dashed line). The square block (104) contains 16 samples, each labeled with “S” and its position in the Y dimension (e.g., row index) and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample in the Y dimension (from the top) and the first sample in the X dimension (from the left). Similarly, sample S44 is the fourth sample in block (104) in both the Y and X dimensions. Because this block is a 4×4 sized sample, S44 is located in the lower right. Also shown are reference samples that follow a similar numbering scheme. The reference samples are labeled with “R” and their Y position (e.g., row index) and X position (e.g., column index) relative to block (104). In both H.264 and H.265, since the predicted samples are adjacent to the block being reconstructed, negative values ​​do not need to be used.

[0012] Intraframe prediction can work by copying reference sample values ​​from neighboring samples according to a signaled prediction direction. For example, assume that the coded video bitstream includes signaling indicating that for this block, the prediction direction corresponds to the arrow (102), i.e., the sample is predicted from one or more predicted samples in the upper right corner, which are at a 45-degree angle with the horizontal. In this case, samples S41, S32, S23, and S14 are predicted from the same R05. And sample S44 is predicted from R08.

[0013] In some cases, the values ​​of multiple reference samples can be combined, for example through interpolation, to calculate the reference sample, particularly if the orientation is not evenly divisible by 45 degrees.

[0014] As video coding technology has evolved, the number of possible directions has increased. H.264 (2003) could represent nine different directions. This increased to 33 in H.265 (2013), and JEM / VC / BMS can support up to 65 directions at the time of publication. Experiments have been conducted to identify the most likely directions, and some techniques in entropy coding are used to represent these possible directions with a small number of bits, at the expense of less likely directions. Furthermore, the direction itself may be predictable from neighboring directions used in neighboring already decoded blocks.

[0015] FIG. 2 shows a schematic diagram (201) depicting 65 intra-frame prediction directions according to JEM to illustrate the increasing number of prediction directions over time.

[0016] The mapping from intra-frame prediction directions to bits representing directions in the coded video bitstream can vary depending on the video coding technique and can range, for example, from a simple direct mapping to prediction directions to complex adaptation schemes involving intra-frame prediction modes, codewords, most likely modes, and similar techniques. Those skilled in the art are readily familiar with these techniques. However, in all cases, there may be certain directions that are statistically less likely to occur in the video content than certain other directions. Because the goal of video compression is to reduce redundancy, these less likely directions are represented with more bits than more likely directions in a well-functioning video coding technique. Summary of the Invention [Means for solving the problem]

[0017] Aspects of the present disclosure provide methods and apparatus for video encoding / decoding. In some examples, the apparatus includes a processing circuit for decoding video. The processing circuit decodes prediction information for a current block from an encoded video bitstream. The prediction information indicates an intra-frame block copy mode. The processing circuit selects a resolution for a block vector difference of the current block from a set of candidate resolutions, and determines a block vector for the current block based on the selected resolution for the block vector difference and a block vector predictor for the current block. The processing circuit then reconstructs at least one sample of the current block based on the block vector.

[0018] In one example, the processing circuitry selects the resolution of the current block from two candidate resolutions based on a one-bit flag.

[0019] According to an aspect of the present disclosure, the processing circuitry selects a first resolution for a first component of the block vector difference and a second resolution for a second component of the block vector difference, for example, the processing circuitry selects the first resolution for the first component of the block vector difference based on a first flag and the second resolution for the second component of the block vector difference based on a second flag.

[0020] In some embodiments, the processing circuitry selects a first resolution for a first component of the block vector differential based on a first component of the block vector prediction value, and selects a second resolution for a second component of the block vector differential based on a second component of the block vector prediction value.

[0021] In some examples, the processing circuitry selects a default resolution from the set of two resolutions as the first resolution if the first component of the block vector prediction value is less than a threshold, and selects a smaller resolution from the set of two resolutions as the first resolution if the first component of the block vector prediction value is greater than the threshold.

[0022] In one example, when the block vector prediction value uses a resolution different from the selected resolution, the processing circuitry adds a block vector differential to the block vector prediction value rather than rounding the block vector prediction value to calculate a block vector. In another example, when the block vector prediction value has a resolution different from the selected resolution, the processing circuitry rounds the block vector prediction value of the current block to the selected resolution and adds the block vector differential to the rounded block vector prediction value to calculate a block vector.

[0023] In some embodiments, the processing circuitry modifies at least one of the block vector differential and the block vector prediction to constrain the block vector to a valid region.

[0024] Aspects of the present disclosure provide a non-transitory computer-readable medium storing instructions that, when executed by a computer decoding a video, cause the computer to perform a method of video decoding. [Brief explanation of the drawings]

[0025] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings, in which: [Figure 1] 1 is a schematic diagram of a subset of intra-frame prediction modes according to H.265. [Figure 2] FIG. 10 is a schematic diagram of intra-frame prediction directions according to JEM. [Figure 3] FIG. 3 is a simplified block diagram schematic of a communication system (300) according to one embodiment. [Figure 4] FIG. 4 is a simplified block diagram schematic of a communication system (400) according to one embodiment. [Figure 5] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment. [Figure 6] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment. [Figure 7]FIG. 10 shows a block diagram of an encoder according to another embodiment. [Figure 8] FIG. 10 shows a block diagram of a decoder according to another embodiment. [Figure 9] FIG. 10 illustrates an example of intra-frame block copying according to one embodiment of the present disclosure. [Figure 10] 1 shows a flowchart outlining a process (1000) according to an embodiment of the present disclosure. [Figure 11] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0026] Figure 3 is a simplified block diagram of a communication system (300) according to an embodiment of the present disclosure. The communication system (300) includes multiple terminal devices that can communicate with each other, for example, via a network (350). For example, the communication system (300) includes a first pair of terminal devices (310) and (320) interconnected via the network (350). In the example of Figure 3, the first pair of terminal devices (310) and (320) perform unidirectional data transmission. For example, the terminal device (310) can encode video data (e.g., a video image stream captured by the terminal device (310)) for transmission to another terminal device (320) via the network (350). The encoded video data can be transmitted in the form of one or more coded video bitstreams. The terminal device (320) can receive the encoded video data from the network (350), decode the encoded video data to reconstruct the video image, and display the video image based on the reconstructed video data. Unidirectional data transmission is common in media serving applications and the like.

[0027] In another example, the communication system (300) includes a second pair of terminal devices (330) and (340) that perform bidirectional transmission of encoded video data, such as may occur during a video conference. For bidirectional transmission of data, in one example, each of the terminal devices (330) and (340) can encode video data (e.g., a video image stream captured by the terminal device) for transmission to the other of the terminal devices (330) and (340) over the network (350). Each of the terminal devices (330) and (340) can also receive the encoded video data transmitted by the other of the terminal devices (330) and (340), decode the encoded video data to reconstruct the video image, and display the video image on an accessible display device based on the reconstructed video data.

[0028] In the example of FIG. 3 , the terminal devices 310, 320, 330, and 340 may be depicted as a server, a personal computer, and a smartphone, but the principles of the present disclosure are not limited thereto. Embodiments of the present disclosure find application with laptop computers, tablet computers, media players, and / or dedicated videoconferencing equipment. Network 350 represents any number of networks transmitting encoded video data between the terminal devices 310, 320, 330, and 340, including wired and / or wireless communication networks. The communication network 350 may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this disclosure, the architecture and topology of network 350 may not be important to the operation of the present disclosure, unless otherwise described herein.

[0029] 4 illustrates the arrangement of a video encoder and a video decoder in a streaming environment as an example application for the disclosed subject matter. The disclosed subject matter is equally applicable to other video-supported applications, including, for example, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc., video conferencing, digital TV, etc.

[0030] The streaming system can include a capture subsystem (413), which can include a video source (401), such as a digital camera, that creates an uncompressed video image stream (402). In one example, the video image stream (402) includes samples captured by the digital camera. The video image stream (402), depicted with thick lines to emphasize its high data volume when compared to the encoded video data (404) (or encoded video bitstream), can be processed by an electronic device (420) that includes a video encoder (403) coupled to the video source (401). The video encoder (403) can include hardware, software, or a combination thereof to enable or implement various aspects of the disclosed subject matter, as described in more detail below. The encoded video data (404) (or encoded video bitstream (404)), depicted with thin lines to emphasize its lower data volume when compared to the video image stream (402), can be stored on a streaming server (405) for future use. One or more streaming client subsystems, such as the client subsystems (406) and (408) of FIG. 4, can access the streaming server (405) to retrieve copies (407) and (409) of the encoded video data (404). The client subsystem (406) can include, for example, a video decoder (410) in an electronic device (430). The video decoder (410) decodes the incoming copy of the encoded video data (407) to generate an outgoing video image stream (411), which can be displayed on a display (412) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (404), (407), and (409) (e.g., a video bitstream) can be encoded according to a particular video encoding / compression standard.Examples of these standards include ITU-T Recommendation H.265. In one example, a video coding standard under development is informally called Next Generation Video Coding or Versatile Video Coding (VVC). The disclosed subject matter can be used in the context of VVC.

[0031] It should be noted that the electronic devices (420) and (430) may include other components (not shown). For example, the electronic device (420) may include a video decoder (not shown), and the electronic device (430) may similarly include a video encoder (not shown).

[0032] 5 shows a block diagram of a video decoder (510) according to an embodiment of the present disclosure. The video decoder (510) can be included in an electronic device (530). The electronic device (530) can include a receiver (531) (e.g., receiving circuitry). The video decoder (510) can be used in place of the video decoder (410) in the example of FIG. 4.

[0033] The receiver (531) can receive one or more coded video sequences to be decoded by the video decoder (510), and in the same or another embodiment, can receive one coded video sequence at a time, where the decoding of each coded video sequence is independent of the other coded video sequences. The coded video sequences can be received from a channel (501), which may be a hardware / software link to a storage device that stores the coded video data. The receiver (531) can receive the coded video data along with other data, such as coded audio data and / or auxiliary data streams, that can be transmitted to respective using entities (not shown). The receiver (531) can separate the coded video sequences from other data. To prevent network jitter, a buffer memory (515) can be coupled between the receiver (531) and the entropy decoder / parser (520) (hereinafter "parser (520)"). In some applications, the buffer memory (515) is part of the video decoder (510). In other cases, the buffer memory (515) may be located external to the video decoder (510) (not shown). In still other cases, there may be a buffer memory (not shown) external to the video decoder (510), for example, to prevent network jitter, and there may be another buffer memory (515) internal to the video decoder (510), for example, to handle playback timing. If the receiver (531) receives data from a store-and-forward device or from an isochronous network with sufficient bandwidth and controllability, the buffer memory (515) may not be necessary or may be small.For use in best-effort packet networks such as the Internet, the buffer memory (515) may be necessary and may be relatively large, advantageously of adaptive size, and may be implemented at least in part in an operating system or similar element (not shown) external to the video decoder (510).

[0034] The video decoder (510) may include an analyzer (520) for reconstructing symbols (521) from the encoded video sequence. These symbol categories include information used to manage the operation of the video decoder (510) and potential information for controlling a rendering device, such as a rendering device (512) (e.g., a display screen) that is not an integral part of the electronic device (530) but may be coupled to the electronic device (530) as shown in FIG. 5. The rendering device control information may be in the form of a supplemental enhancement information (SEI) message or a visual usability information (VUI) parameter set fragment (not shown). The analyzer (520) may perform analysis / entropy decoding on the received encoded video sequence. The encoding of the encoded 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 sensitivity, etc. The analyzer (520) 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 at least one parameter corresponding to the group. The subgroups can include groups of pictures (GOPs), images, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. The analyzer (520) can also extract information such as transform coefficients, quantizer parameter values, motion vectors, etc. from the coded video sequence.

[0035] The analyzer (520) can perform entropy decoding / analysis operations on the video sequence received from the buffer memory (515) to produce symbols (521).

[0036] The reconstruction of the symbols (521) can be associated with several different units, depending on the type of coded video image or portion thereof (e.g., inter-frame and intra-frame images, inter-frame and intra-frame blocks) and other factors. What units are associated with and how they are associated can be controlled by subgroup control information parsed from the coded video sequence by the analyzer (520). The flow of such subgroup control information between the analyzer (520) and the following units is not shown for clarity.

[0037] In addition to the functional blocks already mentioned, the video decoder (510) may be conceptually subdivided into several functional units, as described below. In an actual embodiment 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 appropriate.

[0038] The first unit is a scalar / inverse transform unit (551), which receives quantized transform coefficients and control information from the analyzer (520) as symbols (521), including information on what transform to use, block size, quantization factors, quantization scaling matrices, etc. The scalar / inverse transform unit (551) can output blocks containing sample values ​​that can be input to an aggregator (555).

[0039] In some cases, the output samples of the scalar / inverse transform unit (551) may belong to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed image but can use prediction information from a previously reconstructed portion of the current image. Such prediction information may be provided by an intra-frame image prediction unit (552). In some cases, the intra-frame image prediction unit (552) generates blocks of the same size and shape as the block being reconstructed using surrounding, already reconstructed information extracted from a current image buffer (558). The current image buffer (558), for example, buffers partially reconstructed and / or fully reconstructed current images. The aggregator (555), in some cases, adds the prediction information generated by the intra-frame prediction unit (552) to the output sample information provided by the scalar / inverse transform unit (551) on a sample-by-sample basis.

[0040] In other cases, the output samples of the scalar / inverse transform unit (551) may belong to inter-frame coded blocks and potentially motion-compensated blocks. In such cases, the motion compensation prediction unit (553) may access a reference picture memory (557) to extract samples used for prediction. After the extracted samples are motion-compensated based on the symbols (521) associated with the block, these samples may be added by an aggregator (555) to the output of the scalar / inverse transform unit (551) (in this case, referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (557) from which the motion compensation prediction unit (553) extracts prediction samples may be controlled by motion vectors available to the motion compensation prediction unit (553), for example, in the form of symbols (521) that may have X, Y, and reference picture components. Motion compensation may also include interpolation of sample values ​​extracted from the reference picture memory (557), motion vector prediction mechanisms, etc., when sub-sample accurate motion vectors are in use.

[0041] The output samples of the aggregator (555) may be subjected to various loop filtering techniques in a loop filter unit (556). Video compression techniques may include in-loop filter techniques controlled by parameters contained in the coded video sequence (also called a coded video bitstream) and made available to the loop filter unit (556) as symbols (521) from the analyzer (520), may be responsive to meta-information obtained during decoding of a coded image or previous portion of the coded video sequence (in decoding order), and may be responsive to previously reconstructed loop-filtered sample values.

[0042] The output of the loop filter unit (556) may be a sample stream that can be output to a rendering device (512) and stored in a reference image memory (557) for use in future inter-frame image prediction.

[0043] Once a particular coded image is fully reconstructed, it can be used as a reference image for future predictions. For example, once the coded image corresponding to the current image is fully reconstructed and the coded image is identified as a reference image (e.g., by the analyzer (520)), the current image buffer (558) can become part of the reference image memory (557), and a new current image buffer can be reallocated before beginning reconstruction of a subsequent coded image.

[0044] The video decoder (510) can perform decoding operations according to a predetermined video compression technique in a standard, such as ITU-T Rec. H.265. The encoded video sequence can conform to the syntax specified by the video compression technique or standard being used, in the sense that the encoded video sequence conforms to both the syntax of the video compression technique or standard and the profile of the video compression technique or standard as its document. Specifically, the profile can select some tools from all tools available in the video compression technique or standard as the only tools usable in that profile. Compliance also requires that the complexity of the encoded video sequence be within a range defined by the layer of the video compression technique or standard. In some cases, the layer limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in mega samples per second), maximum reference picture size, etc. The limits set by the layer can, in some cases, be further constrained by a Hypthetical Reference Decoder (HRD) specification and HRD buffer management metadata signaled in the encoded video sequence.

[0045] In one embodiment, the receiver (531) can receive additional (redundant) data along with the encoded video. The additional data can be included as part of the encoded video sequence. The additional data can be used by the video decoder (510) to properly decode the data and / or more accurately reconstruct the original video data. The additional data can be in forms such as, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant images, forward error correction codes, etc.

[0046] 6 shows a block diagram of a video encoder (603) according to one embodiment of the present disclosure. The video encoder (603) is included in an electronic device (620). The electronic device (620) includes a transmitter (640) (e.g., a transmitting circuit). The video encoder (603) can be used in place of the video encoder (403) in the example of FIG. 4.

[0047] The video encoder (603) can receive video samples from a video source (601) (not part of the electronic device (620) in the example of FIG. 6) that captures video images to be encoded by the video encoder (603). In another example, the video source (601) is part of the electronic device (620).

[0048] The video source (601) can provide a source video sequence encoded by the video encoder (603) in the form of a digital video sample stream, which can have any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, etc.), any suitable color space (e.g., BT.601 Y CrCB, RGB, etc.), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media services system, the video source (601) can be a storage device that stores previously prepared video. In a video conferencing system, the video source (601) can be a camera that captures local image information as a video sequence. The video data can be provided as multiple individual images that, when viewed in sequence, create motion. The images themselves can be organized as a spatial pixel array, where each pixel can contain one or more samples, depending on the sampling structure, color space, etc., in use. Those skilled in the art can easily understand the relationship between pixels and samples. The following description focuses on samples.

[0049] According to one embodiment, the video encoder (603) can encode and compress images of a source video sequence into an encoded video sequence (643) in real time or under any other time constraint required by the application. Enforcing the appropriate encoding rate is one function of the controller (650). In some embodiments, the controller (650) controls and is operatively coupled to other functional units, as described below. Such coupling is not shown for clarity. Parameters set by the controller (650) can include rate control-related parameters (picture skip, quantizer, lambda value for rate-distortion optimization techniques, etc.), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (650) can be configured with other appropriate functions associated with the video encoder (603) optimized for a particular system design.

[0050] In some embodiments, the video encoder (603) is configured to operate in an encoding loop. As an overly simplified explanation, in one example, the encoding loop can include a source coder (630) (e.g., responsible for creating symbols, such as a symbol stream, based on an input image to be encoded and a reference image) and a (local) decoder (633) embedded in the video encoder (603). The decoder (633) reconstructs the symbols to create sample data in a manner similar to how a (remote) decoder creates sample data (because the video compression techniques contemplated in the disclosed subject matter ensure that any compression between the symbols and the encoded video bitstream is lossless). The reconstructed sample stream (sample data) is input to a reference image memory (634). Decoding the symbol stream produces bit-exact results regardless of the location (local or remote) of the decoder, so the contents of the reference image memory (634) correspond bit-exactly between the local and remote encoders. In other words, the reference picture samples "seen" by the prediction part of the encoder are exactly the same sample values ​​"seen" by the decoder when it uses prediction during decoding. This basic principle of reference picture synchrony (and the drift that occurs when synchrony is not maintained, e.g., due to channel error) is also used in several related technologies.

[0051] The operation of the "local" decoder (633) may be the same as the operation of a "remote" decoder, such as the video decoder (510), already described in detail above in connection with Figure 5. However, with further brief reference to Figure 5, because symbols are available and the encoding / decoding of symbols into the encoded video sequence by the entropy coder (645) and analyzer (520) can be lossless, the entropy decoding portion of the video decoder (510), including the buffer memory (515) and analyzer (520), may not be performed entirely in the local decoder (633).

[0052] At this point, it is observed that any decoder technique other than analysis / entropy decoding present in the decoder must necessarily be present in the corresponding encoder in substantially identical functional form. For this reason, the disclosed subject matter focuses on decoder operation. A description of the encoder technique can be omitted, as it is the reverse of the decoder technique described generically. Only certain areas require more detailed description, which are provided below.

[0053] In operation, in some embodiments, the source coder (630) can perform motion-compensated predictive coding, which predictively codes an input image with reference to one or more previously coded images from a video sequence designated as "reference images." In this manner, the coding engine (632) codes differences between pixel blocks of the input image and pixel blocks of reference images that can be selected as predictive references for the input image.

[0054] The local video decoder (633) can decode the encoded video data of an image that can be designated as a reference image based on the symbols generated by the source coder (630). The operation of the encoding engine (632) can advantageously be a lossy process. When the encoded video data is decoded by a video decoder (not shown in FIG. 6), the reconstructed video sequence can be a replica of the source video sequence, typically with some errors. The local video decoder (633) can copy the decoding process that can be performed by the video decoder on the reference image and store the reconstructed reference image in a reference image cache (634). In this way, the video encoder (603) can locally store copies of reconstructed reference images that have common content with reconstructed reference images obtained by the far-end video decoder (in the absence of transmission errors).

[0055] The predictor (635) can perform a prediction search for the coding engine (632). That is, for a new image to be encoded, the predictor (635) can search the reference image memory (634) for sample data (as candidate reference pixel blocks) or specific metadata, such as reference image motion vectors, block shapes, etc., that serve as suitable prediction references for the new image. The predictor (635) can operate on a pixel block-by-pixel block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor (635), the input image can have prediction references drawn from multiple reference images stored in the reference image memory (634).

[0056] The controller (650) can manage the encoding operations of the source coder (630), including, for example, setting the parameters and subgroup parameters used to encode the video data.

[0057] The output of all of the above functional units can be entropy coded in an entropy coder (645), which converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques known to those skilled in the art, such as Huffman coding, variable length coding, arithmetic coding, etc.

[0058] The transmitter (640) can buffer the encoded video sequence produced by the entropy coder (645) for transmission over a communication channel (660), which can be a hardware / software link to a storage device that stores the encoded video data. The transmitter (640) can merge the encoded video data from the video coder (603) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (sources not shown).

[0059] The controller (650) can manage the operation of the video encoder (603). During encoding, the controller (650) can assign a particular coded picture type to each coded picture, which can affect the coding techniques that can be applied to each picture. For example, pictures are often assigned as one of the following picture types: intra-frame pictures (I-pictures) may be able to be coded and decoded without using any other picture in the sequence as a source of prediction:

[0060] Some video codecs allow for different types of intra-frame pictures, such as Independent Decoder Refresh ("IDR") pictures. Those skilled in the art understand the variations of I-pictures and their applications and functions.

[0061] A predicted image (P-image) may be one that can be coded and decoded using intra-frame or inter-frame prediction, which predicts the sample values ​​of each block using at most one motion vector and reference index.

[0062] Bidirectionally predicted images (B-pictures) may be coded and decoded using intra-frame or inter-frame prediction, which uses at most two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, multiple predicted images may use more than one reference image and associated metadata to reconstruct a single block.

[0063] A source image is typically spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and can be coded block by block. These blocks can be predictively coded with reference to other (already coded) blocks, as determined by the coding assignment applied to each image of the block. For example, blocks of an I image can be non-predictively coded, or they can be predictively coded with reference to already coded blocks of the same image (spatial prediction or intraframe prediction). Pixel blocks of a P image can be predictively coded via spatial prediction or temporal prediction with reference to a reference image coded one step earlier. Blocks of a B image can be predictively coded via spatial prediction or temporal prediction with reference to a reference image coded one or two steps earlier.

[0064] The video encoder (603) may perform encoding operations in accordance with a predetermined video encoding technique or standard, such as ITU-T H.265. In doing so, the video encoder (603) may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancies in the input video sequence. Thus, the encoded video data may conform to a syntax specified by the video encoding technique or standard used.

[0065] In one embodiment, the transmitter (640) can transmit additional data along with the coded video. The source coder (630) can include such data as part of the coded video sequence. The additional data can include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant images or slices, Supplemental Enhancement Information (SEI) messages, Visual Usability Information (VUI) parameter set fragments, etc.

[0066] Video can be captured as multiple source images (video images) in a time sequence. Intraframe image prediction (often abbreviated as intraframe prediction) exploits spatial correlations in a given image, while interframe image prediction exploits correlations (temporal or otherwise) between images. In one example, a particular image being encoded / decoded, called the current image, is divided into blocks. If a block of the current image is similar to a reference block in a previously encoded and still buffered reference image in the video, the block of the current image can be coded by a vector called a motion vector. The motion vector points to a reference block in the reference image and may have a third dimension that identifies the reference image if multiple reference images are used.

[0067] In some embodiments, bidirectional prediction techniques can be used for inter-frame image prediction. Bidirectional prediction techniques use two reference images, such as first and second reference images that are both before the current image in the video in decoding order (but may be past and future, respectively, in display order). A block in the current image can be coded with a first motion vector that points to a first reference block in the first reference image and a second motion vector that points to a second reference block in the second reference image. A block can be predicted by a combination of the first and second reference blocks.

[0068] Furthermore, to improve coding efficiency, merge mode techniques can be used in inter-frame image prediction.

[0069] According to some embodiments of the present disclosure, prediction, such as inter-frame image prediction or intra-frame image prediction, is performed in units of blocks. For example, according to the HEVC standard, images in a sequence of video images are divided into coding tree units (CTUs) for compression, and the CTUs in an image have the same size, for example, 64×64 pixels, 32×32 pixels, or 16×16 pixels. Typically, a CTU includes three coding tree blocks (CTBs), one luma CTB and two chroma CTBs. Each CTU may be recursively divided into one or more coding units (CUs) using a quadtree. For example, a 64×64 pixel CTU can be divided into one 64×64 pixel CU, four 32×32 pixel CUs, or sixteen 16×16 pixel CUs. In one example, each CU is analyzed to determine a prediction type for the CU, such as an inter-frame prediction type or an intra-frame prediction type. The CU is divided into one or more prediction units (PUs) according to temporal and / or spatial predictability. Typically, each PU includes a luma prediction block (PB) and two chroma PBs. In one embodiment, the prediction operation in encoding / decoding is performed in units of a prediction block. Using a luma prediction block as an example of a prediction block, the prediction block includes a matrix of pixel values ​​(e.g., luma values), such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.

[0070] 7 shows a diagram of a video encoder (703) according to another embodiment of the present disclosure. The video encoder (703) is configured to receive a processed block (e.g., a predictive block) of sample values ​​in a current video image in a video image sequence and to encode the processed block into an encoded image that is part of the encoded video sequence. In one example, the video encoder (703) is used in place of the video encoder (403) in the example of FIG. 4.

[0071] In an HEVC example, the video encoder (703) receives a matrix of sample values ​​for a processing block, such as a predicted block of 8x8 samples. The video encoder (703) determines, using rate-distortion optimization, whether to encode the processing block using intra-frame mode, inter-frame mode, or bidirectional prediction mode. If the processing block is encoded in intra-frame mode, the video encoder (703) can encode the processing block into a coded image using intra-frame prediction techniques. If the processing block is encoded in inter-frame mode or bidirectional prediction mode, the video encoder (703) can encode the processing block into a coded image using inter-frame prediction or bidirectional prediction techniques, respectively. In certain video coding techniques, merge mode can be an inter-frame image prediction submode in which a motion vector is derived from one or more motion vector predictors without the benefit of coded motion vector components other than the predictors. In certain other video coding techniques, there may be motion vector components applicable to the subject block. In one example, the video encoder (703) includes other components, such as a mode decision module (not shown) for determining the mode of the processing block.

[0072] In the example of Figure 7, the video encoder (703) includes an inter-frame encoder (730), an intra-frame encoder (722), a residual calculator (723), a switch (726), a residual encoder (724), a general controller (721), and an entropy encoder (725), coupled together as shown in Figure 7.

[0073] The inter-frame encoder (730) is configured to receive samples of a current block (e.g., a processing block), compare the block with one or more reference blocks in reference images (e.g., blocks in previous and subsequent images), generate inter-frame prediction information (e.g., redundant information descriptions from inter-frame coding techniques, motion vectors, merge mode information), and calculate inter-frame prediction results (e.g., predicted blocks) based on the inter-frame prediction information using any suitable technique. In some examples, the reference image is a decoded reference image that is decoded based on the coded video information.

[0074] The intra-frame encoder (722) is configured to receive samples of a current block (e.g., a processing block), in some cases compare the block with previously coded blocks in the same image, generate transformed and quantized coefficients, and in some cases generate intra-frame prediction information (e.g., intra-frame prediction direction information according to one or more intra-frame coding techniques). In one example, the intra-frame encoder (722) also calculates intra-frame prediction results (e.g., predicted blocks) based on the intra-frame prediction information and reference blocks in the same image.

[0075] The general-purpose controller (721) is configured to determine general-purpose control data and control other components of the video encoder (703) based on the general-purpose control data. In one example, the general-purpose controller (721) determines the mode of the block and provides a control signal to the switch (726) based on the mode. For example, if the mode is intraframe, the general-purpose controller (721) controls the switch (726) to select the intraframe mode result to be used by the residual calculator (723) and controls the entropy encoder (725) to select intraframe prediction information and include the intraframe prediction information in the codestream. Also, if the mode is interframe mode, the general-purpose controller (721) controls the switch (726) to select the interframe prediction result to be used by the residual calculator (723) and controls the entropy encoder (725) to select interframe prediction information and include the interframe prediction information in the codestream.

[0076] The residual calculator (723) is configured to calculate the difference (residual data) between the received block and a prediction result selected from the intra-frame encoder (722) or the inter-frame encoder (730). The residual encoder (724) is configured to operate on the residual data and encode the residual data to generate transform coefficients. In one example, the residual encoder (724) is configured to transform the residual data in the frequency domain to generate transform coefficients. The transform coefficients then undergo a quantization process to obtain quantized transform coefficients. In various embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is configured to perform an inverse transform and generate decoded residual data. The decoded residual data can be used by the intra-frame encoder (722) and the inter-frame encoder (730) as appropriate. For example, the inter-frame encoder (730) can generate decoded blocks based on the decoded residual data and inter-frame prediction information, and the intra-frame encoder (722) can generate decoded blocks based on the decoded residual data and intra-frame prediction information. The decoded blocks are processed appropriately to generate a decoded image, and in some examples, the decoded image can be buffered in a memory circuit (not shown) and used as a reference image.

[0077] The entropy encoder (725) is configured to format the bitstream to include the encoded block. The entropy encoder (725) is configured to include various information in accordance with an appropriate standard, such as the HEVC standard. In one example, the entropy encoder (725) is configured to include general control data, selected prediction information (e.g., intra-frame prediction information or inter-frame prediction information), residual information, and other appropriate information in the bitstream. Note that, according to the disclosed subject matter, there is no residual information when encoding a block in inter-frame mode or a merged sub-mode of bi-predictive mode.

[0078] 8 shows a diagram of a video decoder (810) according to another embodiment of the present disclosure. The video decoder (810) is configured to receive coded images that are part of a coded video sequence and decode the coded images to generate reconstructed images. In one example, the video decoder (810) is used in place of the video decoder (410) in the example of FIG. 4.

[0079] In the example of Figure 8, the video decoder (810) includes an entropy decoder (871), an inter-frame decoder (880), a residual decoder (873), a reconstruction module (874), and an intra-frame decoder (872), coupled together as shown in Figure 8.

[0080] The entropy decoder (871) can be configured to reconstruct, from the coded image, specific symbols representing syntax elements that make up the coded image. Such symbols include, for example, prediction information (e.g., intra-frame prediction information or inter-frame prediction information) that can identify the mode for coding the block (e.g., intra-frame, inter-frame, bi-predictive, a merged submode of the latter two, or another submode), specific samples or metadata used for prediction by the intra-frame decoder (872) or the inter-frame decoder (880), respectively, and residual information, for example, in the form of quantized transform coefficients. In one example, if the prediction mode is an inter-frame prediction mode or a bi-predictive mode, the inter-frame prediction information is provided to the inter-frame decoder (880). And, if the prediction type is an intra-frame prediction type, the intra-frame prediction information is provided to the intra-frame decoder (872). The residual information can undergo inverse quantization and be provided to the residual decoder (873).

[0081] The inter-frame decoder (880) is configured to receive the inter-frame prediction information and to generate an inter-frame prediction result based on the inter-frame prediction information.

[0082] The intraframe decoder (872) is configured to receive intraframe prediction information and generate a prediction result based on the intraframe prediction information.

[0083] The residual decoder (873) is configured to perform inverse quantization to extract dequantized transform coefficients and process the dequantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require certain control information (to include quantizer parameters (QP)), which may be provided by the entropy decoder (871) (data path not shown as this is only low volume control information).

[0084] The reconstruction module (874) is configured to combine, in the spatial domain, the residual as output by the residual decoder (873) and the prediction result (as output by an inter-frame prediction module or an intra-frame prediction module, as the case may be), to form a reconstructed block, which may be part of a reconstructed image, which may then be part of the reconstructed video. It should be noted that it may perform other appropriate operations, such as a deblocking operation, to improve visual quality.

[0085] It should be noted that the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be realized using any suitable technology. In one embodiment, the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be realized using one or more integrated circuits. In another embodiment, the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be implemented using one or more processors executing software instructions.

[0086] Aspects of this disclosure provide techniques for intra-frame image block compensation.

[0087] Block-based compensation from a different image is called motion compensation. Similarly, block compensation can also be performed from a previously reconstructed region within the same image. Block-based compensation from a reconstructed region within the same image is called intra-frame image block compensation or intra-frame block copy. The shift vector indicating the offset between the current block and a reference block within the same image is called a block vector (or BV for short). Unlike motion vectors in motion compensation, which can be any value (positive or negative, in either the x or y direction), block vectors have some constraints that ensure that the reference block is available and has already been reconstructed. Also, in some examples, some reference regions that are tile boundaries or wavefront ladder boundary boundaries are excluded to allow for parallel processing.

[0088] The coding of block vectors may be either explicit or implicit. In explicit mode, the difference between a block vector and its predictor is signaled, while in implicit mode, the block vector is reconstructed from a predictor (called a block vector predictor) in a manner similar to motion vectors in merge mode. In some implementations, the resolution of block vectors is limited to integer positions; in other systems, block vectors are allowed to point to fractional positions.

[0089] In some examples, the use of intra-frame block copies at the block level can be signaled using a reference index approach. The current picture being decoded is treated as a reference picture. In one example, such a reference picture is placed at the end of a list of reference pictures. This special reference picture is also managed together with other temporal reference pictures in a buffer, such as a decoded picture buffer (DPB).

[0090] There are also some variations on intra-frame block copying, such as inverted intra-frame block copying (where the reference block is flipped horizontally or vertically before being used to predict the current block), or line-based intra-frame block copying (where each compensation unit in an M×N coding block is an M×1 or 1×N line).

[0091] FIG. 9 illustrates an example of intra-frame block copying according to one embodiment of the present disclosure. A current image (900) is being decoded. The current image (900) includes a reconstructed region (910) (gray region) and a region to be decoded (920) (white region). A current block (930) is being reconstructed by the decoder. The current block (930) can be reconstructed from a reference block (940) located in the reconstructed region (910). The position offset between the reference block (940) and the current block (930) is called a block vector (950) (or BV (950)).

[0092] Traditionally, motion vector resolution has been a fixed value, such as quarter-pixel or eighth-pixel accuracy in H.264 / AVC and the Main Profile of HEVC. In HEVC SCC, the motion vector resolution can be selected to integer pixel or quarter-pixel. The switch occurs at each slice. In other words, all motion vectors within a slice have the same resolution.

[0093] In some later developments, the resolution of the motion vectors can be either 1 / 4 pixel, 1 integer pixel, or 4 integer pixels. In the 4 integer pixel example, each unit represents 4 integer pixels. Thus, there is a distance of 4 integer pixels between the symbols "0" and "1." Furthermore, adaptability occurs at the block level, meaning that the motion vectors can select different resolutions for different blocks.

[0094] Aspects of the present disclosure provide methods for motion vector resolution and block vector resolution adaptation in image and video compression.

[0095] Block vectors are typically signaled (i.e., signaled) at integer resolution. Therefore, if intra-frame block copies are extended to the full-frame range, all reconstructed regions of the currently decoded image can be used as references, but the cost of encoding block vector differentials is high for long-distance references. Adaptive block vector differential resolution can be used to improve the encoding of block vector differentials.

[0096] In some examples, multiple block vector resolutions are used to encode block vectors, and block vector resolutions can be switched at the block level. Furthermore, when more than two possible resolutions are used, a signaling flag, which can contain more than 1-bin (binary bit), is used to indicate which of the multiple block vector resolutions is used for the block vector differential of the current block. Possible resolutions include, but are not limited to, 1 / 8 pixel, 1 / 4 pixel, 1 / 2 pixel, 1 integer pixel, 2 integer pixels, 4 integer pixels, 8 integer pixels, etc. X integer pixels means that each smallest unit of a symbol represents X integer positions. For example, 2 integer pixels means that each smallest unit of a symbol represents two integer positions, 4 integer pixels means that each smallest unit of a symbol represents four integer positions, and 8 integer pixels means that each smallest unit of a symbol represents eight integer positions.

[0097] In one embodiment, a set of resolutions may be used, and a flag may be signaled to indicate which of the resolutions in the set to use. In one example, a block vector differential resolution set includes two resolutions, such as 1 integer pixel and 2 integer pixels. A 1-bin (1 binary) flag is then signaled to select one of the two possible resolutions. In another example, a block vector resolution set includes 1 integer pixel and 4 integer pixels. A 1-bin flag is then signaled to select one of the two possible resolutions.

[0098] In another example, the block vector difference resolution set includes 1 integer pixel, 2 integer pixels, and 4 integer pixels. A 1-bin flag is signaled to indicate whether 1 integer pixel resolution is used. If 1 integer pixel is not used, another 1-bin flag is signaled to indicate whether 4 integer pixel resolution is selected. In a similar manner to using 1-bin or 2-bin to indicate resolution selection from three possible resolutions, different binarization embodiments can be derived.

[0099] In another example, the block vector difference resolution set includes 1 integer pixel, 4 integer pixels, and 8 integer pixels. A 1-bin flag is signaled to indicate whether 1 integer pixel resolution is used. If 1 integer pixel is not used, another 1-bin flag is signaled to indicate whether 4 integer pixel resolution is selected. In a similar manner to using 1-bin or 2-bin to indicate resolution selection from three possible resolutions, different binarization embodiments can be derived.

[0100] In another example, the x and y components of the block vector differential can use different resolutions. For example, the x component of the block vector differential is 1 integer pixel resolution, and the y component is 4 integer pixel resolution. The resolution can be selected for each component by explicit signaling (one flag per component) or inference. For example, the magnitude of the block vector predictor for the current block can be used to estimate the resolution. In one example, if the magnitude of a component of the block vector predictor is greater than a threshold, the block vector differential resolution for that component uses a larger step resolution, e.g., 4 integer pixel resolution; otherwise, the component uses a smaller step resolution, e.g., 1 integer pixel resolution.

[0101] In another example, the x and y components of the block vector differential may use different resolutions. By default, the two components use a fixed resolution, such as 1 integer pixel resolution. Conditions for the components are set to determine the resolution. For example, if the condition for some components is met, each component can be switched to a different resolution by inference. The components of the predictor value are also quantized to the corresponding resolution or maintained at their original resolution. For example, a condition for one component is related to the magnitude of the block vector predicted value of the current block. The resolution of each component can be estimated by evaluating the magnitude of the block vector predicted value of the current block in each component. For example, if the magnitude of a component of the block vector predicted value is greater than a threshold, the block vector differential resolution of that component uses a larger step resolution, such as 4 integer pixel resolution; otherwise, the component uses a default step resolution, such as 1 integer pixel resolution. In one specific example, the default resolution is 1 integer pixel. The block vector predicted value is set to (-21, -3), and the threshold for using 4 integer pixel resolution for each component is set to 20. The decoded block vector difference symbol is (2,2). According to the rule, the x component uses 4 integer pixel resolution and the y component uses 1 integer pixel resolution. Then the predicted value becomes (-20,-3) (-21 is rounded to -20), and the block vector difference becomes (8,2) (with 4 integer pixels for the x component and 1 integer pixel for the y component). In this example, the final decoded block vector is (-12,-1).

[0102] Similar examples can be derived using the same derivation in the above example. In one embodiment, a set of possible resolutions is formed, and one or more signaling flags are used to indicate the resolution selection for each block. In the above example, the binary bits (bins) of the signaling flags may be context coded or bypass coded. If context coding is used, the block vector resolutions of spatially neighboring blocks of the current block can be used for context modeling. Alternatively, the resolution of the last coded block vector can be used.

[0103] According to another aspect of the present disclosure, a block vector predictor is typically derived from a previously coded block vector of a neighboring block for a current block. When used as a predictor, the previously decoded block vector may have a resolution different from that of the current block. The present disclosure provides a method for solving this problem.

[0104] In one embodiment, the original resolution of the block vector predictor remains unchanged. The decoded block vector differential is added to the block vector predictor at its target resolution to obtain the final decoded block vector. Thus, the final decoded block vector has the higher of the two resolutions (the original resolution of the block vector predictor and the target resolution of the decoded block vector differential). For example, the block vector predictor is a vector (-11,0) with 1 integer pixel resolution. The decoded block vector differential is a vector (-4,0) with 4 integer pixel resolution. The decoded block vector becomes a vector (-15,0) with 1 integer pixel resolution.

[0105] In another embodiment, the original resolution of the block vector predictor is rounded to the target resolution of the current block. The decoded block vector differential is added to the block vector predictor at its target resolution. Thus, the final decoded block vector is the lower of the two resolutions. For example, the block vector predictor is a vector (-11,0) with 1 integer pixel resolution. The decoded block vector differential is a vector (-4,0) with 4 integer pixel resolution. The block vector predictor is first rounded to a vector (-12,0) with 4 integer pixel resolution before being added to the decoded block vector differential. The decoded block vector becomes a vector (-16,0) with 4 integer pixel resolution.

[0106] Various rounding techniques can be used. In one example, the vector can be rounded to the nearest integer (corresponding to the integer symbol value) depending on the difference value. For example, (-11,0) with 1 integer pixel resolution is rounded to (-12,0) with 4 integer pixel resolution, and (-13,0) with 1 integer pixel resolution is also rounded to (-12,0) with 4 integer pixel resolution.

[0107] In another example, a ceiling operation is applied to a vector so that it rounds to the nearest integer (corresponding to an integer symbol value) that is not smaller than the current value. For example, (-11,0), which has 1 integer pixel resolution, is rounded to (-8,0), which has 4 integer pixel resolution, and (-13,0), which has 1 integer pixel resolution, is also rounded to (-12,0), which has 4 integer pixel resolution.

[0108] In another example, a flooring operation is applied to a vector so that it rounds to the nearest integer (corresponding to an integer symbol value) not greater than the current value. For example, (-11,0), which has 1 integer pixel resolution, is rounded to (-12,0), which has 4 integer pixel resolution, and (-13,0), which also has 1 integer pixel resolution, is rounded to (-16,0), which also has 4 integer pixel resolution.

[0109] In another example, vectors are rounded towards zero, e.g., (-11,0) with 1 integer pixel resolution is rounded to (-8,0) with 4 integer pixel resolution, and (11,-5) with 1 integer pixel resolution is rounded to (8,-4) with 4 integer pixel resolution.

[0110] Aspects of the present disclosure further provide techniques for handling boundary constraints with multiple resolutions. In one example, block vectors are constrained to point to reference regions where the use of intra-frame image block compensation is permitted. The constraints may include picture / slice / tile and wavefront boundaries of the permitted reference regions. When multiple resolutions are used, especially when resolutions greater than one integer pixel resolution are used, the boundary constraints need to be handled correctly.

[0111] In one embodiment, if a block vector (block vector prediction value + difference value) points to a location outside the reference region boundary, a clipping operation is performed to modify one or two components of the block vector back to the edge of the boundary, so that the modified block vector becomes valid. The clipping operation can be performed without considering the resolution of the decoded block vector. Therefore, after modification, the resolution of the block vector may be different from the resolution before modification.

[0112] In another embodiment, if the block vector (block vector prediction value + difference value) points to a location outside the reference region boundary, a clipping operation is performed to modify one or two components of the block vector back to the edge of the boundary, so that the modified block vector becomes valid. The clipping operation can be performed taking into account the resolution of the decoded block vector. Therefore, after modification, the resolution of the block vector remains the same as before modification.

[0113] In another embodiment, if the block vector (block vector prediction value + difference value) points to a location outside the reference region boundary, the pixels outside the boundary can be displayed by extending the pixels at the boundary horizontally or vertically.

[0114] In another embodiment, if the block vector (block vector prediction value + difference value) points to a location outside the reference region boundary, the resolution of the block vector difference is changed to the highest possible precision. For example, the block vector prediction value is the vector (0,0), and the block vector difference is the symbol (-5,0) with 4 integer pixel resolution. The highest possible precision is 1 integer pixel. If the decoded block vector has 4 integer pixel resolution, the block vector becomes (-20,0). If (-20,0) points to a location outside the left image boundary, the decoded block vector difference is changed to 1 integer pixel resolution, so that the decoded block vector becomes (-5,0), which is a valid vector in this case. This change can help move the block vector within the boundary.

[0115] According to another aspect of the present disclosure, the technique for processing multiple resolutions in block vectors for intra-frame image block compensation can be similarly applied to motion vectors for inter-frame image block compensation. In some embodiments, multiple motion vector resolutions are used to encode the motion vectors, and the motion vector resolutions can be switched at the block level. Furthermore, when more than two possible resolutions are used, a signaling flag that can exceed 1-bin is used to indicate which of the multiple motion vector resolutions is used for the motion vector differential of the current block. Possible resolutions include, but are not limited to, ⅛ pixel, ¼ pixel, ½ pixel, 1 integer pixel, 2 integer pixels, 4 integer pixels, 8 integer pixels, etc. X integer pixels means that each smallest unit of a symbol represents X integer positions. For example, 2 integer pixels means that each smallest unit of a symbol represents two integer positions, 4 integer pixels means that each smallest unit of a symbol represents four integer positions, and 8 integer pixels means that each smallest unit of a symbol represents eight integer positions.

[0116] In one example, the x and y components of the motion vector differential can use different resolutions. For example, the x component of the motion vector differential is 1 integer pixel resolution, and the y component is 4 integer pixel resolution. The resolution can be selected for each component by explicit signaling (one flag per component) or by inference. For example, the magnitude of the motion vector predictor of the current block can be used to estimate the resolution. In one example, if the magnitude of a component of the motion vector predictor is greater than a threshold, the motion vector differential resolution for that component uses a larger step resolution, for example, 4 integer pixel resolution; otherwise, the component uses a smaller step resolution, for example, 1 integer pixel resolution.

[0117] In another example, the x and y components of the motion vector differential can use different resolutions. By default, the two components use a fixed resolution, such as quarter-pixel resolution. Component conditions for the components are set to determine the resolution. For example, if the condition for some components is met, each component can be switched to a different resolution by inference. The predictor components are also quantized to the corresponding resolution or maintained at their original resolution. For example, a condition for one component is related to the magnitude of the motion vector predictor for the current block. The resolution of each component can be estimated by evaluating the magnitude of the motion vector predictor for the current block in that component. For example, if the magnitude of a component of the motion vector predictor is greater than a threshold, the motion vector differential resolution for that component uses a larger step resolution, such as 4 integer pixel resolution; otherwise, the component uses a default step resolution, such as quarter pixel resolution. In one specific example, the default resolution is quarter pixel. The motion vector predictor is set to (-20.75, -3.75), and the threshold for using 1 integer pixel resolution for each component is set to 5. The decoded motion vector difference symbol is (2,2). According to the rule, the x component uses full integer pixel resolution and the y component uses quarter pixel resolution. Then the motion vector prediction value becomes (-20,-3.75) (e.g., -20.75 is rounded towards zero to -20), and the block vector difference becomes (2,0.5) (with full integer pixel resolution for the x component and quarter pixel resolution for the y component). In this example, the final decoded block vector is (-18,-3.25).

[0118] FIG. 10 shows a flowchart outlining a process (1000) according to an embodiment of the present disclosure. The process (1000) can be used to reconstruct blocks coded in intraframe mode and can generate a prediction block for the block being reconstructed. In various embodiments, the process (1000) is performed by processing circuitry in the terminal devices (310), (320), (330), and (340), a processing circuit performing the functions of the video encoder (403), a processing circuit performing the functions of the video decoder (410), a processing circuit performing the functions of the video decoder (510), a processing circuit performing the functions of the intraframe prediction module (552), a processing circuit performing the functions of the video encoder (603), a processing circuit performing the functions of the predictor (635), a processing circuit performing the functions of the intraframe encoder (722), a processing circuit performing the functions of the intraframe decoder (872), or the like. In some embodiments, the process (1000) is implemented by software instructions, and thus, when the processing circuitry executes the software instructions, the processing circuitry performs the process (1000). This process starts at (S1001) and proceeds to (S1010).

[0119] In step S1010, prediction information of the current block is decoded from the coded video bitstream, where the prediction information indicates an intra-frame block copy mode.

[0120] In step S1020, a resolution for the block vector difference of the current block is selected from a set of candidate resolutions. In one example, a resolution flag is received and the resolution is selected based on the flag. In another example, the resolution is determined based on inference.

[0121] In (S1030), a block vector of the current block is determined based on the resolution of the selected block vector difference and the block vector prediction value of the current block.

[0122] In step S1040, the samples of the current block are reconstructed based on the determined block vector, and the process then proceeds to step S1099 where it ends.

[0123] The techniques described above can be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, Figure 11 illustrates a computer system (1100) suitable for implementing certain embodiments of the disclosed subject matter.

[0124] Computer software may be encoded using any suitable machine code or computer language, and may be produced by mechanisms such as assembly, compilation, linking, etc. to create code containing instructions that may be executed directly by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or may be interpreted, executed by microcode, etc.

[0125] The instructions may be executed by various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, internet of things devices, and the like.

[0126] 11 is exemplary in nature and is not intended to suggest any limitation on the scope of use or functionality of the computer software implementing the embodiments of the present disclosure. The arrangement of components should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary embodiment of computer system 1100.

[0127] The computer system (1100) may include several human interface input devices. Such human interface input devices may respond to input by one or more users via tactile input (e.g., keystrokes, swipes, data glove movements, etc.), audio input (e.g., voice, clapping, etc.), visual input (e.g., gestures, etc.), and olfactory input (not shown). The human interface devices may also be used to capture certain media that are not necessarily directly associated with conscious human input, such as audio (e.g., voice, music, ambient sounds, etc.), images (e.g., scanned images, photographic images obtained from a still image camera, etc.), and video (e.g., two-dimensional video, three-dimensional video including stereoscopic vision, etc.).

[0128] The human interface input devices may include one or more of a keyboard (1101), a mouse (1102), a trackpad (1103), a touchscreen (1110), a data glove (not shown), a joystick (1105), a microphone (1106), a scanner (1107), and a camera (1108) (only one of which is shown).

[0129] The computer system (1100) may also include several human interface output devices that may stimulate one or more of the user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may be haptic output devices (e.g., haptic feedback via a touchscreen (1110), data gloves (not shown), or joystick (1105), but may also be haptic feedback devices that do not act as input devices), audio output devices (e.g., speakers (1109), headphones (not shown)), visual output devices (e.g., screens (1110), including CRT screens, LCD screens, plasma screens, and OLED screens, each of which may or may not have touchscreen input capabilities, each of which may or may not have haptic feedback capabilities, some of which may output two-dimensional visual output or three or more dimensional visual output, for example, via stereographic output, virtual reality glasses (not shown), holographic displays and smoke tanks (not shown), and printers (not shown).

[0130] The computer system (1100) may include human-accessible storage devices and their associated media, such as optical media or similar media (1121), including CD / DVD ROM / RW (1120) with CD / DVDs, thumb drives (1122), removable hard drives or solid state drives (1123), legacy magnetic media such as tape and floppy disks (not shown), specialized ROM / ASIC / PLD-based devices such as security dongles (not shown), and the like.

[0131] Those skilled in the art should 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 transitory signals.

[0132] The computer system (1100) may also include interfaces to one or more communication networks. The networks may be, for example, wireless, wired, or optical. The networks may further include local networks, wide area networks, metropolitan area networks, vehicular and industrial networks, real-time networks, delay-tolerant networks, and the like. Examples of networks include LANs such as Ethernet, wireless LANs, cellular networks (GSM, 3G, 4G, 5G, LTE, etc.), television cable or wireless wide area digital networks (including cable television, satellite television, and terrestrial broadcast television), vehicular and industrial networks (including CAN Bus), and the like. Some networks generally require an external network interface adapter connected to some general-purpose data port or peripheral bus (1149) (e.g., a USB port on the computer system (1100)), while other systems are typically integrated into the core of the computer system (1100) by connecting to a system bus (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system), as described below. Using any of these networks, the computer system (1100) can communicate with other entities. Such communication may be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., from the Canbus to a specific Canbus device), or two-way, e.g., to other computer systems using local or wide-area digital networks. As noted above, specific protocols and protocol stacks may be used with each of these networks and network interfaces.

[0133] The above-mentioned human interface devices, human-accessible storage devices, and network interfaces can be connected to the core (1140) of the computer system (1100).

[0134] The core (1140) may include one or more central processing units (CPUs) (1141), graphics processing units (GPUs) (1142), dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) (1143), hardware accelerators for specific tasks (1144), etc. These devices may be connected via a system bus (1148), along with read-only memory (ROM) (1145), random access memory (1146), internal mass storage (1147), such as an internal non-user-accessible hard disk drive or SSD, etc. In some computer systems, the system bus (1148) may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus (1148) or via a peripheral bus (1149). Peripheral bus architectures include Peripheral Interface to External Controllers (PCI), Universal Serial Bus (USB), etc.

[0135] The CPU (1141), GPU (1142), FPGA (1143), and accelerator (1144) can execute several instructions, which can be combined to form the above-mentioned computer code. The computer code can be stored in ROM (1145) or RAM (1146). Temporary data can be stored in RAM (1146), while permanent data can be stored in, for example, internal mass storage (1147). The use of high-speed storage, which can be closely associated with one or more CPUs (1141), GPUs (1142), mass storage (1147), ROM (1145), RAM (1146), etc., enables high-speed storage and retrieval from any memory device.

[0136] The computer-readable medium can have computer code thereon for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be any medium and code known and available to those skilled in the computer software arts.

[0137] By way of example and not limitation, the architecture (1100), and in particular a computer system having a core (1140), can provide functionality as a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible, computer-readable media. Such computer-readable media may be media related to the user-accessible mass memory described above, and may be specific storage with the core (1140), such as the core's internal mass storage (1147) or ROM (1145), which may be non-volatile. Software implementing various embodiments of the present disclosure may be stored in such devices and executed by the core (1140). The computer-readable media may include one or more memory devices or chips, depending on particular needs. This software may cause the core (1140), and in particular the processor (including a CPU, GPU, FPGA, etc.) therein, to perform particular processes or particular portions of particular processes described herein, including defining data structures stored in RAM (1146) and modifying such data structures according to software-defined processes. Additionally or alternatively, the computer system may provide resulting functionality embodied in logic, hardware, or other circuitry (e.g., accelerator (1144)), which may operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. Where appropriate, references to software may include logic, and vice versa. Where appropriate, references to computer-readable media may include circuitry (such as an integrated circuit (IC)) that stores executable software, circuitry embodying executable logic, or both. The present disclosure encompasses any appropriate combination of hardware and software. Appendix A: Acronyms JEM: Joint exploration model, joint development model VVC: versatile video coding BMS:benchmark set MV: Motion Vector HEVC: High Efficiency Video Coding SEI: Supplementary Enhancement Information VUI: Video Usability Information GOPs: Groups of Pictures TUs: Transform Units PUs: Prediction Units CTUs: Coding Tree Units CTBs: Coding Tree Blocks PBs: Prediction Blocks HRD: Hypothetical Reference Decoder SNR: Signal Noise Ratio CPUs: Central Processing Units GPUs: Graphics Processing Units CRT:Cathode Ray Tube LCD: Liquid-Crystal Display OLED: Organic Light-Emitting Diode CD: Compact Disc DVD: Digital Video Disc ROM: Read-Only Memory RAM: Random Access Memory ASIC: Application-Specific Integrated Circuit PLD: Programmable Logic Device LAN: Local Area Network GSM: Global System for Mobile communications LTE:Long-Term Evolution, long-term evolution CANBus: Controller Area Network Bus USB: Universal Serial Bus PCI: Peripheral Component Interconnect, external controller interface FPGA: Field Programmable Gate Areas, Field Programmable Gate Array SSD: solid-state drive IC: Integrated Circuit CU: Coding Unit While this disclosure has described several exemplary embodiments, there are modifications, arrangements, and various equivalent substitutions that fall within the scope of this disclosure. It should therefore be understood that those skilled in the art will be able to design various 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. [Explanation of symbols]

[0138] 101 Samples 300 Communication Systems 310, 320 terminal devices 350 Network

Claims

1. A method for decoding video with a decoder, A step of decoding prediction information for the current block from an encoded video bitstream, wherein the prediction information indicates whether or not to apply an intra-frame block copy mode; A step of selecting the resolution of the block vector difference of the current block from a set of multiple candidate resolutions, wherein it is determined whether a first resolution included in the set is used based on a first syntax element in the bitstream, and if the first resolution is not used, one of two resolutions included in the set is selected as the second resolution based on a second syntax element in the bitstream, wherein the first resolution and the two resolutions are three different resolutions, and at least one of the two resolutions is an integer pixel resolution, A step of determining the block vector of the current block based on the resolution of the block vector difference selected in the above selection step and the block vector of the predicted block, A method comprising the step of reconstructing at least one sample of the current block based on the block vector.

2. The method according to claim 1, wherein the first resolution is a 1 / 4 pixel resolution, and the second resolution is any of 1 / 16, 1 / 8, 1 / 2, 1, 2, 4, or 8 pixel resolutions.

3. A program that causes a computer to perform the method described in claim 1 or 2.

4. A device for decoding video, It includes a processing circuit, and the processing circuit is A step of decoding prediction information for the current block from an encoded video bitstream, wherein the prediction information indicates whether or not to apply an intra-frame block copy mode; A step of selecting the resolution of the block vector difference of the current block from a set of multiple candidate resolutions, wherein it is determined whether a first resolution included in the set is used based on a first syntax element in the bitstream, and if the first resolution is not used, one of two resolutions included in the set is selected as the second resolution based on a second syntax element in the bitstream, wherein the first resolution and the two resolutions are three different resolutions, and at least one of the two resolutions is an integer pixel resolution, A step of determining the block vector of the current block based on the resolution of the block vector difference selected in the above selection step and the block vector of the predicted block, An apparatus configured to perform the steps of: reconstructing at least one sample of the current block based on the block vector.

5. A method implemented by an encoder, When applying an intra-frame block copy mode in video encoding, the video encoding is performed by determining the block vector difference of the current block at a resolution selected from a set of candidate resolutions, based on the block vector of the current block of the video and the block vector of the predicted block, The encoder signals by a first syntax element whether or not to use a first resolution included in the set, and if the first resolution is not used, signals by a second syntax element to select one of two resolutions included in the set as the second resolution, wherein the first resolution and the two resolutions are three different resolutions, and at least one of the two resolutions is an integer pixel resolution.

6. A method implemented by an encoder, When applying an intra-frame block copy mode in video encoding, the steps include: determining the block vector difference of the current block at a resolution selected from a set of candidate resolutions, based on the block vector of the current block of the video and the block vector of the predicted block, and then encoding the video; The steps include: sending the bitstream of the video encoded in the above encoding step to a decoder; A method comprising: the encoder signaling by a first syntax element in the bitstream whether or not to use a first resolution included in the set; and, if the first resolution is not used, signaling by a second syntax element in the bitstream to select one of two resolutions included in the set as the second resolution, wherein the first resolution and the two resolutions are three different resolutions, and at least one of the two resolutions is an integer pixel resolution.

7. It is a method of memorization, When applying an intra-frame block copy mode in video encoding, the steps include: determining the block vector difference of the current block at a resolution selected from a set of candidate resolutions, based on the block vector of the current block of the video and the block vector of the predicted block, and then encoding the video; The steps include storing the bitstream of the video encoded in the above encoding step into a storage medium, and A method comprising a bitstream in which a first syntax element is for signaling whether or not to use a first resolution included in the set, and a second syntax element in the bitstream is for signaling whether or not to use a first resolution included in the set as the second resolution if the first resolution is not used, wherein the first resolution and the two resolutions are three different resolutions, and at least one of the two resolutions is an integer pixel resolution.