Method and apparatus for video encoding
Patent Information
- Application Number
- CN202410974280.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-03-29
- Filing Date
- 2021-03-31
- Publication Date
- 2026-10-09
- Estimated Expiration
- 2041-03-31
AI Technical Summary
然而,在所有情况下,均会存在统计上比某些其他方向更不可能出现在视频内容中的某些方向
Smart Images

Figure CN118972604B_ABST
Abstract
Description
[0001] References merged
[0002] This application claims priority to U.S. Patent Application No. 17 / 203,189, filed March 16, 2021, entitled “METHOD AND APPARATUS FOR VIDEO CODING,” and U.S. Patent Application No. 17 / 215,886, filed March 29, 2021, entitled “METHOD AND APPARATUS FOR VIDEO CODING,” which in turn claims priority to U.S. Provisional Application No. 63 / 003,665, filed April 1, 2020, entitled “HISTORY BASED VECTOR PREDICTION FOR INTRA PICTURE BLOCK AND STRING COPYING.” The entire disclosure of the earlier applications is incorporated herein by reference. Technical Field
[0003] This disclosure relates generally to video coding, and more specifically to a method and apparatus for video coding. Background Technology
[0004] The purpose of the background description provided herein is to present the general context of this disclosure. To the extent that the work described in this background section is intended, neither the work of the currently identified inventors nor aspects of the description which at the time of submission are explicitly or implicitly acknowledged as prior art to this disclosure.
[0005] Video encoding and decoding can be performed using inter-picture prediction with motion compensation. Uncompressed digital video can comprise a series of pictures, each with spatial dimensions, for example, 1920×1080 luma samples and correlated chroma samples. This series of pictures can have a fixed or variable picture rate (informally, also referred to as the frame rate), such as 60 pictures per second or 60 Hz. Uncompressed video has specific bitrate requirements. For example, 1080p60 4:2:0 video with 8 bits per sample (1920×1080 luma sample resolution at a frame rate of 60 Hz) requires a bandwidth close to 1.5 Gbit / s. One hour of such video would require more than 600 GB of storage space.
[0006] One objective of video encoding and decoding is to reduce the redundancy of the input video signal through compression. Compression can help reduce the aforementioned bandwidth and / or storage space requirements, in some cases by two or more orders of magnitude. Lossless compression, lossy compression, and combinations thereof can be employed. Lossless compression refers to the technique of reconstructing an exact copy of the original signal from the compressed original signal. When using lossy compression, the reconstructed signal may differ from the original signal, but the distortion between the original and reconstructed signals is small enough that the reconstructed signal can be used for the target application. In the case of video, lossy compression is widely used. The amount of distortion that can be tolerated depends on the application; for example, users of some consumer streaming applications may tolerate higher distortion compared to users of television distribution applications. The achievable compression ratio reflects the fact that higher allowable / acceptable distortion can result in a higher compression ratio.
[0007] Video encoders and video decoders can utilize techniques from several broad categories, including motion compensation, transform, quantization, and entropy coding.
[0008] Video codec techniques can include techniques known as intra-frame coding. In intra-frame coding, sample values are represented without reference to samples or other data from previously reconstructed reference pictures. In some video codecs, a picture is spatially subdivided into sample blocks. When all sample blocks are encoded in intra-frame mode, the picture can be an intra-frame picture. Intra-frame pictures and their derivatives (e.g., independent decoder refresh pictures) can be used to reset the decoder state and therefore can be used as the first picture in the encoded video bitstream and video session or as a still image. Samples of intra-frame blocks can be transformed, and the transform coefficients can be quantized before entropy coding. Intra-frame prediction can be a technique that minimizes the sample values in the pre-transform domain. In some cases, the smaller the transformed DC value and the smaller the AC coefficients, the fewer bits are needed to represent the entropy-coded block at a given quantization step size.
[0009] Traditional intra-frame coding, such as intra-frame coding techniques known from MPEG-2 generation coding technologies, does not use intra-frame prediction. However, some newer video compression techniques include attempts to use metadata and / or surrounding sample data obtained during the encoding and / or decoding of, for example, spatially adjacent data blocks that are earlier in the decoding order. Such techniques are hereby referred to as "intra-frame prediction" techniques. Note that, in at least some cases, intra-frame prediction uses only reference data from the current picture being reconstructed, and not reference data from a reference picture.
[0010] Many different forms of intra-prediction can exist. When more than one such technique can be used for a given video coding technique, the technique used can be encoded within an intra-prediction mode. In some cases, a mode can have sub-modes and / or parameters, and these sub-modes and / or parameters can be encoded individually or included in the mode codeword. Which codeword is used for a given combination of modes, sub-modes, and / or parameters can affect the coding efficiency gain through intra-prediction, and therefore can affect the entropy coding technique used to convert the codeword into a bitstream.
[0011] Some patterns of intra-frame prediction were introduced in H.264, refined in H.265, and further refined in newer coding techniques such as the Joint Exploration Model (JEM), Versatile Video Coding (VVC), and Benchmark Set (BMS). Predictor blocks can be formed using neighboring sample values belonging to already available samples. The sample values of neighboring samples are copied into the predictor block according to the direction. The reference to the direction used can be encoded in the bitstream or it can be predicted itself.
[0012] As video coding techniques advance, the number of possible directions increases. However, in all cases, there will always be some directions that are statistically less likely to appear in the video content than others. Since the goal of video compression is to reduce redundancy, in well-functioning video coding techniques, those less likely directions will be represented by a larger number of bits than the more likely directions.
[0013] Therefore, the problem that this invention needs to solve is how to effectively obtain the most likely prediction direction for video decoding, so as to reduce the waste of resources caused by storing a large number of prediction directions and reduce redundant searches for a wide range of prediction directions. Summary of the Invention
[0014] This disclosure provides methods and apparatus for video encoding / decoding in various aspects.
[0015] This disclosure provides a method for user video decoding, comprising: determining current vector information of a current sample unit in the current block based on the encoding mode of the current block and a history buffer, the history buffer being configured to store at least vector information of a block previously decoded in IBC mode and a string previously decoded in the string copy mode; and reconstructing the current sample unit based on the current vector information.
[0016] This disclosure also provides a method for user video decoding, comprising: decoding encoding information of a current block, the encoding information indicating that the current block is encoded in a string copy mode; determining a string vector (SV) and a string length of a current string in the current block based on the encoding information, the string length being N³ multiplied by L, where N³ and L are positive integers and L is greater than 1; and reconstructing the current string based on the SV and string length of the current string.
[0017] In some examples, the apparatus for video decoding includes processing circuitry. The processing circuitry can be configured to decode the encoding information of the current block of the current image. The encoding information may indicate that the encoding mode of the current block is one of the following modes: intra-block copy (IBC) mode and string copy mode. The processing circuitry can be configured to determine the current vector information of the current sample unit in the current block based on the encoding mode of the current block and a history buffer. The history buffer can be configured to store at least the vector information of blocks previously decoded in IBC mode and strings previously decoded in string copy mode. The processing circuitry can be configured to reconstruct the current sample unit based on the current vector information.
[0018] In this implementation, the encoding mode of the current block is IBC mode. The current sample unit is the current block. The processing circuit can be configured to determine the BV predictor candidate list for the current block based at least on vector information in the history buffer, and to determine the current BV in the current vector information based on the BV predictor candidate list.
[0019] In this implementation, the encoding mode of the current block is string copy mode. The current sample unit is the current string in the current block. The processing circuit can be configured to determine the current SV in the current vector information from the vector information in the history buffer. The current SV is used for the current string.
[0020] In an implementation, the processing circuit can be configured to store the current vector information in the history buffer if the current vector information differs from one or more vector information in the history buffer. In an example, the processing circuit is configured to determine that the current vector information differs from one or more vector information in the history buffer when the difference between the current vector in the current vector information and each previous vector of one or more vector information in the history buffer is greater than a predetermined threshold.
[0021] In the example, the processing circuitry can be configured to determine that the current vector information is different from one or more vector information pieces in the history buffer based on the size difference between the current cell size of the current vector information and the previous cell size of each of the one or more vector information pieces being greater than a predetermined size threshold. The current cell size of the current vector information can indicate the number of samples in the current cell. The vector information in the history buffer can be used to decode previous sample cells, which include blocks previously decoded in IBC mode and strings previously decoded in string copy mode. The previous cell size can indicate the number of samples in the corresponding previous cell. In the example, the processing circuitry is configured to remove one of the one or more vector information pieces from the history buffer based on the difference between the current vector and the previous vector of one of the one or more vector information pieces not exceeding a predetermined threshold.
[0022] In an implementation, one or more vector information includes: (i) a subset of vector information in a history buffer; or (ii) vector information in a history buffer.
[0023] In this implementation, one of the vector information in the history buffer includes a string vector and one of the following: (i) a string position; and (ii) the string size of the string previously decoded in string copy mode. The string position is the position of a predetermined sample in the string previously decoded in string copy mode. The string size is the number of samples in the string previously decoded in string copy mode.
[0024] In an implementation, the vector information in the history buffer includes previous vectors and previous cell sizes, as well as previous cell positions for corresponding previously decoded sample cells, including blocks previously decoded in IBC mode and strings previously decoded in string copy mode. The processing circuitry can be configured to classify each of the vector information stored in the history buffer into one of a plurality of categories based on at least one of the following: (i) the previous cell size of the corresponding vector information; (ii) the previous cell position of the corresponding vector information; or (iii) using the corresponding vector information to predict the number of times one or more previously decoded sample cells are used. The history buffer can be a class-based history buffer. In the example, the encoding information of the current block also includes an index. The processing circuitry can be configured to determine the current vector information as the first entry in one of a plurality of categories indicated by the index.
[0025] According to various aspects of this disclosure, the processing circuitry can be configured to decode the encoding information of the current block. The encoding information may indicate that the current block is encoded in string copy mode. The processing circuitry can be configured to determine the string vector (SV) and string length of the current string in the current block based on the encoding information. The string length may be N³ multiplied by L, where N³ and L are positive integers, and L is greater than 1. The processing circuitry can be configured to reconstruct the current string based on the SV and string length of the current string.
[0026] In the example, the current block is a luminance block and L is 4.
[0027] In the example, the current block is a chroma block. The chroma subsampling format is 4:2:0, indicating that the chroma block has half the height and half the width of the corresponding luma block. L is 2 when the chroma block and its corresponding luma block are jointly encoded; and L is 4 when the chroma block and its corresponding luma block are separately encoded.
[0028] In the example, the current block includes one or more strings that contain the current string. The current block also includes escape samples that are outside of one or more strings. The number of escape samples is one or more times L. In the example, the number of escape samples in the same line of the current block is one or more times L.
[0029] In this implementation, the encoding information also includes a syntax element indicating the string length. The encoded value of the syntax element is the string length divided by L. The encoded value of the syntax element is an integer in the range of 1 to (M1 / L-1), where M1 is the number of samples in the current block. In this example, the processing circuitry is configured to decode the syntax element and also determine the string length as the encoded value of the syntax element multiplied by L.
[0030] In this implementation, the processing circuitry is configured to decode a syntax element indicating the resolution of the SV. In the example, the syntax element has 1 bit indicating that the resolution of the SV is one of (i) 1 sample and (ii) 4 samples. Based on the SV resolution being 4 samples, the processing circuitry is configured to determine the intermediate SV based on the encoding information and to determine the SV as the intermediate SV multiplied by 4.
[0031] In the example, the current block includes multiple strings having the current string, and the length of the last string to be encoded among the multiple strings is not signaled. In the example, the length of the last string is determined based on: (i) the number of samples in the current block; and (ii) the length of one or more of the remaining strings among the multiple strings. In the example, the encoding information includes a flag indicating whether the current string is the last string.
[0032] This disclosure also provides a non-transitory computer-readable medium storing instructions that, when executed by a computer for video encoding / decoding, cause the computer to perform any of the methods used for video decoding.
[0033] This disclosure also provides an apparatus for video decoding, comprising: a decoding unit configured to decode encoding information of a current block of a current image, the encoding information indicating that the encoding mode of the current block is one of the following modes: intra-block copy (IBC) mode and string copy mode; a determining unit configured to determine current vector information of a current sample unit in the current block based on the encoding mode of the current block and a history buffer, the history buffer being configured to store at least vector information of a block previously decoded in IBC mode and a string previously decoded in the string copy mode; and a reconstruction unit configured to reconstruct the current sample unit based on the current vector information.
[0034] This disclosure also provides an apparatus for video decoding, comprising: a decoding unit configured to decode encoding information of a current block, the encoding information indicating that the current block is encoded in a string copy mode; a determining unit configured to determine, based on the encoding information, a string vector (SV) and a string length of a current string in the current block, the string length being N³ multiplied by L, where N³ and L are positive integers and L is greater than 1; and a reconstruction unit configured to reconstruct the current string based on the SV and the string length of the current string.
[0035] This disclosure also provides a computer device including a processor and a memory. The memory is used to store program code and transfer the program code to the processor; the processor is used to execute, according to instructions in the program code: determining current vector information of a current sample unit in the current block based on the encoding mode of the current block and a history buffer, the history buffer being configured to store at least vector information of a block previously decoded in IBC mode and a string previously decoded in the string copy mode; and reconstructing the current sample unit based on the current vector information.
[0036] This disclosure also provides a computer device. The device includes a processor and a memory. The memory stores program code and transmits the program code to the processor; the processor executes instructions in the program code to: decode encoding information of a current block, the encoding information indicating encoding the current block in string copy mode; determine, based on the encoding information, a string vector (SV) and string length of a current string in the current block, the string length being N³ multiplied by L, where N³ and L are positive integers and L is greater than 1; and reconstruct the current string based on the SV and string length of the current string.
[0037] According to the methods and apparatus for video decoding provided in this disclosure, constraints are imposed on the search range and block vector of the reference block of the current block, such that the size of the search range is within the CTB size. Additionally, vector prediction may include BV prediction in IBC mode and / or SV prediction in string copy mode. Vector prediction may include skip mode vector prediction, merge mode (or direct mode) vector prediction, and / or vector prediction using differential coding. In skip mode vector prediction and merge mode vector prediction, vectors (e.g., BV, SV) can be directly recovered from the predictor (or vector predictor, such as a BV predictor, SV predictor) without using differential coding. Attached Figure Description
[0038] Other features, properties, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings, which are shown in the drawings: Figure 1A This is a schematic diagram of an exemplary subset of intra-frame prediction modes.
[0039] Figure 1B This is an illustration of an exemplary intra-frame prediction direction.
[0040] Figure 2 This is a schematic diagram of the current block and its surrounding space merge candidates in an example.
[0041] Figure 3 This is a simplified block diagram of a communication system according to an implementation method.
[0042] Figure 4 This is a simplified block diagram of a communication system according to an implementation method.
[0043] Figure 5 This is a simplified block diagram of the decoder according to the implementation method.
[0044] Figure 6 This is a simplified block diagram of an encoder according to an implementation method.
[0045] Figure 7A block diagram of an encoder according to another embodiment is shown.
[0046] Figure 8 A block diagram of a decoder according to another embodiment is shown.
[0047] Figure 9 An example of intra-block copying according to an embodiment of this disclosure is shown.
[0048] Figure 10 An example of intra-block copying according to an embodiment of this disclosure is shown.
[0049] Figure 11 An example of intra-block copying according to an embodiment of this disclosure is shown.
[0050] Figures 12A to 12D An example of intra-block copying according to an embodiment of this disclosure is shown.
[0051] Figure 13 An example of the spatial class for intra-block copy block vector prediction of the current block is shown according to an embodiment of this disclosure.
[0052] Figure 14 An example of a string copying mode according to an embodiment of this disclosure is shown.
[0053] Figure 15 A flowchart outlining the process according to an embodiment of this disclosure is shown.
[0054] Figure 16 A flowchart outlining the process according to an embodiment of this disclosure is shown.
[0055] Figure 17 This is a schematic diagram of a computer system according to an implementation method. Detailed Implementation
[0056] refer to Figure 1A The lower right corner depicts a subset of nine predictor directions known from the 33 possible predictor directions of H.265 (corresponding to 33 angular modes of the 35 intra-frame modes). The point (101) where the arrows converge represents the sample being predicted. The arrows indicate the direction in which the sample is predicted. For example, arrow (102) indicates that sample (101) is predicted from one or more samples at a 45-degree angle to the horizontal from the upper right. Similarly, arrow (103) indicates that sample (101) is predicted based on one or more samples at a 22.5-degree angle to the horizontal from the lower left of sample (101).
[0057] Still referencing Figure 1AA 4×4 square block (104) of samples is depicted in the upper left (indicated by a bold dashed line). The square block (104) comprises 16 samples, each labeled with “S”, 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 top) and the first sample in the X dimension (from left). Similarly, sample S44 is the fourth sample in both the Y and X dimensions of block (104). Since the block size is 4×4 samples, S44 is located in the lower right. Also shown are reference samples, which follow a similar numbering scheme. Reference samples are labeled with R, their Y position relative to block (104) (e.g., row index), and X position (column index). In both H.264 and H.265, predicted samples are adjacent to the blocks in the reconstruction; therefore, negative values are not required.
[0058] Intra-frame image prediction can work by copying reference sample values from neighboring samples specified by a prediction direction indicated by a signal. For example, suppose the encoded video bitstream includes signaling for that block, the signaling indicating a prediction direction consistent with arrow (102)—that is, predicting samples based on one or more prediction samples at a 45-degree angle to the horizontal from the upper right. In this case, samples S41, S32, S23, and S14 are predicted from the same reference sample R05. Sample S44 is then predicted based on reference sample R08.
[0059] In some cases, the values of multiple reference samples can be combined, for example, by interpolation, to calculate the reference sample; especially when the orientation cannot be uniformly divided at 45 degrees.
[0060] As video coding techniques have evolved, the number of possible directions has also increased. In H.264 (2003), nine different directions could be represented. This increased to 33 in H.265 (2013), and JEM / VVC / BMS could support up to 65 directions at the time of publication. Experiments have been conducted to identify the most probable directions, and certain techniques in entropy coding have been used to represent these possible directions with a small number of bits, thus incurring some penalty for less likely directions. Furthermore, the direction itself can sometimes be predicted based on adjacent directions used in adjacent decoded blocks.
[0061] Figure 1B A schematic diagram (180) depicting 65 intra-frame predicted directions according to JEM is shown to illustrate the increase in the number of predicted directions over time.
[0062] The mapping of intra-prediction direction bits representing direction in an encoded video bitstream can vary depending on the video coding technique; and can range from, for example, a simple direct mapping from prediction direction to intra-prediction mode, to codewords, to complex adaptive schemes involving the most probable mode, and similar techniques. However, in all cases, there will be certain directions that are statistically less likely to appear in the video content than some other directions. Since the goal of video compression is to reduce redundancy, in well-functioning video coding techniques, those less likely directions will be represented by a larger number of bits than the more likely directions.
[0063] Motion compensation can be a lossy compression technique and can involve using blocks of sample data from a previously reconstructed image or a portion thereof (the reference image) spatially shifted in a direction indicated by a motion vector (hereinafter referred to as MV) to predict a newly reconstructed image or a portion thereof. In some cases, the reference image can be the same as the image currently being reconstructed. The MV can have two dimensions, X and Y, or it can have three dimensions, the third being an indication of the reference image in use (the latter could indirectly be a temporal dimension).
[0064] In some video compression techniques, the motion vector (MV) applicable to a specific region of sample data can be predicted from other MVs, for example, those other MVs that relate to another region of sample data that is spatially adjacent to the region being reconstructed and precedes that MV in the decoding order. This significantly reduces the amount of data required to encode the MV, thereby eliminating redundancy and increasing compression. For example, MV prediction can be effective because there is a statistical probability that a region larger than the region applicable to a single MV shifts along similar directions when encoding the input video signal (referred to as natural video) from the camera device, and therefore, in some cases, prediction can be made using similar motion vectors derived from the MVs of adjacent regions. This makes the MV found for a given region similar to or identical to the MV predicted from the surrounding MVs, and thus can be represented after entropy encoding with fewer bits than if the MV were encoded directly. In some cases, MV prediction can be an example of lossless compression of the signal (i.e., the MV) derived from the original signal (i.e., the sample stream). In other cases, MV prediction itself can be lossy, for example, due to rounding errors when calculating the predictor from several surrounding MVs.
[0065] Various MV prediction mechanisms are described in H.265 / HEVC (ITU-T H.265 Recommendation, “High Efficiency Video Coding”, December 2016). Among the various MV prediction mechanisms provided by H.265, this paper describes the technique subsequently known as “spatial combining”.
[0066] refer to Figure 2 The current block (201) includes samples that have been discovered by the encoder during motion search processing and can be predicted based on previous blocks of the same size that have been spatially shifted. Instead of directly encoding the MV, the MV can be derived from metadata associated with one or more reference images, for example, using the MV associated with any of the five surrounding samples represented as A0, A1 and B0, B1, B2 (corresponding to 202 to 206 respectively), based on the metadata of the most recent (in decoding order) reference image. In H.265, MV prediction can use a predictor from the same reference image that is also being used in adjacent blocks.
[0067] Figure 3 A simplified block diagram of a communication system (300) according to an embodiment of the present disclosure is shown. The communication system (300) includes a plurality of terminal devices that can communicate with each other via, for example, a network (350). For example, the communication system (300) includes a first pair of terminal devices (310) and terminal device (320) interconnected via a network (350). Figure 3 In the example, the first pair of terminal devices (310) and (320) perform one-way data transmission. For example, terminal device (310) may encode video data (e.g., a video image stream captured by terminal device (310)) for transmission over a network (350) to another terminal device (320). The encoded video data is transmitted in the form of one or more encoded video streams. Terminal device (320) may receive the encoded video data from the network (350), decode the encoded video data to recover the video data, and display video images based on the recovered video data. One-way data transmission is common in applications such as media services.
[0068] In another example, the communication system (300) includes a second pair of terminal devices (330) and (340) performing bidirectional transmission of encoded video data, which may occur, for example, during a video conference. For bidirectional data transmission, each of the terminal devices (330) and (340) may encode video data (e.g., a stream of video images captured by the terminal device) for transmission over a network (350) to the other terminal device (330) and (340). Each of the terminal devices (330) and (340) may also receive encoded video data transmitted by the other terminal device (330) and (340), and may decode the encoded video data to video data, and may display video images on an accessible display device based on the recovered video data.
[0069] exist Figure 3 In the examples, terminal devices (310), (320), (330), and (340) may be servers, personal computers, and smartphones, but the principles of this disclosure are not limited thereto. Implementations of this disclosure are applicable to laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. Network (350) refers to any number of networks that transmit encoded video data between terminal devices (310), (320), (330), and (340), including, for example, wired (connected) and / or wireless communication networks. Communication networks (350) may exchange data in circuit-switched and / or packet-switched channels. Representative networks include telecommunications networks, local area networks (LANs), wide area networks (WANs), and / or the Internet. For the purposes of this disclosure, unless explained below, the architecture and topology of the network (350) may be irrelevant to the operation of this disclosure.
[0070] As an implementation method Figure 4 This illustrates the placement of video encoders and video decoders in a streaming environment. The disclosed subject matter is equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, storing compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0071] The streaming system may include a capture subsystem (413) that may include a video source (401) such as a digital camera, which creates an uncompressed video image stream (402). In this example, the video image stream (402) includes samples captured by a digital camera. The video image stream (402) is depicted as a thick line to emphasize the high data volume of the video image stream compared to encoded video data (404) (or encoded video bitstream). The video image stream (402) may be processed by an electronic device (420) that includes a video encoder (403) coupled to the video source (401). The video encoder (403) may include hardware, software, or a combination of hardware and software to implement or carry out aspects of the disclosed subject matter as described in more detail below. Compared to the video image stream (402), the encoded video data (404) (or the encoded video bitstream (404)) is depicted as a thin line to emphasize the lower data volume of the encoded video data (404) (or the encoded video bitstream (404)), which can be stored on a streaming server (405) for future use. One or more streaming client subsystems, such as Figure 4Client subsystems (406) and (408) in the system can access a streaming server (405) to retrieve copies (407) and (409) of encoded video data (404). Client subsystem (406) may include, for example, a video decoder (510) in an electronic device (430). The video decoder (410) decodes the incoming copy (407) of the encoded video data and produces an output video picture stream (411) that can be displayed on a display (412) (e.g., a screen) or another presentation device (not depicted). In some streaming systems, the encoded video data (404), video data (407), and video data (409) (e.g., video streams) may be encoded according to certain video coding / compression standards. Implementations of these standards include ITU-T H.265. In this example, the video coding standard under development is informally referred to as Versatile Video Coding (VVC), and this disclosure can be used in the context of the VVC standard.
[0072] 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 also include a video encoder (not shown).
[0073] Figure 5 This is a block diagram of a video decoder (510) according to an embodiment of the present disclosure. The video decoder (510) may be disposed in an electronic device (530). The electronic device (530) may include a receiver (531) (e.g., receiving circuitry). The video decoder (510) may be used in place of Figure 4 The example video decoder (410).
[0074] The receiver (531) may receive one or more encoded video sequences to be decoded by the video decoder (510); in the same or another embodiment, one encoded video sequence is received at a time, wherein the decoding of each encoded video sequence is independent of the other encoded video sequences. The encoded video sequences may be received from a channel (501), which may be a hardware / software link to a storage device storing the encoded video data. The receiver (531) may receive encoded video data as well as other data, such as encoded audio data and / or auxiliary data streams that may be forwarded to their respective user entities (not indicated). The receiver (531) may separate the encoded video sequences from other data. To prevent network jitter, a buffer memory (515) may be coupled between the receiver (531) and the entropy decoder / parser (520) (hereinafter referred to as "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 indicated). In other cases, an external buffer memory (not shown) may be provided for the video decoder (510) to prevent network jitter, for example, and another buffer memory (515) may be configured internally for, for example, handling broadcast timing. When the receiver (531) receives data from a store / forward device with sufficient bandwidth and controllability or from an isochronous synchronization network, the buffer memory (515) may not be necessary, or it may be made smaller. Of course, for use on packet networks such as the Internet, a buffer memory (515) may also be required; this buffer memory may be relatively large and have an adaptive size, and may be at least partially implemented in the operating system or a similar component (not shown) external to the video decoder (510).
[0075] The video decoder (510) may include a parser (520) to reconstruct symbols (521) from the encoded video sequence. These symbols may include information for managing the operation of the video decoder (510) and potential information for controlling a display device (512) (e.g., a display screen), which is not part of the electronic device (530) but may be coupled to it, such as... Figure 5As shown in the diagram. The control information for the display device may be a parameter set fragment (not shown) of Supplemental Enhancement Information (SEI message) or Video Usability Information (VUI). The parser (520) may parse / decode the received encoded video sequence. The encoding of the encoded video sequence may be based on video coding techniques or standards and may follow various principles, including variable-length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (520) may extract a subgroup parameter set of at least one subgroup of pixels in the subgroup of pixels for use in the video decoder based on at least one parameter corresponding to a group. The subgroup may include a Group of Pictures (GOP), a picture, a tile, a slice, a macroblock, a Coding Unit (CU), a block, a Transform Unit (TU), a Prediction Unit (PU), etc. The parser (520) can also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.
[0076] The parser (520) can perform entropy decoding / parsing operations on the video sequence received from the buffer memory (515) to create symbols (521).
[0077] Depending on the type of encoded video frames or a subset of encoded video frames (e.g., inter-frame and intra-frame frames, inter-frame and intra-frame blocks) and other factors, the reconstruction of the symbol (521) may involve multiple different units. Which units are involved and how they are involved can be controlled by the subgroup control information parsed from the encoded video sequence by the parser (520). For brevity, the flow of such subgroup control information between the parser (520) and the various units described below is not described.
[0078] In addition to the functional blocks already mentioned, the video decoder (510) can be conceptually subdivided into several functional units as described below. In a practical implementation operating under commercial constraints, many of these units interact closely with each other and can be integrated with one another. However, for the purposes of describing the disclosed subject matter, it is appropriate to conceptually subdivide it into the functional units described below.
[0079] The first unit is the scaler / inverse transform unit (551). The scaler / inverse transform unit (551) receives quantization transform coefficients as symbols (521) and control information from the parser (520), including the transform method used, block size, quantization factor, quantization scaling matrix, etc. The scaler / inverse transform unit (551) can output a block containing sample values, which can be input into the aggregator (555).
[0080] In some cases, the output samples of the scaler / inverse transform unit (551) may belong to intra-coded blocks; that is, blocks that do not use predictive information from previously reconstructed images but can use predictive information from previously reconstructed portions of the current image. Such predictive information may be provided by the intra-picture prediction unit (552). In some cases, the intra-picture prediction unit (552) uses reconstructed information extracted from the current picture buffer (558) to generate surrounding blocks of the same size and shape as the block being reconstructed. For example, the current picture buffer (558) buffers partially reconstructed and / or fully reconstructed current images. In some cases, the aggregator (555) adds the predictive information generated by the intra-picture prediction unit (552) to the output sample information provided by the scaler / inverse transform unit (551) based on each sample.
[0081] In other cases, the output samples of the scaler / inverse transform unit (551) may belong to inter-frame coding and latent motion compensation blocks. In this case, the motion compensation prediction unit (553) can access the reference image memory (557) to extract samples for prediction. After motion compensation of the extracted samples according to the symbols (521), these samples can be added by the aggregator (555) to the output of the scaler / inverse transform unit (551) (referred to as residual samples or residual signals in this case) to generate output sample information. The motion compensation prediction unit (553) can obtain the predicted samples from the address in the reference image memory (557) under motion vector control, and the motion vector is available to the motion compensation prediction unit (553) in the form of the symbols (521), which, for example, include X, Y and reference image components. Motion compensation may also include interpolation of sample values extracted from the reference image memory (557) when using subsample precise motion vectors, motion vector prediction mechanisms, etc.
[0082] The output samples of the aggregator (555) can be employed by various loop filtering techniques in the loop filter unit (556). The video compression technique may include an in-loop filter technique controlled by parameters included in the encoded video sequence (also called the encoded video stream), and these parameters can be used as symbols (521) from the parser (520) in the loop filter unit (556). However, the video compression technique may also respond to metadata obtained during the decoding of a previous (in decoding order) portion of the encoded picture or encoded video sequence, and to previously reconstructed and loop-filtered sample values.
[0083] The output of the loop filter unit (556) can be a sample stream, which can be output to a display device (512) and stored in a reference image memory (557) for subsequent inter-frame image prediction.
[0084] Once fully reconstructed, some of the encoded images can be used as reference images for future predictions. For example, once the encoded images corresponding to the current image have been fully reconstructed and the encoded images (by, for example, the parser (520)) are identified as reference images, the current image buffer (558) can become part of the reference image memory (557), and a new current image buffer can be reallocated before the reconstruction of subsequent encoded images begins.
[0085] The video decoder (510) can perform decoding operations according to a predetermined video compression technique, such as that specified in the ITU-T H.265 standard. The encoded video sequence may conform to the syntax specified by the video compression technique or standard in the sense that the encoded video sequence follows the syntax of the video compression technique or standard and the configuration file recorded in the video compression technique or standard. Specifically, the configuration file may select certain tools from all available tools in the video compression technique or standard as the only tools available under said configuration file. For compliance, the complexity of the encoded video sequence is also required to be within the range defined by the hierarchy of the video compression technique or standard. In some cases, the hierarchy limits the maximum image size, maximum frame rate, maximum reconstruction sampling rate (measured in megasamples per second, for example), maximum reference image size, etc. In some cases, the limitations set by the hierarchy can be further limited by the Hypothetical Reference Decoder (HRD) specification and the metadata managed by the HRD buffer, which is represented by signals in the encoded video sequence.
[0086] In this implementation, the receiver (531) may receive additional (redundant) data along with the encoded video. The additional data may be a portion of the encoded video sequence. The additional data may be used by the video decoder (510) to properly decode the data and / or more accurately reconstruct the original video data. The additional data may take the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant images, forward error correction codes, etc.
[0087] Figure 6 This is a block diagram of a video encoder (603) according to an embodiment of the present disclosure. The video encoder (603) is disposed in an electronic device (620). The electronic device (620) includes a transmitter (640) (e.g., a transmission circuit). The video encoder (603) can be used in place of Figure 4 The example video encoder (403).
[0088] The video encoder (603) can obtain data from the video source (601) (not...). Figure 6 In one example, the electronic device (620) is part of the electronic device (620) that receives video samples, the video source being capable of capturing video images that will be encoded by the video encoder (603). In another example, the video source (601) is part of the electronic device (620).
[0089] A video source (601) can provide a sequence of source video samples encoded by a 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 color space (e.g., BT.601 YCrCb, RGB, etc.), and any suitable sampling structure (e.g., YCrCb 4:2:0, YCrCb 4:4:4). In a media service system, the video source (601) can be a storage device storing previously prepared video. In a video conferencing system, the video source (601) can be a camera capturing local image information as a video sequence. Video data can be provided as multiple individual pictures, which are given motion when viewed in sequence. The pictures themselves can be constructed as spatial pixel arrays, where each pixel can include one or more samples depending on the sampling structure, color space, etc., used. Those skilled in the art can easily understand the relationship between pixels and samples. The following focuses on describing samples.
[0090] According to the implementation, 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 constraints required by the application. Implementing an appropriate encoding rate is a function of the controller (650). In some implementations, the controller (650) controls and is functionally coupled to other functional units described below. For simplicity, coupling is not shown in the figures. Parameters set by the controller (650) may include rate control related parameters (image skipping, quantizer, λ value of rate-distortion optimization techniques, etc.), image size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (650) can be used with other suitable functions related to the video encoder (603) optimized for a particular system design.
[0091] In some implementations, the video encoder (603) operates within an encoding loop. As a simplified description, in this example, the encoding loop may include a source encoder (630) (e.g., responsible for creating symbols, such as a symbol stream, based on the input image to be encoded and a reference image) and a (local) decoder (633) embedded within the video encoder (603). The decoder (633) reconstructs the symbols to create sample data in a manner similar to how the (remote) decoder creates sample data (because in the video compression techniques considered in this disclosure, any compression between the symbols and the encoded video stream is lossless). The reconstructed sample stream (sample data) is input to a reference image memory (634). Since decoding of the symbol stream produces bit-precise results independent of the decoder's location (local or remote), the contents of the reference image memory (634) are also bit-precisely corresponding between the local encoder and the remote encoder. In other words, the reference image samples "seen" by the encoder's prediction section are exactly the same sample values that the decoder will "see" when using the prediction during decoding. This fundamental principle of reference image synchronization (and the drift that occurs when synchronization cannot be maintained, for example, due to channel errors) is also used in some related technologies.
[0092] The operation of the “local” decoder (633) can be combined with, for example, the above-mentioned Figure 5 The video decoder (510) is described in detail as the same as the "remote" decoder. However, a further brief reference is provided. Figure 5 When symbols are available and the entropy encoder (645) and parser (520) are able to encode / decode the symbols into an encoded video sequence without loss, the entropy decoding portion of the video decoder (510), including the buffer (515) and parser (520), may not be fully implemented in the local decoder (633).
[0093] It can be observed that any decoder technique other than parsing / entropy decoding, which exists in the decoder, must also exist in the corresponding encoder in essentially the same functional form. For this reason, this disclosure focuses on decoder operation. The description of encoder techniques can be simplified, as encoder techniques are inverses of the fully described decoder techniques. More detailed descriptions are only required in certain areas, and are provided below.
[0094] During operation, in some examples, the source encoder (630) may perform motion-compensated predictive coding. The motion-compensated predictive coding predictively encodes the input image, referencing one or more previously encoded images designated as "reference images" from the video sequence. In this manner, the encoding engine (632) encodes the differences between pixel blocks of the input image and pixel blocks of the reference image, which may be selected as a predictive reference for the input image.
[0095] The local video decoder (633) can decode encoded video data of a picture that can be designated as a reference picture, based on symbols created by the source encoder (630). The operation of the encoding engine (632) can be lossy. When the encoded video data can be decoded by the video decoder (633), Figure 6 When the source video sequence (not shown) is decoded, the reconstructed video sequence can typically be a copy of the source video sequence with some errors. The local video decoder (633) replicates the decoding process, which can be performed by the video decoder on the reference image, and allows the reconstructed reference image to be stored in a reference image cache (634). In this way, the video encoder (603) can locally store a copy of the reconstructed reference image that shares the same content (no transmission errors) as the reconstructed reference image to be obtained by the remote video decoder.
[0096] The predictor (635) can perform a prediction search against the encoding engine (632). That is, for a new image to be encoded, the predictor (635) can search in the reference image memory (634) for sample data (as candidate reference pixel blocks) or certain metadata, such as reference image motion vectors, block shapes, etc., that can serve as appropriate prediction references for the new image. The predictor (635) can operate pixel-by-pixel based on the sample blocks to find suitable prediction references. In some cases, based on the search results obtained by the predictor (635), it can be determined that the input image may have prediction references obtained from multiple reference images stored in the reference image memory (634).
[0097] The controller (650) can manage the encoding operations of the source encoder (630), including, for example, setting parameters and subgroup parameters for encoding video data.
[0098] The outputs of all the above-mentioned functional units can be entropy encoded in the entropy encoder (645). The entropy encoder (645) performs lossless compression on the symbols generated by the various functional units according to techniques such as Huffman coding, variable length coding, arithmetic coding, etc., thereby converting the symbols into an encoded video sequence.
[0099] The transmitter (640) can buffer the encoded video sequence created by the entropy encoder (645) in preparation for transmission via a communication channel (660), which may be a hardware / software link to a storage device that will store the encoded video data. The transmitter (640) can combine the encoded video data from the video encoder (603) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (source not shown).
[0100] The controller (650) manages the operation of the video encoder (603). During encoding, the controller (650) can assign a specific encoded image type to each encoded image, but this may affect the encoding techniques applicable to the corresponding images. For example, images can typically be assigned to any of the following image types: An intra-frame picture (I-picture) is a picture that can be encoded and decoded without using any other pictures in the sequence as a prediction source. Some video codecs allow different types of intra-frame pictures, including, for example, Independent Decoder Refresh (IDR) pictures. Those skilled in the art are familiar with variations of I-pictures and their corresponding applications and characteristics.
[0101] A predictive image (P-image) can be an image that can be encoded and decoded using intra-frame prediction or inter-frame prediction, which uses at most one motion vector and reference index to predict sample values for each block.
[0102] A bidirectional predictive image (B-image) can be an image that can be encoded and decoded using intra-frame prediction or inter-frame prediction, which uses at most two motion vectors and a reference index to predict sample values for each block. Similarly, multiple predictive images can use more than two reference images and associated metadata to reconstruct a single block.
[0103] Source images are typically spatially subdivided into multiple sample blocks (e.g., blocks of 4×4, 8×8, 4×8, or 16×16 samples) and encoded block by block. These blocks can be predictively encoded with reference to other (already encoded) blocks, which are determined based on the encoding assignment of the corresponding images applied to the blocks. For example, blocks of an I-image can be non-predictively encoded, or the blocks can be predictively encoded (spatial prediction or intra-frame prediction) with reference to already encoded blocks of the same image. Pixel blocks of a P-image can be predictively encoded with reference to a previously encoded reference image via spatial prediction or temporal prediction. Blocks of a B-image can be predictively encoded with reference to one or two previously encoded reference images via spatial prediction or temporal prediction.
[0104] The video encoder (603) can perform encoding operations according to a predetermined video coding technique or standard, such as ITU-T H.265 Recommendation. In operation, the video encoder (603) can perform various compression operations, including predictive coding operations utilizing temporal and spatial redundancy in the input video sequence. Therefore, the encoded video data can conform to the syntax specified by the video coding technique or standard used.
[0105] In one implementation, the transmitter (640) may transmit additional data while transmitting encoded video. The source encoder (630) may include such data as part of the encoded video sequence. The additional data may include other forms of redundant data such as temporal / spatial / SNR enhancement layers, redundant images and slices, SEI messages, VUI parameter set fragments, etc.
[0106] The captured video can be presented as multiple source images (video images) in a time-series format. Intra-frame image prediction (often simplified to intra-frame prediction) utilizes spatial correlations within a given image, while inter-frame image prediction utilizes (temporal or other) correlations between images. In the example, a specific image being encoded / decoded is segmented into blocks, and this specific image being encoded / decoded is called the current image. When a block in the current image resembles a reference block in a previously encoded and still buffered reference image in the video, the block in the current image can be encoded using a vector called a motion vector. This motion vector points to the reference block in the reference image, and when using multiple reference images, the motion vector may have a third dimension that identifies the reference image.
[0107] In some implementations, bidirectional prediction techniques can be used for inter-frame image prediction. According to bidirectional prediction, two reference images are used, such as a first reference image and a second reference image, both preceding the current image in the video in decoding order (but possibly past and future in display order). A block in the current image can be encoded using a first motion vector pointing to a first reference block in the first reference image and a second motion vector pointing to a second reference block in the second reference image. Specifically, the block can be predicted using a combination of the first and second reference blocks.
[0108] In addition, merging mode techniques can be used in inter-frame image prediction to improve coding efficiency.
[0109] According to some embodiments of this disclosure, predictions such as inter-frame image prediction and intra-frame image prediction are performed on a block-by-block basis. For example, according to the HEVC standard, images in a video image sequence are segmented into coding tree units (CTUs) for compression. The CTUs in the images have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. Generally, a CTU comprises three coding tree blocks (CTBs): one luma CTB and two chroma CTBs. Furthermore, each CTU can be split into one or more coding units (CUs) using a quadtree. For example, a 64×64 pixel CTU can be split into one 64×64 pixel CU, or four 32×32 pixel CUs, or sixteen 16×16 pixel CUs. In the example, each CU is analyzed to determine the prediction type used for the CU, such as inter-frame prediction or intra-frame prediction. Furthermore, depending on temporal and / or spatial predictability, the CU is divided into one or more prediction units (PUs). Typically, each PU includes a luma prediction block (PB) and two chroma PBs. In implementations, prediction operations during encoding (encoding / decoding) are performed on a per-prediction-block basis. Taking a luma prediction block as an example, a prediction block includes a matrix of pixel values (e.g., luma values), such as 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, etc.
[0110] Figure 7 A diagram of a video encoder (703) according to another embodiment of the present disclosure is shown. The video encoder (703) is used to receive processing blocks (e.g., prediction blocks) of sample values within a current video image in a video image sequence, and to encode said processing blocks into an encoded image that is part of an encoded video sequence. In this example, the video encoder (703) is used instead of Figure 4The example video encoder (403).
[0111] In the HEVC example, the video encoder (703) receives a matrix of sample values for a processing block, such as an 8×8 sample prediction block. The video encoder (703) uses, for example, rate-distortion (RD) optimization to determine whether to use intra-frame mode, inter-frame mode, or bidirectional prediction mode to encode the processing block. When encoding the processing block in intra-frame mode, the video encoder (703) can use intra-frame prediction techniques to encode the processing block into an encoded picture; and when encoding the processing block in inter-frame mode or bidirectional prediction mode, the video encoder (703) can use inter-frame prediction or bidirectional prediction techniques to encode the processing block into an encoded picture, respectively. In some video coding techniques, the merging mode can be an inter-frame picture prediction sub-mode, in which motion vectors are derived from one or more motion vector prediction values without relying on encoded motion vector components outside the prediction values. In some other video coding techniques, motion vector components applicable to the subject block may exist. In the example, the video encoder (703) includes other components, such as a mode decision module (not shown) for determining the processing block mode.
[0112] exist Figure 7 In the example, the video encoder (703) includes, for example, Figure 6 The inter-frame encoder (730), intra-frame encoder (722), residual calculator (723), switch (726), residual encoder (724), general controller (721) and entropy encoder (725) are shown coupled together.
[0113] An inter-frame encoder (730) is configured to receive samples of the current block (e.g., the processing block), compare the block with one or more reference blocks in a reference image (e.g., blocks in previous and later images), generate inter-frame prediction information (e.g., redundancy descriptions based on inter-frame coding techniques, motion vectors, merging mode information), and compute 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 based on encoded video information.
[0114] The intra encoder (722) is used to receive samples of the current block (e.g., the processing block), in some cases compare the block with an encoded block in the same image, generate quantization coefficients after transformation, and in some cases also (e.g., based on intra prediction direction information of one or more intra coding techniques) generate intra prediction information. In the example, the intra encoder (722) also calculates intra prediction results (e.g., predicted blocks) based on the intra prediction information and a reference block in the same image.
[0115] A general controller (721) determines general control data and controls other components of the video encoder (703) based on the general control data. In an example, the general controller (721) determines the mode of a block and provides control signals to a switch (726) based on the mode. For example, when the mode is an intra-frame mode, the general controller (721) controls the switch (726) to select an intra-frame mode result for use by the residual calculator (723) and controls the entropy encoder (725) to select intra-frame prediction information and add the intra-frame prediction information to the bitstream; and when the mode is an inter-frame mode, the general controller (721) controls the switch (726) to select an inter-frame prediction result for use by the residual calculator (723) and controls the entropy encoder (725) to select inter-frame prediction information and add the inter-frame prediction information to the bitstream.
[0116] A residual calculator (723) is used to calculate the difference (residual data) between the received block and the prediction result selected from the intra encoder (722) or the inter encoder (730). A residual encoder (724) is used to operate on the residual data to encode the residual data to generate transform coefficients. In the example, the residual encoder (724) is used to transform the residual data from the time domain to the frequency domain and generate transform coefficients. The transform coefficients are then quantized to obtain quantized transform coefficients. In various embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is used to perform the inverse transform and generate decoded residual data. The decoded residual data can be used appropriately by the intra encoder (722) and the inter encoder (730). For example, the inter encoder (730) can generate a decoded block based on the decoded residual data and inter-frame prediction information, and the intra encoder (722) can generate a decoded block 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 may be buffered in a memory circuit (not shown) and used as a reference image.
[0117] An entropy encoder (725) is used to format the bitstream to produce encoded blocks. The entropy encoder (725) generates various information according to a suitable standard such as the HEVC standard. In the example, the entropy encoder (725) is used to obtain general control data, selected prediction information (e.g., intra-frame prediction information or inter-frame prediction information), residual information, and other suitable information in the bitstream. It should be noted that, according to the disclosed subject matter, residual information is not present when blocks are encoded in a merged sub-mode of inter-frame mode or bidirectional prediction mode.
[0118] Figure 8This is a diagram of a video decoder (810) according to another embodiment of the present disclosure. The video decoder (810) is used to receive an encoded image as part of an encoded video sequence and decode the encoded image to generate a reconstructed picture. In this example, the video decoder (810) is used instead of Figure 4 The example video decoder (410).
[0119] exist Figure 8 In the example, the video decoder (810) includes, for example, Figure 8 The entropy decoder (871), inter-frame decoder (880), residual decoder (873), reconstruction module (874) and intra-frame decoder (872) are shown coupled together.
[0120] An entropy decoder (871) can be used to reconstruct certain symbols from an encoded image, representing the syntax elements constituting the encoded image. Such symbols may include, for example, a mode used to encode the block (e.g., intra-frame mode, inter-frame mode, bidirectional prediction mode, a merged sub-mode of the latter two, or another sub-mode), prediction information (e.g., intra-frame prediction information or inter-frame prediction information) that can respectively identify certain samples or metadata used by the intra-frame decoder (872) or the inter-frame decoder (880) for prediction, residual information in the form of, for example, quantized transform coefficients, and so on. In the example, when the prediction mode is inter-frame or bidirectional prediction mode, inter-frame prediction information is provided to the inter-frame decoder (880); and when the prediction type is intra-frame prediction type, intra-frame prediction information is provided to the intra-frame decoder (872). Residual information may be provided to the residual decoder (873) via inverse quantization.
[0121] The inter-frame decoder (880) is used to receive inter-frame prediction information and generate inter-frame prediction results based on the inter-frame prediction information.
[0122] The intra-frame decoder (872) is used to receive intra-frame prediction information and generate prediction results based on the intra-frame prediction information.
[0123] The residual decoder (873) performs inverse quantization to extract the dequantized transform coefficients and processes the dequantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require some control information (to obtain the quantizer parameter QP), and this information may be provided by the entropy decoder (871) (the data path is not indicated because this is only low-level control information).
[0124] The reconstruction module (874) is used to combine the residual output by the residual decoder (873) with the prediction result (which may be output by the inter-frame prediction module or the intra-frame prediction module) in the spatial domain to form a reconstructed block, which may be a part of a reconstructed image, which in turn may be a part of a reconstructed video. It should be noted that other suitable operations, such as deblocking, may be performed to improve visual quality.
[0125] It should be noted that any suitable technology can be used to implement the video encoder (403), video encoder (603), and video encoder (703), as well as the video decoder (410), video decoder (510), and video decoder (810). In one embodiment, one or more integrated circuits can be used to implement the video encoder (403), video encoder (603), and video encoder (703), as well as the video decoder (410), video decoder (510), and video decoder (810). In another embodiment, one or more processors that execute software instructions can be used to implement the video encoder (403), video encoder (603), and video encoder (703), as well as the video decoder (410), video decoder (510), and video decoder (810).
[0126] This disclosure provides techniques for history-based vector prediction of intra-frame image blocks, strings using string copying modes, and the like.
[0127] Block-based compensation can be used for both inter-frame and intra-frame prediction. For inter-frame prediction, block-based compensation based on different images is called motion compensation. Block-based compensation can also be done, for example, in intra-frame prediction based on previously reconstructed regions within the same image. Block-based compensation from reconstructed regions within the same image is called intra-frame picture block compensation, current picture referencing (CPR), or intra-blockcopy (IBC). The displacement vector indicating the offset between the current block and the reference block (also called the prediction block) within the same image is called the block vector (BV), where the current block can be encoded / decoded based on the reference block. Unlike the motion vector in motion compensation, which can be any value (positive or negative in the x or y direction), the BV has constraints to ensure that the reference block is available and has been reconstructed. Additionally, in some examples, some reference regions are excluded as tile boundaries, slice boundaries, or wavefront trapezoidal shape boundaries for parallel processing considerations.
[0128] The encoding of block vectors can be explicit or implicit. In explicit mode, a signal indicates the BV difference between the block vector and its predictor. In implicit mode, the block vector is recovered from the predictor (called the block vector predictor) in a manner similar to that of motion vectors in merging mode, without using the BV difference. Explicit mode can be referred to as non-merging BV prediction mode. Implicit mode can be referred to as merging BV prediction mode.
[0129] In some implementations, the resolution of the block vector is limited to integer positions. In other systems, the block vector is allowed to point to decimal positions.
[0130] In some examples, block-level flags (such as the IBC flag) can be used to signal the use of intra-block copying at the block level. In implementations, the block-level flag is signaled when the current block is explicitly encoded. In some examples, a reference indexing method can be used to signal the use of intra-block copying at the block level. The current picture being decoded is then treated as a reference picture or a special reference picture. In an example, such a reference picture is placed at the end of the list of reference pictures. This particular reference picture is also managed together with other time reference pictures in a buffer such as a decoded picture buffer (DPB).
[0131] IBC mode can vary. In the example, IBC mode is considered a third mode, distinct from intra-prediction and inter-prediction modes. Therefore, BV prediction in implicit (or merge) mode and explicit mode is separate from regular inter-prediction mode. A separate merge candidate list can be defined for IBC mode, where the entries in the separate merge candidate list are BV. Similarly, in the example, the BV prediction candidate list in explicit IBC mode only includes BV. The general rule applied to both lists (i.e., the separate merge candidate list and the BV prediction candidate list) is that, in terms of candidate derivation processing, these lists can follow the same logic as the merge candidate list used in regular merge mode or the AMVP predictor list used in regular AMVP mode. For example, for IBC mode accessing five spatially adjacent locations (e.g., ... Figure 2 (A0, A1, and B0, B1, B2 in the model) For example, HEVC or VVC inter-frame merging modes, to derive a separate merging candidate list for IBC mode.
[0132] As described above, the bounding volume (BV) of the reconstructed current block in the image can have certain constraints, thus the reference block of the current block is within the search range. The search range refers to the portion of the image from which a reference block can be selected. For example, the search range can be within certain portions of the reconstructed area in the image. The size, position, shape, etc., of the search range can be restricted. Alternatively, the BV can be constrained. In the example, the BV is a two-dimensional vector including x and y components, and at least one of the x and y components can be constrained. Constraints can be specified for the BV, the search range, or a combination of BV and the search range. In various examples, when certain constraints are specified for the BV, the search range is also constrained accordingly. Similarly, when certain constraints are specified for the search range, the BV is also constrained accordingly.
[0133] Figure 9 An example of intra-frame block copying according to an embodiment of this disclosure is shown. The current image (900) is reconstructed during decoding. The current image (900) includes a reconstructed region (910) (gray area) and a region to be decoded (920) (white area). The current block (930) is reconstructed by the decoder. The current block (930) can be reconstructed based on a reference block (940) in the reconstructed region (910). The positional offset between the reference block (940) and the current block (930) is called the block vector (950) (or BV (950)). Figure 9 In the example, the search range (960) is within the reconstructed region (910), the reference block (940) is within the search range (960), and the block vector (950) is constrained to point to the reference block (940) within the search range (960).
[0134] Various constraints can be applied to the BV and / or search range. In this implementation, the search range of the current block being reconstructed in the current CTB is limited to the current CTB.
[0135] In this implementation, the effective memory requirement for storing reference samples to be used in intra-block copying is one CTB size. In the example, the CTB size is 128×128 samples. The current CTB includes the current region being reconstructed. The current region is 64×64 samples in size. Since the reference memory can also store reconstructed samples in the current region, when the reference memory size is equal to the 128×128 sample CTB size, the reference memory can store an area of three more 64×64 samples. Therefore, the search range can include a portion of the previously reconstructed CTB, while the total memory requirement for storing reference samples remains unchanged (e.g., one CTB size of 128×128 samples or a total of four 64×64 reference samples). In the example, the previously reconstructed CTB is the left neighbor of the current CTB, such as... Figure 10 As shown.
[0136] Figure 10 An example of intra-block copying according to an embodiment of the present disclosure is shown. The current frame (1001) includes the current CTB (1015) being reconstructed and the previously reconstructed CTB (1010) which is the left neighbor of the current CTB (1015). The CTB in the current frame (1001) has a CTB size of, for example, 128 × 128 samples and a CTB width of, for example, 128 samples. The current CTB (1015) includes four regions (1016)-(1019), where the current region (1016) is being reconstructed. The current region (1016) includes multiple coded blocks (1021)-(1029). Similarly, the previously reconstructed CTB (1010) includes four regions (1011)-(1014). The encoding blocks (1021)-(1025) have been reconstructed, the current block (1026) is being reconstructed, and the encoding blocks (1026)-(1027) and regions (1017)-(1019) are to be reconstructed.
[0137] The current region (1016) has a juxtaposed region (i.e., region (1011) in the previously reconstructed CTB (1010)). The relative position of the juxtaposed region (1011) with respect to the previously reconstructed CTB (1010) can be the same as the relative position of the current region (1016) with respect to the current CTB (1015). Figure 10 In the example shown, the current region (1016) is the top-left region in the current CTB (1015), therefore, the juxtaposed region (1011) is also the top-left region in the previously reconstructed CTB (1010). Since the position of the previously reconstructed CTB (1010) is offset by the CTB width from the position of the current CTB (1015), the position of the juxtaposed region (1011) is offset by the CTB width from the position of the current region (1016).
[0138] In this implementation, the juxtaposed region of the current region (1016) is in the previously reconstructed CTB, wherein the position of the previously reconstructed CTB is offset from the position of the current CTB (1015) by one or more CTB widths. Therefore, the position of the juxtaposed region is also offset from the position of the current region (1016) by a corresponding one or more CTB widths. The position of the juxtaposed region can be shifted to the left, up, etc., from the current region (1016).
[0139] As mentioned above, the search range of the current block (1026) is limited by the CTB size. Figure 10In the example, the search range may include regions (1012)-(1014) in the previously reconstructed CTB (1010) and already reconstructed portions of the current region (1016), such as coded blocks (1021)-(1025). The search range further excludes juxtaposed regions (1011), ensuring that the size of the search range is within the CTB size. (See reference...) Figure 10 The reference block (1091) is located in region (1014) of the previously reconstructed CTB (1010). The block vector (1010) indicates the offset between the current block (1026) and the corresponding reference block (1091). The reference block (1091) is within the search range.
[0140] Figure 10 The example shown can be appropriately applied to other scenarios where the current region is located at another position within the current CTB (1015). In the example, when the current block is in region (1017), the juxtaposed region of the current block is region (1012). Therefore, the search range can include regions (1013)-(1014), region (1016), and the reconstructed portion of region (1017). The search range further excludes region (1011) and the juxtaposed region (1012), such that the size of the search range is within the CTB size. In the example, when the current block is in region (1018), the juxtaposed region of the current block is region (1013). Therefore, the search range can include regions (1014), regions (1016)-(1017), and the reconstructed portion of region (1018). The search range further excludes regions (1011)-(1012) and the juxtaposed region (1013), such that the size of the search range is within the CTB size. In the example, when the current block is in region (1019), the juxtaposed region of the current block is region (1014). Therefore, the search range can include regions (1016)-(1018) as well as the reconstructed portion in region (1019). The search range further excludes the previously reconstructed CTB (1010), such that the size of the search range is within the size of the CTB.
[0141] In the above description, the reference block can be in the previously reconstructed CTB (1010) or the current CTB (1015).
[0142] In this implementation, the search range can be specified as follows. In the example, the current image is a luminance image and the current CTB is a luminance CTB that includes multiple luminance samples, and BV(mvL) satisfies the following constraints for bitstream consistency. In the example, BV(mvL) has a fractional resolution (e.g., 1 / 16 pixel resolution).
[0143] The constraint includes the first condition: the reference block of the current block has been reconstructed. When the reference block has a rectangular shape, an adjacent block availability check (or a reference block availability check) can be implemented to check whether the top-left and bottom-right samples of the reference block have been reconstructed. The reference block is determined to be reconstructed when both the top-left and bottom-right samples of the reference block have been reconstructed.
[0144] For example, when the derivation process for reference block availability is invoked with the position (xCurr, yCurr) of the top-left sample of the current block set to (xCb, yCb) and the position (xCb+(mvL[0]>>4), yCb+(mvL[1]>>4)) of the top-left sample of the reference block as input, the output is TRUE when the top-left sample of the reference block is reconstructed, where the block vector mvL is a two-dimensional vector with x-component mvL[0] and y-component mvL[1]. When BV(mvL) has a fractional resolution (e.g., 1 / 16 pixel resolution), the x-component mvL[0] and y-component mvL[1] are shifted to have an integer resolution, as shown by mvL[0]>>4 and mvL[1]>>4 respectively.
[0145] Similarly, when the block availability derivation process is called with the position (xCurr, yCurr) of the top-left sample of the current block set to (xCb, yCb) and the position (xCb + (mvL[0]>>4) + cbWidth-1, yCb + (mvL[1]>>4) + cbHeight-1) of the bottom-right sample of the reference block as input, the output is TRUE when the bottom-right sample of the reference block is reconstructed. The parameters cbWidth and cbHeight represent the width and height of the reference block.
[0146] The constraint may also include at least one of the following second conditions: 1) (mvL[0]>>4)+cbWidth is less than or equal to 0, which indicates that the reference block is to the left of the current block and does not overlap with the current block; 2) (mvL[1]>>4)+cbHeight is less than or equal to 0, which indicates that the reference block is above the current block and does not overlap with the current block.
[0147] Constraints may also include the block vector mvL satisfying the following third condition:
[0148] (yCb+(mvL[1]>>4))>>CtbLog2SizeY=yCb>>CtbLog2SizeY (1)
[0149] (yCb+(mvL[1]>>4+cbHeight-1)>>CtbLog2SizeY=yCb>>CtbLog2Size (2)
[0150] (xCb+(mvL[0]>>4))>>CtbLog2SizeY>=(xCb>>CtbLog2SizeY)-1 (3)
[0151] (xCb+(mvL[0]>>4)+cbWidth-1)>>CtbLog2SizeY<=(xCb>>CtbLog2SizeY) (4)
[0152] Wherein, the parameter CtbLog2SizeY represents the CTB width in log2 form. For example, when the CTB width is 128 samples, CtbLog2SizeY is 7. Equations (1)-(2) specify that the CTB including the reference block is in the same CTB row as the current CTB (e.g., when the reference block is in the previously reconstructed CTB (1010), the previously reconstructed CTB (1010) is in the same row as the current CTB (1015). Equations (3)-(4) specify that the CTB including the reference block is either in the left CTB column of the current CTB or in the same CTB column as the current CTB. Similar to the reference Figure 10 The description of the process, the third condition described by equations (1)-(4) specifies that the CTB including the reference block is either the current CTB, such as the current CTB (1015), or the left neighbor of the current CTB, such as the previously reconstructed CTB (1010).
[0153] The constraint can also include a fourth condition: when the reference block is among the left neighbors of the current CTB, the juxtaposed region of the reference block is not reconstructed (i.e., no samples are reconstructed within the juxtaposed region). Furthermore, the juxtaposed region of the reference block is within the current CTB. Figure 10 In the example, the juxtaposed region of the reference block (1091) is the region (1019) offset from the region (1014) where the reference block (1091) is located by the CTB width, and the region (1019) has not yet been reconstructed. Therefore, the block vector (1020) and the reference block (1091) satisfy the fourth condition mentioned above.
[0154] In the example, the fourth condition can be specified as follows: when (xCb+(mvL[0]>>4))>>CtbLog2SizeY equals (xCb>>CtbLog2SizeY)-1, the export processing for reference block availability is invoked with the current block's position (xCurr, yCurr) set to (xCb, yCb) and the positions (((xCb+(mvL[0]>>4)+CtbSizeY)>>(CtbLog2SizeY-1)))<<(CtbLog2SizeY-1) and ((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1)) as input. The output is false (FALSE), indicating that the juxtaposed region has not been reconstructed, such as Figure 10 As shown.
[0155] Constraints on the search range and / or block vector can include suitable combinations of the first, second, third, and fourth conditions described above. In the example, the constraints include the first, second, third, and fourth conditions, such as... Figure 10 As shown. In the example, the first, second, third, and / or fourth conditions can be modified, and the constraints include the modified first, second, third, and / or fourth conditions.
[0156] According to the fourth condition, when one of the coding blocks (1022)-(1029) is the current block, the reference block cannot be in region (1011). Therefore, the search range of one of the coding blocks (1022)-(1029) excludes region (1011). The reason for excluding region (1011) is as follows: if the reference block is in region (1011), then the juxtaposition region of the reference block is region (1016). However, at least the sample (1021) in the coding block has been reconstructed, thus violating the fourth condition. On the other hand, for the coding block that must be reconstructed first in the current region, for example... Figure 11 The fourth condition does not prevent the reference block from being in region (1111) of the coded block (1121) in the middle region (1116) because the juxtaposed region (1116) of the reference block has not yet been reconstructed.
[0157] Figure 11An example of intra-block copying according to an embodiment of the present disclosure is shown. The current frame (1101) includes the current CTB (1115) being reconstructed and the previously reconstructed CTB (1110) which is the left neighbor of the current CTB (1115). The CTB in the current frame (1101) has a CTB size and a CTB width. The current CTB (1115) includes four regions (1116)-(1119), where the current region (1116) is being reconstructed. The current region (1116) includes multiple coded blocks (1121)-(1129). Similarly, the previously reconstructed CTB (1110) includes four regions (1111)-(1114). In the current region (1116), the current block (1121) being reconstructed is reconstructed first, and the coded blocks (1122)-(1129) are reconstructed. In the example, the CTB size is 128×128 samples, and each region in regions (1111)-(1114) and (1116)-(1119) has 64×64 samples. The reference memory size is equal to the CTB size and is 128×128 samples; therefore, when limited by the reference memory size, the search range includes the three regions and a portion of an additional region.
[0158] Reference Figure 10 Similarly, as described above, the current region (1116) has a juxtaposed region (i.e., region (1111) in the previously reconstructed CTB (1110)). According to the fourth condition above, the reference block of the current block (1121) can be in region (1111), therefore the search range can include regions (1111)-(1114). For example, when the reference block is in region (1111), the juxtaposed region of the reference block is region (1116), where samples in region (1116) were not reconstructed (1121) before the current block (1116) was reconstructed. However, as the reference... Figure 10 As described in the fourth condition, for example, after reconstructing the coded block (1121), the region (1111) is no longer available to be included in the search range used to reconstruct the coded block (1122). Therefore, strict synchronization and timing control of the reference memory buffer will be used, and this strict synchronization and timing control may be challenging.
[0159] According to some implementations, when the current block is to be reconstructed first in the current region of the current CTB, the search range can exclude juxtaposed regions of the current region located in a previously reconstructed CTB, wherein the current CTB and the previously reconstructed CTB are in the same current image. A block vector can be determined such that a reference block is within the search range excluding juxtaposed regions in the previously reconstructed CTB. In some implementations, the search range includes coded blocks reconstructed in the decoding order after the juxtaposed regions and before the current block.
[0160] In the following description, the CTB size can vary, and the maximum CTB size is set to be the same as the reference memory size. In the example, the reference memory size or maximum CTB size is 128 × 128 samples. These descriptions may be adapted to other reference memory sizes or maximum CTB sizes.
[0161] In this implementation, the CTB size is equal to the reference memory size. The previously reconstructed CTB is the left neighbor of the current CTB, the position of the juxtaposed region is offset from the position of the current region by the CTB width, and the coded blocks within the search range are at least one of the following: the current CTB and the previously reconstructed CTB.
[0162] Figures 12A to 12D An example of intra-block copying according to an embodiment of this disclosure is shown. References Figures 12A to 12D The current image (1201) includes the current CTB (1215) being reconstructed and the previously reconstructed CTB (1210) which is the left neighbor of the current CTB (1215). The CTBs in the current image (1201) have CTB size and CTB width. The current CTB (1215) includes four regions (1216)-(1219). Similarly, the previously reconstructed CTB (1210) includes four regions (1211)-(1214). In the implementation, the CTB size is the maximum CTB size and is equal to the reference memory size. In the example, the CTB size and the reference memory size are 128×128 samples, so each of the regions (1211)-(1214) and (1216)-(1219) has a size of 64×64 samples.
[0163] exist Figures 12A to 12D In the example shown, the current CTB (1215) includes the upper left region, upper right region, lower left region, and lower right region corresponding to regions (1216)-(1219), respectively. The previously reconstructed CTB (1210) includes the upper left region, upper right region, lower left region, and lower right region corresponding to regions (1211)-(1214), respectively.
[0164] refer to Figure 12AThe current region (1216) is being reconstructed. The current region (1216) may include multiple coded blocks (1221)-(1229). The current region (1216) has a juxtaposed region in the previously reconstructed CTB (1210), namely region (1211). The search range of one of the coded blocks (1221)-(1229) to be reconstructed may exclude the juxtaposed region (1211). The search range may include regions (1212)-(1214) of the previously reconstructed CTB (1210) that are reconstructed after the juxtaposed region (1211) and before the current region (1216) in the decoding order.
[0165] refer to Figure 12A The position of the juxtaposed region (1211) is offset from the position of the current region (1216) by the CTB width, for example, 128 samples. For example, the position of the juxtaposed region (1211) is shifted to the left by 128 samples from the position of the current region (1216).
[0166] Refer again Figure 12A When the current region (1216) is the upper left region of the current CTB (1215), the juxtaposed region (1211) is the upper left region of the previously reconstructed CTB (1210), and the search region excludes the upper left region of the previously reconstructed CTB.
[0167] refer to Figure 12B The current region (1217) is being reconstructed. The current region (1217) may include multiple coding blocks (1241)-(1249). The current region (1217) has a juxtaposed region (i.e., region (1212) in the previously reconstructed CTB (1210)). The search range of one of the multiple coding blocks (1241)-(1249) can exclude the juxtaposed region (1212). The search range includes regions (1213)-(1214) of the previously reconstructed CTB (1210) and region (1216) in the current CTB (1215) that is reconstructed after the juxtaposed region (1212) and before the current region (1217). Due to the limitation of the reference memory size (i.e., one CTB size), the search range further excludes region (1211). Similarly, the position of the juxtaposed region (1212) is offset from the position of the current region (1217) by the CTB width, for example, 128 samples.
[0168] exist Figure 12B In the example, the current region (1217) is the upper right region of the current CTB (1215), the juxtaposed region (1212) is also the upper right region of the previously reconstructed CTB (1210), and the search region excludes the upper right region of the previously reconstructed CTB (1210).
[0169] refer to Figure 12CThe current region (1218) is being reconstructed. The current region (1218) may include multiple coding blocks (1261)-(1269). The current region (1218) has a juxtaposed region (i.e., region (1213)) in the previously reconstructed CTB (1210). The search range of one of the multiple coding blocks (1261)-(1269) can exclude the juxtaposed region (1213). The search range includes region (1214) of the previously reconstructed CTB (1210) and regions (1216)-(1217) in the current CTB (1215) that are reconstructed after the juxtaposed region (1213) and before the current region (1218). Similarly, due to the limitation of the reference memory size, the search range further excludes regions (1211)-(1212). The position of the juxtaposed region (1213) is offset from the position of the current region (1218) by the CTB width, for example, 128 samples. Figure 12C In the example, when the current region (1218) is the lower left region of the current CTB (1215), the juxtaposed region (1213) is also the lower left region of the previously reconstructed CTB (1210), and the search region excludes the lower left region of the previously reconstructed CTB (1210).
[0170] refer to Figure 12D The current region (1219) is being reconstructed. The current region (1219) may include multiple coded blocks (1281)-(1289). The current region (1219) has a juxtaposed region (i.e., region (1214)) in the previously reconstructed CTB (1210). The search range of one of the multiple coded blocks (1281)-(1289) can exclude the juxtaposed region (1214). The search range includes regions (1216)-(1218) in the current CTB (1215) reconstructed in the decoding order after the juxtaposed region (1214) and before the current region (1219). Due to the limitation of the reference memory size, the search range excludes regions (1211)-(1213), and therefore excludes the previously reconstructed CTB (1210). Similarly, the position of the juxtaposed region (1214) is offset from the position of the current region (1219) by the CTB width, for example, 128 samples. Figure 12D In the example, when the current region (1219) is the lower right region of the current CTB (1215), the juxtaposed region (1214) is also the lower right region of the previously reconstructed CTB (1210), and the search region excludes the lower right region of the previously reconstructed CTB (1210).
[0171] Return to reference Figure 2The MV associated with five surrounding samples (or locations) denoted as A0, A1, and B0, B1, B2 (202 to 206 respectively) can be referred to as spatial merge candidates. A candidate list (e.g., a merged candidate list) can be formed based on the spatial merge candidates. The candidate list can be formed according to location using any suitable order. In the example, the order could be A0, B0, B1, A1, and B2, where A0 is first and B2 is last. In the example, the order could be A1, B1, B0, A0, and B2, where A1 is first and B2 is last.
[0172] According to some implementations, motion information from previous encoded blocks used for the current block (e.g., coding block (CB) or current CU) can be stored in a history-based motion vector prediction (HMVP) buffer (e.g., a table) to provide motion vector prediction (MVP) candidates (also known as HMVP candidates) for the current block. The HMVP buffer can include one or more HMVP candidates and can be maintained during encoding / decoding processing. In the example, the HMVP candidates in the HMVP buffer correspond to the motion information of previous encoded blocks. The HMVP buffer can be used with any suitable encoder and / or decoder. HMVP candidates can be added to the merged candidate list after one or more spatial MVPs and TMVPs.
[0173] When a new CTU (or a new CTB) line is encountered, the HMVP buffer can be reset (e.g., cleared). When a non-sub-block inter-coded block exists, the associated motion information can be added as a new HMVP candidate to the last entry of the HMVP buffer.
[0174] In the example, such as in VTM3, the buffer size (denoted by S) of the HMVP buffer is set to 6, indicating that a maximum of 6 HMVP candidates can be added to the HMVP buffer. In some implementations, the HMVP buffer can operate according to a first-in-first-out (FIFO) rule, so that motion information (or HMVP candidates) stored in the HMVP buffer are removed from the HMVP buffer first, for example, when the HMVP buffer is full. When a new HMVP candidate is inserted into the HMVP buffer, a constrained FIFO rule can be used, where a redundancy check is first applied to determine if an identical or similar HMVP candidate is already in the HMVP buffer. If an identical or similar HMVP candidate is determined to be in the HMVP buffer, it can be removed from the HMVP buffer, and the remaining HMVP candidates can be shifted forward in the HMVP buffer.
[0175] HMVP candidates can be used for the merge candidate list construction process, for example, in a merge pattern. The most recently stored HMVP candidates in the HMVP buffer can be checked sequentially, and these HMVP candidates can be inserted into the merge candidate list after the TMVP candidates. Redundancy checks can be applied to the HMVP candidates with respect to spatial or temporal merge candidates in the merge candidate list. These descriptions can be appropriately adapted to the AMVP pattern to construct the AMVP candidate list.
[0176] To reduce the number of redundant check operations, the following simplification can be used.
[0177] (i) The number of HMVP candidates used to generate the merge candidate list can be set to (N<=4)?M:(8–N). N indicates the number of existing candidates in the merge candidate list, and M indicates the number of available HMVP candidates in the HMVP buffer. When the number of existing candidates (N) in the merge candidate list is less than or equal to 4, the number of HMVP candidates used to generate the merge candidate list is equal to M. Otherwise, the number of HMVP candidates used to generate the merge candidate list is equal to (8-N).
[0178] (ii) When the total number of available merge candidates reaches the maximum allowed merge candidates minus 1, the merge candidate list construction process from the HMVP buffer terminates.
[0179] When IBC mode operates as a mode separate from inter-frame prediction mode, simplified BV derivation processing of IBC mode can be used. A history-based block vector prediction buffer (called an HBVP buffer) can be used to perform BV prediction. The HBVP buffer can be used to store BV information (e.g., BV) of previous encoded blocks for the current block (e.g., CB or CU) in the current picture. In the example, the HBVP buffer is a history buffer separate from other buffers (e.g., the HMVP buffer). The HBVP buffer can be a table.
[0180] An HBVP buffer can provide BV predictor (BVP) candidates (also known as HBVP candidates) for the current block. An HBVP buffer (e.g., a table) can include one or more HBVP candidates and can be maintained during encoding / decoding processing. In the example, the HBVP candidates in the HBVP buffer correspond to the BV information of previously encoded blocks in the current picture. HBVP buffers can be used with any suitable encoder and / or decoder. HBVP candidates can be added to a merge candidate list configured for BV prediction after the BV of spatially adjacent blocks of the current block. The merge candidate list configured for BV prediction can be used to merge BV prediction modes and / or non-merge BV prediction modes.
[0181] When a new CTU (or a new CTB) line is encountered, the HBVP buffer can be reset (e.g., cleared).
[0182] In the example, such as in VVC, the HBVP buffer size is set to 6, indicating that a maximum of 6 HBVP candidates can be added to the HBVP buffer. In some implementations, the HBVP buffer can operate according to a FIFO rule, and therefore, for example, when the HBVP buffer is full, the BV information (or HBVP candidates) stored in the HBVP buffer first are removed from the HBVP buffer. When a new HBVP candidate is inserted into the HBVP buffer, a restricted FIFO rule can be used, where a redundancy check is first applied to determine if an identical or similar HBVP candidate exists in the HBVP buffer. If an identical or similar HBVP candidate is determined to be in the HBVP buffer, the identical or similar HBVP candidate can be removed from the HBVP buffer, and the remaining HBVP candidates can be shifted forward in the HBVP buffer.
[0183] HBVP candidates can be used for candidate list construction processing, such as merging BV prediction patterns. The most recently stored HBVP candidates in the HBVP buffer can be checked sequentially, and these HBVP candidates can be inserted into the merge candidate list after the spatial candidates. Redundancy checks can be applied to the HBVP candidates with respect to the spatial merge candidates in the merge candidate list.
[0184] In this implementation, an HBVP buffer is established to store one or more BV information entries from one or more previously encoded blocks encoded in IBC mode. The one or more BV information entries may include one or more BV entries from one or more previously encoded blocks encoded in IBC mode. Furthermore, each of the one or more BV information entries may include side information (or additional information), such as the block size, block position, etc., of each previously encoded block encoded in IBC mode.
[0185] In class-based and history-based block vector prediction (also known as CBVP), for the current block, one or more BV (Block Value) entries in the HBVP buffer that meet certain conditions can be classified into corresponding categories (also known as classes), thus forming a CBVP buffer. In the example, each BV entry in the HBVP buffer is used for, for example, a corresponding previously encoded block encoded in IBC mode. This BV entry for the previously encoded block can include BV, block size, block position, etc. The previously encoded block has a block width, block height, and block area. The block area can be the product of the block width and block height. In the example, the block size is represented by the block area. The block position of the previously encoded block can be represented by the top-left corner of the previously encoded block (e.g., the top-left corner of a 4×4 region) or the top-left sample.
[0186] Figure 13 An example of a spatial class for IBCBV prediction of a current block (e.g., CB, CU) (1310) according to an embodiment of this disclosure is shown. A left region (1302) may be located to the left of the current block (1310). BV information of a previous coded block with the corresponding block position in the left region (1302) may be referred to as a left candidate or left BV candidate. An upper region (1303) may be located above the current block (1310). BV information of a previous coded block with the corresponding block position in the upper region (1303) may be referred to as an upper candidate or upper BV candidate. A top-left region (1304) may be located to the upper left of the current block (1310). BV information of a previous coded block with the corresponding block position in the top-left region (1304) may be referred to as a top-left candidate or top-left BV candidate. A top-right region (1305) may be located to the upper right of the current block (1310). The BV information of the previous encoded block with the corresponding block position in the upper right region (1305) can be referred to as the upper right candidate or upper right BV candidate. The lower left region (1306) can be located to the lower left of the current block (1310). The BV information of the previous encoded block with the corresponding block position in the lower left region (1306) can be referred to as the lower left candidate or lower left BV candidate. Other types of space classes can also be defined and used in the CBVP buffer.
[0187] If the BV information of the previously encoded block meets the following conditions, the BV information can be classified into the corresponding category (or class).
[0188] (i) Class 0: Block size (e.g., block area) is greater than or equal to the threshold (e.g., 64 pixels).
[0189] (ii) Class 1: The occurrence count (or frequency) of the BV is greater than or equal to 2. The occurrence count of the BV can refer to the number of times the BV is used to predict previous coded blocks. When using pruning to form the CBVP buffer, when the BV is used multiple times to predict previous coded blocks, the BV can be stored in one entry (instead of multiple entries with the same BV). The occurrence count of the BV can be recorded.
[0190] (iii) Class 2: The block is located in the left region (1302), where a portion of the previously encoded block (e.g., the top left corner of a 4×4 region) is to the left of the current block (1310). The previously encoded block may be within the left region (1302). Alternatively, the previously encoded block may span multiple regions, including the left region (1302), where the block is located in the left region (1302).
[0191] (iv) Class 3: The block is located in the upper region (1303), where a portion of the previously encoded block (e.g., the top left corner of a 4×4 region) is above the current block (1310). The previously encoded block may be within the upper region (1303). Alternatively, the previously encoded block may span multiple regions, including the upper region (1303), where the block is located within the upper region (1303).
[0192] (v) Class 4: The block is located in the top-left region (1304), where a portion of the previously encoded block (e.g., the top-left corner of a 4×4 region) is located to the top left of the current block (1310). The previously encoded block may be within the top-left region (1304). Alternatively, the previously encoded block may span multiple regions, including the top-left region (1304), where the block is located within the top-left region (1304).
[0193] (vi) Class 5: The block is located in the upper right region (1305), where a portion of the previously encoded block (e.g., the upper left corner of a 4×4 region) is located to the upper right of the current block (1310). The previously encoded block may be within the upper right region (1305). Alternatively, the previously encoded block may span multiple regions, including the upper right region (1305), where the block is located within the upper right region (1305).
[0194] (vii) Class 6: The block location is in the lower left region (1306), where a portion of the encoded block (e.g., the upper left corner of a 4×4 region) is to the lower left of the current block (1310). The previous encoded block may be within the lower left region (1306). Alternatively, the previous encoded block may span multiple regions, including the lower left region (1306), where the block location is within the lower left region (1306).
[0195] For each category (or class), the BV of the most recently encoded block can be derived as a BVP candidate. A CBVP buffer can be constructed by appending BV predictors for each category in order from class 0 to class 6. The above description of CBVP can be appropriately adapted to include fewer or additional classes not described above. One or more of classes 0-6 can be modified. In the example, each entry in the HBVP buffer is classified into one of the seven classes 0-6. An index can be signaled to indicate which class 0-6 was selected. On the decoder side, the first entry in the selected class can be used to predict the BV of the current block.
[0196] Figure 14 An example of a string copy mode according to an embodiment of this disclosure is shown. The string copy mode may also be referred to as a string matching mode or an intra-frame string copy mode. The current image (1410) includes a reconstructed region (gray area) (1420) and a region being reconstructed (1421). The current block (1435) in region (1421) is being reconstructed. The current block (1435) may be a CB, CU, etc. The current block (1435) may include multiple strings (e.g., strings (1430) and (1431)). In the example, the current block (1435) is divided into multiple consecutive strings, one of which is followed by the next string along the scan order. The scan order can be any suitable scan order, such as a raster scan order, a transverse scan order, etc.
[0197] The reconstructed region (1420) can be used as a reference region to reconstruct strings (1430) and (1431).
[0198] For each of a plurality of strings, a string offset vector (called SV) and the length of the string (called string length) can be indicated by signals. SV (e.g., SV0) can be a displacement vector indicating the displacement between the string to be reconstructed (e.g., string (1430)) and a corresponding reference string (e.g., reference string (1400)) located in the already reconstructed reference region (1420). The reference string can be used to reconstruct the string to be reconstructed. Therefore, SV can indicate the position of the corresponding reference string in the reference region (1420). The string length can also indicate the length of the reference string. Figure 14The current block (1435) is an 8×8 CB containing 64 samples and is divided into two strings (e.g., strings (1430) and (1431)) using a raster scan sequence. String (1430) contains the first 29 samples of the current block (1435), and string (1431) contains the remaining 35 samples of the current block (1435). The reference string (1400) used to reconstruct string (1430) can be indicated by the corresponding string vector SV0, and the reference string (1401) used to reconstruct string (1431) can be indicated by the corresponding string vector SV1.
[0199] Typically, string size can refer to either the length of the string or the number of samples in the string. (See reference) Figure 14 String (1430) contains 29 samples, so the string size of string (1430) is 29. String (1431) contains 35 samples, so the string size of string (1431) is 35. String position (or string location) can be represented by the sample position of a sample in the string (e.g., the first sample in the decoding order).
[0200] The above description can be appropriately applied to reconstructing a current block comprising any suitable number of strings. Alternatively, in the example, when a sample in the current block has no matching sample in the reference region, an escaped sample is indicated by a signal, and the value of the escaped sample can be directly encoded without referencing the reconstructed sample in the reference region.
[0201] In this disclosure, vector prediction may include BV prediction in IBC mode and / or SV prediction in string copy mode. Vector prediction may include skip mode vector prediction, merge mode (or direct mode) vector prediction, and / or vector prediction using differential coding. In skip mode vector prediction and merge mode vector prediction, vectors (e.g., BV, SV) can be directly recovered from a predictor (or vector predictor, such as a BV predictor, an SV predictor) without using differential coding. For example, the merge mode vector prediction for BV prediction is a merged BV prediction mode, and BV can be equal to the BV predictor. Similarly, the merge mode vector prediction for SV prediction is a merged SV prediction mode, and SV can be equal to the SV predictor. Vector prediction using differential coding for BV prediction may be an explicit mode and / or a non-merged BV prediction mode.
[0202] According to various aspects of this disclosure, a history-based SV prediction buffer (referred to as an HSVP buffer) can be used to perform SV prediction. The HSVP buffer can be configured to store one or more previous SV information (e.g., SVs) of one or more previously encoded strings encoded in string copy mode for the current image. The HSVP buffer can be used to predict the current string in the current block of the current image. In the example, one or more previously encoded strings encoded in string copy mode are decoded before the current block. One or more previous SV information may include one or more previous SVs of one or more previously encoded strings. Furthermore, each of the one or more previous SV information may include previous side information (or additional information), such as the string size, string position, etc., of the corresponding previous encoded string. One or more previous SV information in the HSVP buffer may include SV prediction (SVP) candidates or HSVP candidates for the current string. The HSVP buffer (e.g., a table) can be maintained during encoding / decoding processing. The HSVP buffer can be used with any suitable encoder and / or decoder.
[0203] According to various aspects of this disclosure, the HSVP buffer can be a separate history buffer that stores one or more previous SV messages in a suitable order (e.g., decoding order, reverse decoding order, or a predefined order). Entries in the HSVP buffer (e.g., one or more previous SV messages) can be used to predict the current string to be reconstructed in string copy mode. In the example, the HSVP buffer is separate from other history buffers (e.g., HMVP buffer, HBVP buffer, etc.).
[0204] To determine whether to add a new entry (e.g., a new SV message) to the HSVP buffer, the new SV message can be compared with existing entries in the HSVP buffer (e.g., one or more previous SV messages). In the example, the new SV message can be compared with each existing entry in the HSVP buffer. When it is determined that the new SV message is unique, the new SV message can be added (e.g., stored) to the HSVP buffer. The uniqueness of the new SV message (e.g., whether the new SV message differs from existing entries in the HSVP) can be determined individually. The uniqueness of the new SV message can be determined based on the new SV of the new SV message and one or more previous SVs of one or more previous SV messages.
[0205] In the example, a new SV is determined to be unique or different from one or more previous SVs if the corresponding vector difference (or SV difference) between the new SV and each of the previous SVs satisfies a condition (e.g., the corresponding vector difference is greater than a threshold).
[0206] In the example, if the vector difference does not meet the condition (e.g., the vector difference is not greater than a threshold), the new side information (e.g., the new string size) of the new SV message is further compared with the previous side information of one or more previous SV messages. For example, the new string size is compared with each string size of one or more previous SV messages. If the string size difference between the new string size and each string size of one or more previous SV messages meets the size condition (e.g., the string size difference is greater than a size threshold), then the new string size is determined to be different from the string size of one or more previous SV messages. Therefore, the new SV message is determined to be different from one or more SV messages.
[0207] If a new SV message differs from every existing entry in the HSVP buffer, then the new SV message can be determined to be unique. Alternatively, to determine whether to add a new entry to the HSVP buffer, the new SV message can be compared with a subset of existing entries in the HSVP buffer (e.g., a subset of one or more previous SV messages), similar to the above. For example, the subset of existing entries includes the first N1 entries in the HSVP buffer, where N1 is a positive integer less than the number of entries in the HSVP buffer. When the new SV message is determined to be unique, it can be stored in the HSVP buffer as described above.
[0208] In some examples, when a new SV message is stored in the HSVP buffer, one of the existing entries in the HSVP buffer is removed.
[0209] When a new CTU (or a new CTB) line is encountered, the HSVP buffer can be reset (e.g., cleared).
[0210] Similar to CBVP, class-based history-based string vector prediction (CSVP) can be established to predict the current string. In CSVP, one or more previous SV messages in the HSVP buffer that meet certain conditions can be categorized into corresponding categories (or classes), thus forming a CSVP buffer. In the example, each previous SV message in the HSVP buffer is used for the previously encoded string decoded before the current block. A previous SV message used for a previously encoded string can include SV, string size, string position, etc.
[0211] Multiple categories or classes can be constructed, for example, based on one or more of the following: string size, SV occurrence count, string position, etc., similar to what is described above regarding the CBVP buffer. In the example, multiple categories are constructed based on one or more of the following: string size and SV occurrence count. An index can be used to point to the first entry in a particular class to select the SV predictor from multiple classes.
[0212] According to various aspects of this disclosure, if the previous SV information used for the previous encoded string meets the following conditions, the previous SV information can be classified into the appropriate category (or class).
[0213] (i) Class 0: String size is greater than or equal to the threshold.
[0214] (ii) Class 1: The occurrence count (or frequency) of the SV is greater than or equal to 2. The occurrence count of the SV refers to the number of times the SV is used to predict the previous encoded string. When using pruning to form the CSVP buffer, when the SV is used multiple times in predicting the previous encoded string, the SV can be stored in one entry (instead of multiple entries with the same SV). In the example, the occurrence of the SV is recorded.
[0215] The CSVP buffer can be constructed by appending SV predictors for each class in order from class 0 to class 6. As mentioned above, an index (e.g., a flag) can be used to point to the first entry in a particular class to select the SV predictor from multiple classes. In some examples, when an index is indicated by a signal, the SV predictor can be determined as the SV for the current string. Otherwise, when no index is indicated by a signal, the SV for the current string can be directly encoded.
[0216] Based on various aspects of this disclosure, the encoding information of the current block of the current image can be decoded. The encoding information may indicate that the encoding mode of the current block is one of the following modes: IBC mode and string copy mode.
[0217] A history buffer can be configured to store vector information of previously decoded sample units in the current image. In the example, previously decoded sample units include blocks previously decoded in IBC mode and / or strings previously decoded in string copy mode. Previously decoded sample units can be decoded before the current block. Vector information can be included as entries in the history buffer. Each of the vector information can include a vector (e.g., BV, SV) used to predict the corresponding sample unit in the previously decoded sample units. In some examples, each vector information also includes additional information (or edge information) of one of the previously decoded sample units, such as the unit size or the unit position of one of the previously decoded sample units. Each previously decoded sample unit can be a block (e.g., CB) or a string.
[0218] The current vector information for the current sample unit in the current block can be determined based on the encoding mode of the current block. In the example, the current vector information is determined based on the encoding mode of the current block and the history buffer. The current vector information may include the current vector used to predict the current sample unit. If the encoding mode of the current block is IBC mode, then the current vector is the current BV of the current block. If the encoding mode is string copy mode, then the current vector is the current SV of the current string in the current block. The current sample unit can be reconstructed based on the current vector information, including, for example, the current vector.
[0219] According to various aspects of this disclosure, the history buffer can be a joint buffer storing HBVP candidates of previous encoded blocks and HSVP candidates of previous encoded strings. HSVP candidates (e.g., one or more SVs) and HBVP candidates (e.g., one or more BVs) can be stored in the history buffer in a suitable order (e.g., decoding order, reverse decoding order, or a predefined order). Entries in the history buffer can be used to predict the current vector information of the current sample unit in the current block, such as the current SV in the case of string copy mode, or the current BV in the case of IBC mode.
[0220] In this implementation, the encoding mode of the current block is IBC mode, and the current sample unit is the current block. Therefore, the BV predictor candidate list for the current block can be determined at least based on the vector information in the history buffer, and the current BV can be determined based on the BV predictor candidate list, wherein the current vector information includes the current BV. The BV predictor candidate list may include BV and / or SV in the history buffer. The BV predictor candidate list may also include spatial candidates for the current block.
[0221] When predicting the current block using the merged BV prediction mode or skipped mode vector prediction, the current BV is predicted based on the BV predictor candidate list. For example, the current BV is one of the BV and SV in the history buffer. When predicting the current block using the non-merged BV prediction mode, the current BV is predicted based on the BV predictor candidate list and the vector difference between the current BV and the BV candidates in the BV predictor candidate list (e.g., one of the BV and BV in the history buffer).
[0222] In this implementation, the encoding mode of the current block is string copy mode. Therefore, the current sample unit is the current string in the current block, and the current SV is used for the current string. The current SV of the current string can be determined based on vector information in the history buffer. An index (e.g., a flag) can be signaled to point to an entry (e.g., one of the vector information) in the history buffer. If the entry was used for a block previously decoded in IBC mode, then the current SV of the current string is used to predict the BV of the previously decoded block in IBC mode. If the entry was used for a string previously decoded in string copy mode, then the current SV of the current string is used to predict the SV of the previously decoded string in string copy mode. Alternatively, the current SV of the current string can be encoded directly, so that, for example, when no index in the history buffer indicating which entry will be used to predict the current SV is signaled, the current SV of the current string can be determined directly based on the encoding information.
[0223] According to various aspects of this disclosure, it can be determined whether to add current vector information to the history buffer based on one or more vector information from the current vector information and the history buffer. When the current vector information differs from one or more vector information, the current vector information can be stored in the history buffer. When the current vector information differs from one or more vector information, the current vector information is considered unique. One or more vector information may include: (i) a subset of vector information in the history buffer (e.g., the first N² entries); or (ii) vector information in the history buffer. N² may be a positive integer less than the number of entries in the vector information in the history buffer.
[0224] The uniqueness of the current vector information can be determined based on the vector difference between the current vector and the corresponding vector (e.g., SV and / or BV) of one or more vector information in the history buffer. In the example, each of the one or more vector information includes a previous vector as BV or SV. If the difference (also called vector difference) between the current vector and each previous vector in one or more vector information in the history buffer satisfies a condition (e.g., the difference is greater than a predetermined threshold), the current vector information can be determined to be unique or different from one or more vector information. Therefore, the current vector information can be stored in the history buffer. Otherwise, if the difference between the current vector and the previous vector of one or more vector information does not satisfy a condition (e.g., the difference is not greater than a predetermined threshold), the current vector information can be determined to be different from said one of the one or more vector information, and therefore the current vector information is not unique. In the example, non-unique current vector information is not stored in the history buffer. In the example, the occurrence count of the previous vector of said one of the one or more vector information is incremented by 1, and this occurrence count is recorded.
[0225] The current vector information may include additional current information, such as the current cell size and current cell position of the current sample cell. The current cell size may indicate the number of samples in the current sample cell. One or more vector information entries in the history buffer may include additional previous information, such as the previous cell size and previous cell position of one or more previously decoded sample cells in the current image. Each previous cell size may indicate the number of samples in the corresponding previously decoded sample cell.
[0226] In this implementation, the uniqueness of the current vector information can be determined based on additional current information of the current sample unit and additional previous information of one or more previously decoded sample units. For example, if the size difference between the current unit size and each corresponding previous unit size of one or more vector information is greater than a predetermined size threshold, then the current vector information is determined to be different from one or more vector information.
[0227] In implementations, in addition to the vector difference between the current vector and the corresponding previous vectors (e.g., SV and / or BV) of one or more vector information, the uniqueness of the current vector information can also be determined based on additional current information of the current sample unit and additional previous information of one or more previously decoded sample units. For example, if the difference between the current vector and the previous vector of one or more vector information in the history buffer is not greater than a predetermined threshold, and the size difference between the current unit size and each corresponding previous unit size of one or more vector information is greater than a predetermined size threshold, then the current vector information is determined to be different from one or more vector information. Furthermore, the current vector information can be stored in the history buffer, and the current vector information can be removed from the history buffer. Alternatively, the current vector information can replace one of the vector information in one or more vector information in the history buffer. In an example, the occurrence count of the previous vector of one or more vector information is incremented by 1, and this occurrence count is recorded as the occurrence count of the current vector of the current vector information.
[0228] According to one aspect of this disclosure, the vector information in the history buffer may include a previous vector, previous cell size, and previous cell position corresponding to a previously decoded sample cell. Therefore, each of the vector information can be classified into one of multiple categories (or classes) based on, but not limited to, the occurrence count of the previous vector, the previous cell size, the previous cell position, etc. The occurrence count of the previous vector may refer to the number of times the previous vector was used to predict one or more previously decoded sample cells. In the example, the same previous vector is used to predict two previously decoded sample cells, so the corresponding vector information in the vector information includes the previous vector, the previous cell size, and the previous cell position of the most recently decoded sample cell. The occurrence count of the previous vector is 2. In the example, each of the vector information can be classified into one of multiple categories based on the occurrence count of the previous vector and the previous cell size. Therefore, the history buffer can be a class-based history buffer, similar to that described above with reference to CBVP and CSVP. The class-based history buffer can be a joint buffer including CBVP candidates and CSVP candidates. In the example, the encoding information of the current block also includes an index (e.g., a flag). The current vector information can be determined as an entry in one of multiple categories (e.g., a first entry), where that one category can be indicated by an index.
[0229] According to one aspect of this disclosure, one of the vector information in the history buffer may include a string vector and one of the following: (i) a string position; and (ii) the string size of the string previously decoded in string copy mode. The string position may be the position of a predetermined sample in the string previously decoded in string copy mode. The predetermined sample may be the first sample, the last sample, or any suitable sample in scan order (e.g., decoding order, reverse decoding order, etc.). The string size may be the number of samples in the string previously decoded in string copy mode.
[0230] Based on various aspects of this disclosure, the encoding information of the current block can be decoded, wherein the encoding information may indicate that the current block is encoded in string copy mode. In the example, the current block comprises one or more strings.
[0231] The SV and string length of the current string in the current block can be determined based on the encoding information. In the example, the current string is one of one or more strings. The string length can be any suitable integer, for example, in the range from 1 to (block size - 1), where the block size (e.g., block area) is the number of samples in the current block. The block size can be equal to the block width multiplied by the block height. According to one aspect of this disclosure, the string length can be one or more times a positive integer L, for example, the string length is equal to N3 multiplied by L. N3 is a positive integer and L is greater than 1. In the example, L is less than or equal to the block size of the current block divided by 2. For example, the string length can be L, 2L, 3L, etc. If L is 4, the string length is 4, 8, 12, etc.
[0232] The current string can be reconstructed based on the SV and the length of the current string.
[0233] In the example, the current block is a luminance block and L is 4 or 4 luminance samples.
[0234] In the example, the current block is a chroma block. The chroma subsampling format is 4:2:0, which indicates that the chroma block has half the height and half the width of the corresponding luma block. If the chroma block is jointly encoded with the corresponding luma block, then L is 2 or 2 chroma samples. If the chroma block is encoded separately from the corresponding luma block, then L is 4 or 4 chroma samples.
[0235] In the example, the current block also includes one or more escape samples outside the string. The reference string indicated by the corresponding SV is not used to predict the escape samples. The escape samples can be decoded directly. The number of escape samples can be one or more times L. In the example, the number of escape samples in the same line of the current block is one or more times L, such as L, 2L, etc.
[0236] According to various aspects of this disclosure, the encoded information may also include a syntax element (or a length syntax element) indicating the string length. Instead of encoding the actual string length of the current string (e.g., 8 samples), the string length may be encoded, wherein the encoded value of the length syntax element (e.g., 2) is equal to the string length divided by L (e.g., 4).
[0237] After the syntax element is decoded, the encoded value of the syntax element (e.g., 2) can be multiplied by L to recover the string length (e.g., 8).
[0238] The encoded value of a syntax element can be an integer ranging from 1 to (Ml / L-1), where Ml can be the block size (e.g., the number of samples in the current block). For example, if M1 is 256 and L is 4, then M1 / L is 64, and the range is 1 to 63. Therefore, the encoded value of a syntax element can be 1, 2, ..., or 63, which indicates string lengths of 4, 8, ..., or 252, respectively. Thus, by encoding the value of a syntax element as one or more times L, the range of encoded values for the syntax element can be reduced from L to (M1-L) to 1 to (M1 / L-1). For example, when M1 is 256 and L is 4, the range of values for the syntax element can be reduced from 4 to 252 (with a step of 4) to 1 to 63 (with a step of 1), thereby improving encoding efficiency.
[0239] Multiple resolutions (or multiple precisions) can be used to encode SVs. Signaling syntax elements (such as resolution syntax elements or indicators) can be used in the video bitstream to indicate which resolution from a predefined set of resolutions to use for encoding the SV. In the example, the resolution syntax element indicating the resolution used for the SV can be decoded from the encoding information.
[0240] In the implementation, a predefined set of resolutions includes two resolutions: (i) a 1-sample (1-pixel) resolution and (ii) a 4-sample (4-pixel) resolution. Therefore, the resolution used for the SV can be selected from either a 1-pixel or 4-pixel resolution using a resolution syntax element with a 1-bit value (e.g., a 1-bit indicator). If a 4-pixel resolution is chosen, both the x and y components of the SV are multiplied by 4 or more. Therefore, the decoded SV (or the intermediate SV if no prediction is used) or the SV difference (or intermediate SV difference) can be left-shifted by 2 bits to construct the SV (or the true SV). A left-shift by 2 bits is equivalent to multiplying the intermediate SV or intermediate SV difference by 4.
[0241] String size (or string length) can represent the number of samples in a string within a block (e.g., CB or CU). In the example, the string size is a number from 1 to (M1-1), where M1 is the block size (e.g., the number of samples in the block). In the example, as described above, the string size is one or more times L, and the step size is L within the range from L to (M1-L). Length information indicating the corresponding string size can be signaled for each encoded string in the block. According to various aspects of this disclosure, the final length information of the last encoded string in the block (e.g., the last encoded string) does not need to be signaled. In the example, reference... Figure 14First, string (1430) is encoded and then string (1431) is encoded (e.g., encoded and decoded), so string (1431) is the last encoded string in the current block (1435). Alternatively, if string (1431) is encoded first and then string (1430), then string (1430) is the last encoded string in the current block (1435). The final length information can indicate the final string size (or final string length) of the last encoded string. Therefore, the final string size of the last encoded string is not signaled.
[0242] When the final string size of the last encoded string is not sent via a signal, the final string size can be inferred from the number of samples already encoded in the block. The final string size can be inferred from the number of samples in the block and the number of samples already encoded in the block. In the example, the block comprises multiple strings, and the number of encoded samples in the block is determined based on the length of one or more of the remaining strings among the multiple strings. Therefore, the final string length can be determined based on: (i) the number of samples in the current block; and (ii) the length of one or more of the remaining strings among the multiple strings.
[0243] For example, refer to Figure 14 The current block (1435) consists of two strings: string (1430) and string (1431). String (1430) is encoded first, and string (1431) is encoded last after string (1430) is encoded. String (1431) is the last string encoded in the current block (1435), so the length of the last string of string (1431) does not need to be encoded. The length of the last string can be inferred from the block size (e.g., 64 samples) and the number of samples encoded in the current block (1435). Figure 14 In the example, the number of encoded samples in the current block (1435) is the string size of string (1430) (e.g., 29). The final string length can be inferred to be equal to the block size (e.g., 64) minus the number of encoded samples in the current block (1435) (e.g., 29), which is 35 samples.
[0244] A flag (e.g., a last-encoded string flag) can be signaled for one of the multiple strings in a block to indicate whether that particular string is the last encoded string in the block (e.g., the last encoded string in the block). If the flag is true, then that particular string is the last encoded string in the block. It is not necessary to signal the string size of that particular string (e.g., the last encoded string).
[0245] Flags (e.g., last encoded string flags) can be sent for each of the multiple strings in a block. (See reference) Figure 14For string (1430), a first flag (or a first last encoded string flag) is sent using a signal, and for string (1431), a second flag (or a second last encoded string flag) is sent using a signal. If the first flag is false, it indicates that string (1430) is not the last encoded string; if the second flag is true, it indicates that string (1431) is the last encoded string.
[0246] For example, context-adaptive binary arithmetic coding (CABAC) can be used to context-encode a token for one of a plurality of strings. The context modeling of the token can depend on the position of that particular string within the plurality of strings. As mentioned above, the string position can be represented by the position of a sample within that particular string (e.g., the first sample in decoding order).
[0247] The context modeling of a flag can depend on the number of remaining samples in a block, where the remaining samples are encoded before one of the multiple strings.
[0248] In the example, if one of the multiple strings is the first string in the block, then there is no need to send a signal flag.
[0249] Figure 15 A flowchart outlining a process (1500) according to an embodiment of this disclosure is shown. Process (1500) can be used to reconstruct blocks or strings in images of an encoded video sequence. Process (1500) can be used to reconstruct blocks to generate predictive blocks for the blocks in the reconstruction. The term "block" in this disclosure can be interpreted as predictive block, CB, CU, etc. In various embodiments, process (1500) is performed by processing circuitry, such as processing circuitry in terminal devices (310), (320), (330), and (340), processing circuitry performing the functions of a video encoder (403), processing circuitry performing the functions of a video decoder (410), processing circuitry performing the functions of a video decoder (510), processing circuitry performing the functions of a video encoder (603), etc. In some embodiments, process (1500) is implemented as software instructions, so that when the processing circuitry executes the software instructions, the processing circuitry performs process (1500). Processing begins at (S1501) and proceeds to (S1510).
[0250] At (S1510), the encoding information of the current block of the current image can be decoded. The encoding information can indicate that the encoding mode of the current block is either IBC mode or string copy mode.
[0251] At (S1520), the current vector information of the current sample unit in the current block can be determined based on the encoding mode of the current block and the history buffer. The history buffer can be configured to store the vector information of previously decoded sample units in the current image. In the example, the previously decoded sample units include blocks previously decoded in IBC mode and / or strings previously decoded in string copy mode. In the example, the previously decoded sample units were decoded before the current block. The history buffer can be a combined buffer that combines an HSVP buffer and an HBVP buffer.
[0252] Vector information can be stored as entries in a history buffer. Each vector information may include a vector (e.g., BV, SV) used to predict the corresponding sample unit in a previously decoded sample unit. In some examples, each vector information may also include additional information (or edge information) of one of the previously decoded sample units, such as the unit size or unit position of one of the previously decoded sample units. Each previously decoded sample unit may be a block (e.g., CB) or a string.
[0253] The current vector information may include the current vector used to predict the current sample unit. If the encoding mode of the current block is IBC mode, then the current sample unit is the current block, and the current vector is the current BV of the current block. If the encoding mode is string copy mode, then the current sample unit is the current string in the current block, and the current vector is the current SV of the current string in the current block.
[0254] At (S1530), the current sample cell can be reconstructed based on current vector information, including, for example, the current vector.
[0255] Processing (1500) can be adjusted appropriately. One or more steps in processing (1500) can be modified and / or omitted. One or more additional steps can be added. Any suitable implementation order can be used. For example, when it is determined that the current vector information is unique, as described above, the current vector information can be stored in a history buffer. In some examples, when the current vector information is stored in the history buffer, a pruning process is used, and one of the vector information in the history buffer is removed.
[0256] Figure 16A flowchart outlining a process (1600) according to an embodiment of the present disclosure is shown. Process (1600) can be used to reconstruct a string in the current block of an image of an encoded video sequence. Process (1600) can also be used for the reconstruction of the current block to generate a prediction block for the current block in the reconstruction. The term "block" in this disclosure can be interpreted as prediction block, CB, CU, etc. In various embodiments, process (1600) is performed by processing circuitry, such as processing circuitry in terminal devices (310), (320), (330), and (340), processing circuitry performing the functions of a video encoder (403), processing circuitry performing the functions of a video decoder (410), processing circuitry performing the functions of a video decoder (510), processing circuitry performing the functions of a video encoder (603), etc. In some embodiments, process (1600) is implemented as software instructions, so that when the processing circuitry executes the software instructions, the processing circuitry performs process (1600). Processing begins at (S1601) and proceeds to (S1610).
[0257] At (S1610), the encoding information of the current block can be decoded. The encoding information can indicate that the current block is encoded in string copy mode. In the example, the current block consists of one or more strings.
[0258] At (S1620), the SV and string length of the current string in the current block can be determined based on the encoding information. The current string can be one or more strings. The string length can be one or more times a positive integer L greater than 1, so the string length can be equal to N3 multiplied by L. As mentioned above, N3 is a positive integer.
[0259] In the example, the current block is a luminance block and L is 4.
[0260] In the example, the current block is a chroma block and the chroma subsampling format is 4:2:0. If the chroma block and the corresponding luma block are jointly encoded, then L is 2. If the chroma block and the corresponding luma block are encoded separately, then L is 4.
[0261] In the example, the current block also includes escape samples outside of one or more strings. The number of escape samples can be one or more times L.
[0262] In the example, the encoding information also includes a syntax element indicating the string length. The encoded value of the syntax element is the string length divided by L. The encoded value of the syntax element can be an integer in the range of 1 to (M1 / L-1), where M1 is the number of samples in the current block. The string length can be determined by multiplying the value of the syntax element by L.
[0263] At (S1630), the current string can be reconstructed based on SV and the string length of the current string.
[0264] The processing (1600) can be adjusted appropriately. One or more steps in the processing (1600) can be modified and / or omitted. One or more additional steps can be added. Any suitable implementation order can be used. For example, the encoding information also includes a syntax element indicating the resolution used for the SV. In the example, the syntax element has a 1-bit indicating whether the resolution of the SV is 1 pixel or 4 pixels. If the resolution of the SV is 4 pixels, the intermediate SV can be determined based on the encoding information, and the SV can be determined as the intermediate SV multiplied by 4.
[0265] In the example, the current block comprises multiple strings. The length of the last string to be encoded among the multiple strings is not signaled. The length of the last string can be determined based on: (i) the number of samples in the current block; and (ii) the length of one or more of the remaining strings. Encoding information may include flags indicating whether the current string is the last string.
[0266] This disclosure also provides an apparatus for video decoding, comprising: a decoding unit configured to decode encoding information of a current block of a current image, the encoding information indicating that the encoding mode of the current block is one of the following modes: intra-block copy (IBC) mode and string copy mode; a determining unit configured to determine current vector information of a current sample unit in the current block based on the encoding mode of the current block and a history buffer, the history buffer being configured to store at least vector information of a block previously decoded in IBC mode and a string previously decoded in the string copy mode; and a reconstruction unit configured to reconstruct the current sample unit based on the current vector information.
[0267] In some examples, the encoding mode of the current block is the IBC mode; the current sample unit is the current block; and the determining unit is further configured to: determine a BV predictor candidate list for the current block based at least on vector information in the history buffer; and determine the current BV in the current vector information based on the BV predictor candidate list.
[0268] In some examples, the encoding mode of the current block is the string copy mode; the current sample unit is the current string in the current block; the determining unit is further configured to: determine the current SV in the current vector information from the vector information in the history buffer, the current SV being used for the current string.
[0269] In some examples, the device further includes a storage unit configured to store the current vector information in the history buffer based on the fact that the current vector information is different from one or more vector information in the history buffer.
[0270] In some examples, the determining unit is further configured to determine that the current vector information is different from one or more vector information in the history buffer based on the fact that the difference between the current vector in the current vector information and each previous vector of one or more vector information in the history buffer is greater than a predetermined threshold.
[0271] In some examples, the determining unit is further configured to: determine that the current vector information is different from one or more vector information in the history buffer based on the size difference between the current cell size of the current vector information and the previous cell size of each of the one or more vector information being greater than a predetermined size threshold, wherein the current cell size of the current vector information indicates the number of samples in the current cell, the vector information in the history buffer being used to decode previous sample cells, the previous sample cells including blocks previously decoded in the IBC mode and strings previously decoded in the string copy mode, and the previous cell size indicating the number of samples in the corresponding previous cell.
[0272] In some examples, the one or more vector information includes: (i) a subset of the vector information in the history buffer; or (ii) the vector information in the history buffer.
[0273] In some examples, one of the vector information in the history buffer includes a string vector and one of the following: (i) a string position; and (ii) a string size of a string previously decoded in the string copy mode, wherein the string position is the position of a predetermined sample in the string previously decoded in the string copy mode, and the string size is the number of samples in the string previously decoded in the string copy mode.
[0274] In some examples, the vector information includes previous vectors and previous cell sizes, and previous cell positions of corresponding previously decoded sample cells, including blocks previously decoded in the IBC mode and strings previously decoded in the string copy mode; and the apparatus further includes: a classification unit configured to classify each of the vector information stored in the history buffer into one of a plurality of categories based on at least one of: (i) the previous cell size of the corresponding vector information; (ii) the previous cell position of the corresponding vector information; or (iii) using the corresponding vector information to predict the number of times one or more previously decoded sample cells are used, the history buffer being a class-based history buffer.
[0275] This disclosure also provides a computer device. The device includes a processor and a memory. The memory stores program code and transmits the program code to the processor; the processor executes instructions according to the program code: determining current vector information of a current sample unit in the current block based on the encoding mode of the current block and a history buffer, the history buffer being configured to store at least vector information of a block previously decoded in IBC mode and a string previously decoded in the string copy mode; and reconstructing the current sample unit based on the current vector information.
[0276] This disclosure also provides an apparatus for video decoding, comprising: a decoding unit configured to decode encoding information of a current block, the encoding information indicating that the current block is encoded in a string copy mode; a determining unit configured to determine, based on the encoding information, a string vector (SV) and a string length of a current string in the current block, the string length being N³ multiplied by L, where N³ and L are positive integers and L is greater than 1; and a reconstruction unit configured to reconstruct the current string based on the SV and string length of the current string.
[0277] In some examples, the current block is a luminance block and L is 4.
[0278] In some examples, the encoding information also includes a syntax element indicating the length of the string; and the encoded value of the syntax element is the string length divided by L.
[0279] In some examples, the encoded value of the syntax element is an integer in the range of 1 to (M1 / L-1), where M1 is the number of samples in the current block.
[0280] In some examples, the decoding unit is further configured to decode the syntax element; and the determining unit is further configured to determine the string length as the encoded value of the syntax element multiplied by L.
[0281] In some examples, the decoding unit is also configured to decode syntax elements that indicate the resolution of the SV.
[0282] In some examples, the current block includes multiple strings having the current string, and the length of the last string to be encoded among the multiple strings is not signaled.
[0283] This disclosure also provides a computer device. The device includes a processor and a memory. The memory stores program code and transmits the program code to the processor; the processor executes instructions according to the program code: decoding encoding information of a current block, the encoding information indicating encoding the current block in string copy mode; determining the string vector (SV) and string length of a current string in the current block based on the encoding information, the string length being N³ multiplied by L, where N³ and L are positive integers and L is greater than 1; and reconstructing the current string based on the SV and string length of the current string.
[0284] The embodiments described in this disclosure can be used individually or in any combination in any order. Furthermore, each of the methods (or embodiments), encoders, and decoders can be implemented using processing circuitry (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute a program stored on a non-transitory computer-readable medium.
[0285] The above-mentioned techniques can be implemented as computer software using computer-readable instructions and physically stored in one or more computer-readable media. For example, Figure 17 A computer system (1700) suitable for implementing certain embodiments of the disclosed subject matter is shown.
[0286] Computer software can be coded using any suitable machine code or computer language. Machine code or computer language can be subjected to mechanisms such as assembly, compilation, and linking to create code that includes instructions. These instructions can be executed directly by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or through interpretation, microcode execution, etc.
[0287] The instructions can be executed on various types of computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, etc.
[0288] Figure 17 The components shown for the computer system (1700) are exemplary in nature and are not intended to impose any limitation on the scope or functionality of computer software implementing embodiments of this disclosure. The configuration of the components should also not be construed as having any dependency or requirement relating to any one or a combination of components shown in the exemplary embodiments of the computer system (1700).
[0289] Computer system 1700 may include certain human-machine interface input devices. Such human-machine interface input devices can respond to input from one or more human users through, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, tapping), visual input (e.g., gestures), and olfactory input (not depicted). The human-machine interface device can also be used to capture certain media that are not necessarily directly related to human conscious input, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from still image capturing devices), and video (e.g., two-dimensional video, three-dimensional video including stereoscopic video).
[0290] The input human-machine interface device may include one or more of the following (only one of each is shown): keyboard (1701), mouse (1702), touchpad (1703), touch screen (1710), data glove (not shown), joystick (1705), microphone (1706), scanner (1707), and camera device (1708).
[0291] The computer system (1700) may also include certain human-machine interface output devices. Such human-machine interface output devices may stimulate the senses of one or more human users through, for example, tactile output, sound, light, and smell / taste. Such human-machine interface output devices may include tactile output devices (e.g., tactile feedback via a touchscreen (1710), data gloves (not shown), or joystick (1705), but tactile feedback devices that are not used as input devices may also exist), audio output devices (e.g., speakers (1709), headphones (not shown)), visual output devices (e.g., screens (1710), including CRT screens, LCD screens, plasma screens, OLED screens, each with or without touchscreen input capability, each with or without tactile feedback capability—some of which may be able to output two-dimensional or more than three-dimensional visual outputs through means such as stereoscopic image output, virtual reality glasses (not shown), holographic displays, and smoke generators (not shown),) and printers (not shown).
[0292] The computer system (1700) may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (1720) with media such as CD / DVD (1721), thumb drives (1622), removable hard disk drives or solid-state drives (1723), conventional magnetic media such as magnetic tapes and floppy disks (not depicted), devices based on dedicated ROM / ASIC / PLD such as security dongles (not depicted), etc.
[0293] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the presently disclosed subject matter does not include transmission media, carrier waves, or other transient signals.
[0294] The computer system (1700) may also include interfaces (1754) to one or more communication networks (1755). Networks may be, for example, wireless networks, wired networks, or optical networks. Networks may also be local area networks (LANs), wide area networks (WANs), metropolitan area networks (MANs), vehicular and industrial networks, real-time networks, latency-tolerant networks, etc. Examples of networks include LANs such as Ethernet, wireless LANs, cellular networks (including GSM (Global System for Mobile Communication), 3G (Third Generation), 4G (Fourth Generation), 5G (Fifth Generation), LTE (Long Term Evolution), etc.), cable or wireless wide area digital television networks (including cable television, satellite television, and terrestrial broadcast television), vehicular and industrial networks (including CANbus), etc. Some networks typically require external network interface adapters that attach to certain general-purpose data ports or peripheral buses (1749) (e.g., USB ports of computer systems (1700)); others are typically integrated into the core of the computer system (1700) via attachment to a system bus (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). The computer system (1700) can communicate with other entities through any of these networks. Such communication can be unidirectional, receive-only (e.g., broadcasting TV), transmit-only (e.g., to a CANbus device), or bidirectional, such as to other computer systems using local or wide-area digital networks. Specific protocols and protocol stacks can be used on each of these networks and network interfaces as described above.
[0295] The human-machine interface device, human-accessible storage device and network interface mentioned above can be attached to the core (1740) of the computer system (1700).
[0296] The core (1740) may include one or more Central Processing Units (CPUs) (1741), Graphics Processing Units (GPUs) (1742), dedicated programmable processing units in the form of Field Programmable Gate Areas (FPGAs) (1743), hardware accelerators (1744) for certain tasks, graphics adapters (1750), etc. These devices, along with Read-Only Memory (ROM) (1745), Random Access Memory (1746), and internal mass storage devices (e.g., internal non-user-accessible hard disk drives, SSDs, etc.), may be connected via the system bus (1748). In some computer systems, the system bus (1748) may be accessed via one or more physical connectors for expansion through additional CPUs, GPUs, etc. Peripheral devices may be attached directly or via a peripheral bus (1749) to the core's system bus (1748). In this example, a display (1710) may be connected to the graphics adapter (1750). Peripheral bus architectures include PCI (Peripheral Component Interconnect), USB, etc.
[0297] The CPU (1641), GPU (1742), FPGA (1743), and accelerator (1744) can execute certain instructions that can be combined to form the computer code mentioned above. This computer code can be stored in ROM (1745) or RAM (1746). Transient data can also be stored in RAM (1746), while permanent data can be stored, for example, in an internal mass storage device (1747). Fast storage and retrieval of any storage device can be achieved by using a cache memory, which can be closely associated with one or more CPUs (1741), GPUs (1742), mass storage devices (1747), ROMs (1745), RAMs (1746), etc.
[0298] Computer-readable media may contain computer code for performing operations of various computer implementations. These media and computer code may be specifically designed and constructed for the purposes of this disclosure, or they may be of types well-known and available to those skilled in the art of computer software.
[0299] By way of example and not limitation, a computer system (1700) with an architecture, particularly a core (1740), can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such a computer-readable medium can be a medium associated with a user-accessible mass storage device as described above, as well as certain storage devices of the core (1740) having a non-transitory nature, such as an internal mass storage device (1747) or ROM (1745). Software implementing various embodiments of this disclosure can be stored in such a device and executed by the core (1740). Depending on specific needs, the computer-readable medium may include one or more memory devices or chips. The software can cause the core (1740), particularly the processors therein (including CPUs, GPUs, FPGAs, etc.), to execute specific processes or specific portions of specific processes described herein, including defining data structures stored in RAM (1746) and modifying such data structures according to software-defined processes. Alternatively or alternatively, the computer system may provide functionality as a result of hard-wired logic or otherwise embodied in circuitry (e.g., an accelerator (1744)), which may replace or operate with software to perform a particular process or a particular portion of a particular process described herein. Where appropriate, references to software may include logic, and vice versa. Where appropriate, references to computer-readable media may include circuitry (e.g., an integrated circuit (IC)) storing software for execution, circuitry implementing logic for execution, or both. This disclosure includes any suitable combination of hardware and software.
[0300] Appendix A: Acronyms
[0301] JEM: Joint Exploration Model
[0302] VVC: Universal Video Coding
[0303] BMS: Benchmark Set
[0304] MV: Motion Vector
[0305] HEVC: High-Efficiency Video Coding
[0306] MPM: Most Likely Pattern
[0307] WAIP: Wide-angle Intra-frame Prediction
[0308] SEI: Supplemental Enhancement Information
[0309] VUI: Video Availability Information
[0310] GOP: Image Group
[0311] TU: Transformation Unit
[0312] PU: Prediction Unit
[0313] CTU: Coding Tree Unit
[0314] CTB: Coded Tree Block
[0315] PB: Prediction Block
[0316] HRD: Assuming a reference decoder
[0317] SDR: Standard Dynamic Range
[0318] SNR: Signal-to-noise ratio
[0319] CPU: Central Processing Unit
[0320] GPU: Graphics Processing Unit
[0321] CRT: Cathode Ray Tube
[0322] LCD: Liquid Crystal Display
[0323] OLED: Organic Light Emitting Diode
[0324] CD: Compact Disc
[0325] DVD: Digital Video Disc
[0326] ROM: Read-Only Memory
[0327] RAM: Random Access Memory
[0328] ASIC: Application-Specific Integrated Circuit
[0329] PLD: Programmable Logic Device
[0330] LAN: Local Area Network
[0331] GSM: Global System for Mobile Communications
[0332] LTE: Long Term Evolution
[0333] CANBus: Controller Area Network Bus
[0334] USB: Universal Serial Bus
[0335] PCI: Peripheral Component Interconnect
[0336] FPGA: Field Programmable Gate Domain
[0337] SSD (solid-state drive): Solid-state drive
[0338] IC: Integrated Circuit
[0339] CU: Encoding Unit
[0340] PDPC: Location-Related Prediction Combination
[0341] ISP: Intra-Frame Sub-Partition
[0342] SPS: Sequence Parameter Settings
[0343] While this disclosure has described several exemplary embodiments, variations, substitutions, and various alternative equivalents fall within the scope of this disclosure. It will therefore be appreciated that, although not expressly shown or described herein, those skilled in the art will be able to conceive of many systems and methods that implement the principles of this disclosure and thus within its spirit and scope.
Claims
1. A method for video decoding, characterized in that, include: The encoding information of the current block is decoded. The encoding information indicates that the current block is encoded in string copy mode. The encoding information includes a first syntax element indicating the string length of the current string in the current block. The encoding value of the first syntax element is N3. The string length is determined by multiplying the encoding value of the first syntax element by L, where N3 and L are positive integers and L is greater than 1. The number of samples M1 in the current block is divisible by L. The current block includes one or more strings containing the current string, and escaped samples outside of the one or more strings. The number of escaped samples is one or more times L. Based on the encoded information, determine the string vector SV and string length of the current string in the current block; and Reconstruct the current string based on its SV and string length.
2. The method according to claim 1, characterized in that, The current block is a luminance block, and L is 4.
3. The method according to claim 1, characterized in that, The current block is a chroma block; The chroma subsampling format is 4:2:0, indicating that the chroma block has half the height and half the width of the corresponding luma block; Based on the joint encoding of the chroma block and the corresponding luminance block, L is 2.
4. The method according to claim 1, characterized in that, The current block is a chroma block; The chroma subsampling format is 4:2:0, indicating that the chroma block has half the height and half the width of the corresponding luma block; Since the chroma block and the corresponding luminance block are encoded separately, L is 4.
5. The method according to claim 1, characterized in that, The number of escape samples in the same row of the current block is one or more times L.
6. The method according to claim 1, characterized in that, The encoded value of the first syntax element is an integer in the range from 1 to (M1 / L-1).
7. The method according to claim 1, characterized in that, Decoding the encoded information further includes: The second syntax element, which indicates the resolution used for the SV, is decoded.
8. The method according to claim 7, characterized in that, The second syntax element has 1 bit, indicating that the resolution of the SV is one of (i) 1 sample and (ii) 4 samples; as well as Based on the fact that the resolution of the SV is 4 samples, determining the SV also includes: The intermediate SV is determined based on the encoded information; as well as The SV is determined to be the intermediate SV multiplied by 4.
9. The method according to claim 1, characterized in that, The current block includes multiple strings having the current string, and the length of the last string to be encoded among the multiple strings is not signaled.
10. The method according to claim 9, characterized in that, The length of the final string is determined based on: (i) the number of samples in the current block; and (ii) the length of one or more of the remaining strings among the plurality of strings.
11. The method according to claim 9, characterized in that, The encoded information includes a flag indicating whether the current string is the last string.
12. An apparatus for video decoding, characterized in that, Including processor and memory, among which, The memory is used to store program code and transfer the program code to the processor; and The processor is configured to execute the video decoding method according to any one of claims 1-11 according to the instructions in the program code.
13. A method for video encoding, characterized in that, include: The current block is encoded using a string copy mode to generate encoding information. This encoding information includes a first syntax element indicating the string length of the current string in the current block. The encoded value of the first syntax element is N3. The string length is determined by multiplying the encoded value of the first syntax element by L, where N3 and L are positive integers, and L is greater than 1. The number of samples M1 in the current block is divisible by L. The current block includes one or more strings containing the current string, as well as escaped samples outside of the one or more strings. The number of escaped samples is one or more times L. The string vector (SV) and string length of the current string in the current block are determined and incorporated into the encoding information; and the encoding information is output so that the decoding end can reconstruct the current string based on the SV and string length in the encoding information.
14. A method for storing a bit stream, characterized in that, Generate a bit stream by performing the method of claim 13; and store the bit stream.
15. A method for transmitting a bit stream, characterized in that, The method of claim 13 is used to generate a bit stream; and the bit stream is transmitted.
16. A computer-readable storage medium storing a computer program / instructions and a bit stream thereon, characterized in that, When the computer program / instructions are executed by the processor, they implement the steps of the method of claim 13 to generate the bit stream.
Citation Information
Patent Citations
Image encoding method, decoding method, encoding device and decoding device
CN105704491A
Dictionary coding of video content
US20150264348A1