Lossless encoding of video data
The transform residual coding and transform skip residual coding methods solve the problem of high bandwidth and large storage in high-definition video surveillance, achieve efficient compression of video data, and reduce the bit rate of encoded video.
Patent Information
- Application Number
- CN202510983095.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2019-09-23
- Filing Date
- 2020-08-24
- Publication Date
- 2025-09-09
AI Technical Summary
Existing video coding technologies face the challenges of high bandwidth and large storage requirements in high-definition video surveillance applications. In particular, the bit rate of I pictures accounts for a large proportion, making it difficult to effectively reduce the overall bit rate of the encoded video.
The transform residual coding and transform skip residual coding methods are adopted to determine the prediction residual signal of the coding block in the video sequence by receiving control information for encoding, and the video data is further compressed by combining transformation and quantization technology.
It effectively reduces the bit rate of video encoding, improves the compression efficiency of video data, reduces the demand for storage space and transmission bandwidth, and is suitable for applications such as high-definition video surveillance.
Smart Images

Figure CN120614451A_ABST
Abstract
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This disclosure claims the benefit of priority to U.S. Provisional Application No. 62 / 904,574, filed September 23, 2019, which is incorporated herein by reference in its entirety. Technical Field
[0002] The present disclosure relates generally to video processing, and more particularly, to methods and apparatus for performing lossless encoding of video data and selecting a residual encoding technique for the lossless encoding. Background Art
[0003] A video is a collection of static images (or "frames") that capture visual information. In order to reduce storage memory and transmission bandwidth, videos can be compressed before storage or transmission and decompressed before display. The compression process is usually called encoding, and the decompression process is usually called decoding. There are various video coding formats that use standardized video coding techniques that are most commonly based on prediction, transform, quantization, entropy coding, and in-loop filtering. Video coding standards that specify specific video coding formats, such as the High Efficiency Video Coding (HEVC / H.265) standard, the Versatile Video Coding (VVC / H.266) standard, and the AVS standard, are developed by standardization organizations. As more and more advanced video coding technologies are adopted in video standards, the coding efficiency of new video coding standards is getting higher and higher. Summary of the Invention
[0004] An embodiment of the present disclosure provides a residual coding method, comprising: receiving control information for encoding a video sequence; and determining, based on the control information, a coding method for encoding a prediction residual signal of a coding block in the video sequence, wherein the coding method is one of transform residual coding and transform skip residual coding.
[0005] An embodiment of the present disclosure further provides a system for processing a video signal using residual coding. The system includes: a memory for storing an instruction set; and at least one processor configured to execute the instruction set so as to cause the system to: receive control information for encoding a video sequence; and, based on the control information, determine a coding method for encoding a prediction residual signal of a coding block in the video sequence, the coding method being one of transform residual coding and transform skip residual coding.
[0006] An embodiment of the present disclosure also provides a non-transitory computer-readable medium, which stores instructions that can be executed by at least one processor of a computer system, wherein the execution of the instructions causes the computer system to perform a method, the method comprising: receiving control information for encoding a video sequence; and based on the control information, determining a coding method for encoding a prediction residual signal of a coding block in the video sequence, the coding method being one of transform residual coding and transform skip residual coding. BRIEF DESCRIPTION OF THE DRAWINGS
[0007]
[0014] Embodiments and aspects of the present disclosure are illustrated in the following detailed description and accompanying drawings.The various features shown in the drawings are not drawn to scale.
[0008] Figure 1 The structure of an exemplary video sequence consistent with embodiments of the present disclosure is illustrated.
[0009] Figure 2A A schematic diagram illustrating an exemplary encoding process of a hybrid video coding system consistent with embodiments of the present disclosure.
[0010] Figure 2B A schematic diagram illustrating another exemplary encoding process of a hybrid video coding system consistent with an embodiment of the present disclosure.
[0011] Figure 3A A schematic diagram illustrating an exemplary decoding process of a hybrid video coding system consistent with embodiments of the present disclosure.
[0012] Figure 3B A schematic diagram illustrating another exemplary decoding process of a hybrid video coding system consistent with an embodiment of the present disclosure.
[0013] Figure 4 is a block diagram of an exemplary device for encoding or decoding video consistent with embodiments of the present disclosure.
[0014] Figure 5 An exemplary transform unit syntax consistent with an embodiment of the present disclosure is illustrated.
[0015] Figure 6 An exemplary SPS syntax for using sps_bdpcm_transform_residual_coding_flag consistent with an embodiment of the present disclosure is illustrated.
[0016] Figure 7 An exemplary slice header syntax consistent with embodiments of the present disclosure is illustrated.
[0017] Figure 8 An exemplary transform block syntax consistent with embodiments of the present disclosure is illustrated.
[0018] Figure 9 An exemplary transform residual coding syntax consistent with an embodiment of the present disclosure is illustrated.
[0019] Figure 10 is a flow chart of an exemplary computer-implemented method for processing a video signal with residual coding, consistent with embodiments of the present disclosure. DETAILED DESCRIPTION
[0020] Reference will now be made in detail to exemplary embodiments, examples of which are illustrated in the accompanying drawings. The following description refers to the accompanying drawings, wherein, unless otherwise indicated, the same reference numerals in different figures represent the same or similar elements. The implementations set forth in the following description of the exemplary embodiments do not represent all implementations consistent with the present invention. Instead, they are merely examples of devices and methods consistent with the aspects related to the present invention as described in the appended claims. Unless otherwise specifically stated, the term "or" includes all possible combinations except where not feasible. For example, if it is stated that a component can include A or B, then unless otherwise specifically stated or not feasible, the component can include A, or B, or A and B. As a second example, if it is stated that a component can include A, B, or C, then unless otherwise specifically stated or not feasible, the component can include A, or B, or C, or A and B, or A and C, or B and C, or A and B and C.
[0021] Video coding systems are often used to compress digital video signals, for example, to reduce the storage space consumed or to reduce the transmission bandwidth consumption associated with such signals. With the popularity of high-definition (HD) video (e.g., having a resolution of 1920×1080 pixels) in various video compression applications such as online video streaming, video conferencing, or video surveillance, there is a continuous need to develop video coding tools that can improve the compression efficiency of video data.
[0022] For example, video surveillance applications are increasingly being used in many application scenarios (e.g., security, traffic, environmental monitoring, etc.), and the number and resolution of surveillance devices continue to grow rapidly. Many video surveillance application scenarios prefer to provide users with HD video to capture more information, which has more pixels per frame to capture such information. However, HD video bitstreams can have high bit rates, which requires high bandwidth for transmission and requires a large space for storage. For example, a surveillance video stream with an average resolution of 1920×1080 may require a bandwidth of up to 4Mbps for real-time transmission. In addition, video surveillance is usually monitored continuously 24×7, which may pose a great challenge to the storage system if the video data is to be stored. The demand for high bandwidth and large storage for HD video has therefore become a major limitation to its large-scale deployment in video surveillance.
[0023] A video is a collection of static images (or "frames") arranged in time sequence to store visual information. A video capture device (e.g., a camera) can be used to capture and store those images in time sequence, and a video playback device (e.g., a television, computer, smartphone, tablet, video player, or any end-user terminal with display functionality) can be used to display such images in time sequence. Additionally, in some applications, the video capture device can send the captured video to a video playback device (e.g., a computer with a monitor) in real time, such as for surveillance, conferencing, or live broadcasting.
[0024] In order to reduce the storage space and transmission bandwidth required for such applications, the video can be compressed before storage and transmission and decompressed before display. Compression and decompression can be implemented by software run by a processor (e.g., a processor of a general-purpose computer) or dedicated hardware. The module used for compression is generally referred to as an "encoder," while the module used for decompression is generally referred to as a "decoder." Encoders and decoders can be collectively referred to as "codecs." Encoders and decoders can be implemented as any of various suitable hardware, software, or combinations thereof. For example, the hardware implementation of an encoder and decoder can include circuitry, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, or any combination thereof. The software implementation of an encoder and decoder can include program code, computer-executable instructions, firmware, or any suitable computer-implemented algorithm or process fixed in a computer-readable medium. Video compression and decompression can be implemented by various algorithms or standards such as MPEG-1, MPEG-2, MPEG-4, the H.26x series, etc. In some applications, a codec can decompress video according to a first coding standard and recompress the decompressed video using a second coding standard, in which case the codec can be referred to as a "transcoder."
[0025] The video encoding process can identify and retain useful information that can be used to reconstruct the image and ignore unimportant information for reconstruction. If the ignored unimportant information cannot be completely reconstructed, such an encoding process can be called "lossy". Otherwise, it can be called "lossless". Most encoding processes are lossy, which is a trade-off to reduce the required storage space and transmission bandwidth.
[0026] Useful information about the image being encoded (referred to as the "current image") includes changes relative to a reference image (e.g., a previously encoded and reconstructed image). Such changes can include changes in pixel position, brightness, or color, with position changes being of greatest interest. A change in the position of a group of pixels representing an object can reflect the object's motion between the reference image and the current image.
[0027] A picture that is encoded without referencing another picture (i.e., it is its own reference picture) is called an "I picture." A picture that is encoded using a previous picture as a reference picture is called a "P picture." A picture that is encoded using both a previous picture and a future picture as reference pictures (i.e., the reference is "bidirectional") is called a "B picture."
[0028] As mentioned earlier, video surveillance using HD video faces the challenges of high bandwidth and storage requirements. To address these challenges, the bit rate of the encoded video can be reduced. Of I-pictures, P-pictures, and B-pictures, I-pictures have the highest bit rate. Because the background of most surveillance videos is nearly static, one way to reduce the overall bit rate of the encoded video is to use fewer I-pictures for video encoding.
[0029] However, the improvement from using fewer I pictures may be negligible, as I pictures generally do not dominate the encoded video. For example, in a typical video bitstream, the ratio of I pictures, B pictures, and P pictures may be 1:20:9, where I pictures can account for less than 10% of the total bitrate. In other words, in such an example, even if all I pictures were removed, the bitrate reduction would likely be no more than 10%.
[0030] Figure 1 The structure of an example video sequence 100 consistent with embodiments of the present disclosure is illustrated. Video sequence 100 can be live video or video that has been captured and archived. Video 100 can be real-life video, computer-generated video (e.g., computer game video), or a combination thereof (e.g., real-life video with augmented reality effects). Video sequence 100 can be input from a video capture device (e.g., a camera), a video archive containing previously captured video (e.g., a video file stored on a storage device), or a video feed interface for receiving video from a video content provider (e.g., a video broadcast transceiver).
[0031] like Figure 1 As shown, video sequence 100 can include a series of images temporally arranged along a timeline, including images 102, 104, 106, and 108. Images 102-106 are consecutive, and there are more images between images 106 and 108. Figure 1, picture 102 is an I picture whose reference picture is picture 102 itself. Picture 104 is a P picture whose reference picture is picture 102, as indicated by the arrows. Picture 106 is a B picture whose reference pictures are pictures 104 and 108, as indicated by the arrows. In some embodiments, the reference pictures of a picture (e.g., picture 104) can not be immediately before or after the picture. For example, the reference picture of picture 104 can be a picture that is before picture 102. It should be noted that the reference pictures of pictures 102-106 are examples only, and the present disclosure does not limit the embodiments of the reference pictures as Figure 1 Example shown.
[0032] Typically, video codecs do not encode or decode an entire image at once due to the computational complexity of such tasks. Instead, they can divide the image into basic segments and encode or decode the image segment by segment. Such basic segments are referred to in this disclosure as basic processing units ("BPUs"). For example, Figure 1 Structure 110 in shows an example structure of an image of video sequence 100 (e.g., any of images 102-108). In structure 110, the image is divided into 4×4 basic processing units, whose boundaries are shown as dashed lines. In some embodiments, the basic processing unit may be referred to as a “macroblock” in some video coding standards (e.g., the MPEG family, H.261, H.263, or H.264 / AVC), or as a “coding tree unit” (“CTU”) in some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). The basic processing unit can have variable sizes in the image, such as 128×128, 64×64, 32×32, 16x×16, 4×8, 16×32, or pixels of arbitrary shape and size. The size and shape of the basic processing unit can be selected for the image based on a balance between coding efficiency and the level of detail to be maintained in the basic processing unit.
[0033] A basic processing unit can be a logical unit that can include a set of different types of video data stored in a computer memory (e.g., in a video frame buffer). For example, a basic processing unit of a color image can include a luma component (Y) representing achromatic luma information, one or more chroma components (e.g., Cb and Cr) representing color information, and related syntax elements, where the luma component and the chroma components can have basic processing units of the same size. The luma component and the chroma components can be referred to as "coding tree blocks" ("CTBs") in some video coding standards (e.g., H.265 / HEVC or H.266 / VVC). Any operation performed on a basic processing unit can be repeatedly performed on each of its luma component and chroma components.
[0034] Video encoding has several levels of operation, examples of which are given in Figures 2A-2B and Figures 3A-3B Detailed description in . For each level, the size of the basic processing unit may still be too large for processing and can therefore be further divided into segments referred to in this disclosure as "basic processing sub-units". In some embodiments, the basic processing sub-unit can be referred to as a "block" in some video coding standards (e.g., MPEG series, H.261, H.263 or H.264 / AVC), or as a "coding unit" ("CU") in some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). The basic processing sub-unit can have the same or smaller size as the basic processing unit. Similar to the basic processing unit, the basic processing sub-unit is also a logical unit that can include a set of different types of video data (e.g., Y, Cb, Cr and related syntax elements) stored in computer memory (e.g., in a video frame buffer). Any operation performed on the basic processing sub-unit can be repeatedly performed on each of its luminance and chrominance components. It should be noted that this division into further levels can be performed depending on processing needs. It should also be noted that different levels can use different schemes to divide the basic processing units.
[0035] For example, at the mode decision level (an example of which will be Figure 2B ), the encoder can decide what prediction mode (e.g., intra-image prediction or inter-image prediction) to use for a basic processing unit that may be too large to make such a decision. The encoder can split the basic processing unit into multiple basic processing sub-units (e.g., CUs as in H.265 / HEVC or H.266 / VVC) and decide the prediction type for each individual basic processing sub-unit.
[0036] For example, at the prediction level (an example of which will be Figure 2A (Detailed in H.265 / HEVC or H.266 / VVC), the encoder can perform prediction operations at the level of basic processing sub-units (e.g., CUs). However, in some cases, the basic processing sub-units may still be too large to process. The encoder can further split the basic processing sub-units into smaller segments (e.g., called "prediction blocks" or "PBs" in H.265 / HEVC or H.266 / VVC) at which prediction operations can be performed.
[0037] For example, at the transformation level (an example of which will be Figure 2A(detailed in H.265 / HEVC or H.266 / VVC), the encoder is able to perform transform operations on the residual basic processing sub-unit (e.g., CU). However, in some cases, the basic processing sub-unit may still be too large to be processed. The encoder is able to further split the basic processing sub-unit into smaller segments (e.g., called "transform blocks" or "TBs" in H.265 / HEVC or H.266 / VVC) at which transform operations can be performed. It should be noted that the partitioning scheme of the same basic processing sub-unit can be different at the prediction level and the transform level. For example, in H.265 / HEVC or H.266 / VVC, the prediction blocks and transform blocks of the same CU can have different sizes and numbers.
[0038] exist Figure 1 In the structure 110, the basic processing unit 112 is further divided into 3×3 basic processing sub-units, whose boundaries are shown as dotted lines. Different basic processing units of the same image can be divided into basic processing sub-units in different schemes.
[0039] In some implementations, to provide parallel processing and error resilience for video encoding and decoding, an image can be divided into regions for processing, so that the encoding or decoding process for a region of the image can depend on information that does not come from any other region of the image. In other words, each region of the image can be processed independently. By doing so, the codec can process different regions of the image in parallel, thereby improving coding efficiency. In addition, when data for a region is corrupted during processing or lost during network transmission, the codec can correctly encode or decode other regions of the same image without relying on the corrupted or lost data, thereby providing error resilience. In some video coding standards, an image can be divided into different types of regions. For example, H.265 / HEVC and H.266 / VVC provide two types of regions: "slices" and "tiles." It should also be noted that different images in the video sequence 100 can have different partitioning schemes for dividing the image into regions.
[0040] For example, in Figure 1 In FIG, the structure 110 is divided into three regions 114, 116 and 118, whose boundaries are shown as solid lines inside the structure 110. Region 114 includes four basic processing units. Each of regions 116 and 118 includes six basic processing units. It should be noted that Figure 1 The basic processing units, basic processing sub-units, and regions of the structure 110 are merely examples, and the present disclosure does not limit embodiments thereof.
[0041] Figure 2A Schematic diagram of an example encoding process 200A consistent with an embodiment of the present disclosure is shown. For example, the encoding process 200A can be performed by an encoder. Figure 2AAs shown, the encoder can encode the video sequence 202 into a video bitstream 228 according to process 200A. Figure 1 The video sequence 100 in FIG. 2 can include a set of images (referred to as “original images”) arranged in a temporal order. Figure 1 In the structure 110 in FIG. 1 , each original image of the video sequence 202 can be divided by the encoder into basic processing units, basic processing sub-units, or regions for processing. In some embodiments, the encoder can perform process 200A at the level of a basic processing unit for each original image of the video sequence 202. For example, the encoder can perform process 200A in an iterative manner, wherein the encoder can encode a basic processing unit in one iteration of process 200A. In some embodiments, the encoder can perform process 200A in parallel for regions (e.g., regions 114-118) of each original image of the video sequence 202.
[0042] exist Figure 2A In the embodiment of the present invention, the encoder can feed the basic processing unit of the original image of the video sequence 202 (referred to as the "original BPU") to the prediction stage 204 to generate prediction data 206 and prediction BPU 208. The encoder can subtract the prediction BPU 208 from the original BPU to generate a residual BPU 210. The encoder can feed the residual BPU 210 to the transform stage 212 and the quantization stage 214 to generate quantized transform coefficients 216. The encoder can feed the prediction data 206 and the quantized transform coefficients 216 to the binary coding stage 226 to generate a video bitstream 228. The components 202, 204, 206, 208, 210, 212, 214, 216, 226 and 228 can be referred to as the "forward path". During process 200A, after the quantization stage 214, the encoder can feed the quantized transform coefficients 216 to the inverse quantization stage 218 and the inverse transform stage 220 to generate a reconstructed residual BPU 222. The encoder can add the reconstruction residual BPU 222 to the prediction BPU 208 to generate a prediction reference 224, which is used in the next iteration of the process 200A in the prediction level 204. The components 218, 220, 222, and 224 of the process 200A can be referred to as the "reconstruction path." The reconstruction path can be used to ensure that both the encoder and the decoder use the same reference data for prediction.
[0043] The encoder can iteratively perform process 200A to encode each original BPU of the original image (in the forward path) and generate a prediction reference 224 for encoding the next original BPU of the original image (in the reconstruction path). After encoding all the original BPUs of the original image, the encoder can continue to encode the next image in the video sequence 202.
[0044] Referring to process 200A, an encoder can receive a video sequence 202 generated by a video capture device (e.g., a camera). As used herein, the term "receive" can refer to any act of receiving, inputting, acquiring, retrieving, obtaining, reading, accessing, or in any way inputting data.
[0045] At the prediction level 204, at the current iteration, the encoder can receive the original BPU and the prediction reference 224 and perform a prediction operation to generate prediction data 206 and a predicted BPU 208. The prediction reference 224 can be generated from the reconstruction path of the previous iteration of the process 200A. The purpose of the prediction level 204 is to reduce information redundancy by extracting the prediction data 206, which can be used to reconstruct the original BPU as the predicted BPU 208 from the prediction data 206 and the prediction reference 224.
[0046] Ideally, the predicted BPU 208 can be identical to the original BPU. However, due to non-ideal prediction and reconstruction operations, the predicted BPU 208 is typically slightly different from the original BPU. To account for such differences, after generating the predicted BPU 208, the encoder can subtract it from the original BPU to generate a residual BPU 210. For example, the encoder can subtract the values of the pixels of the predicted BPU 208 (e.g., grayscale values or RGB values) from the values of the corresponding pixels of the original BPU. As a result of this subtraction between the corresponding pixels of the original BPU and the predicted BPU 208, each pixel of the residual BPU 210 can have a residual value. Compared to the original BPU, the predicted data 206 and the residual BPU 210 can have fewer bits, but they can be used to reconstruct the original BPU without significant quality degradation. Therefore, the original BPU is compressed.
[0047] To further compress the residual BPU 210, at the transform level 212, the encoder can reduce its spatial redundancy by decomposing the residual BPU 210 into a set of two-dimensional "basis patterns," each of which is associated with a "transform coefficient." The basis patterns can have the same size (e.g., the size of the residual BPU 210). Each basis pattern can represent a frequency-varying component of the residual BPU 210 (e.g., the frequency of luminance variation). No basis pattern can be reproduced from any combination (e.g., a linear combination) of any other basis patterns. In other words, the decomposition can decompose the variation of the residual BPU 210 into the frequency domain. Such a decomposition is analogous to a discrete Fourier transform of a function, where the basis patterns are analogous to the basis functions (e.g., trigonometric functions) of the discrete Fourier transform, and the transform coefficients are analogous to the coefficients associated with the basis functions.
[0048] Different transform algorithms can use different basis patterns. Various transform algorithms can be used at transform level 212, such as, for example, discrete cosine transform, discrete sine transform, etc. The transform at transform level 212 is reversible. That is, the encoder can restore the residual BPU 210 by performing the inverse operation of the transform (referred to as an "inverse transform"). For example, to restore a pixel of the residual BPU 210, the inverse transform may be multiplying the value of the corresponding pixel of the basis pattern by the corresponding correlation coefficient and adding the products to produce a weighted sum. For video coding standards, both the encoder and decoder can use the same transform algorithm (and therefore the same basis pattern). Therefore, the encoder can record transform coefficients from which only the decoder can reconstruct the residual BPU 210 without receiving the basis pattern from the encoder. Compared to the residual BPU 210, the transform coefficients can have fewer bits, but they can be used to reconstruct the residual BPU 210 without significant quality degradation. As a result, the residual BPU 210 is further compressed.
[0049] The encoder can further compress the transform coefficients at quantization level 214. During the transform process, different basis patterns can represent different frequencies of change (e.g., the frequency of brightness changes). Because the human eye is generally better at detecting low-frequency changes, the encoder can ignore information about high-frequency changes without causing significant quality degradation in decoding. For example, at quantization level 214, the encoder can generate quantized transform coefficients 216 by dividing each transform coefficient by an integer value (called a "quantization parameter") and rounding the quotient to the nearest integer. After this operation, some transform coefficients of the high-frequency basis pattern can be converted to zero, and transform coefficients of the low-frequency basis pattern can be converted to smaller integers. The encoder can ignore zero-valued quantized transform coefficients 216, thereby further compressing the transform coefficients. The quantization process is also reversible, where the quantized transform coefficients 216 can be reconstructed into transform coefficients in the inverse operation of quantization (called "inverse quantization").
[0050] Because the encoder ignores the remainder of such divisions in rounding operations, the quantization level 214 can be lossy. Generally, the quantization level 214 can contribute the most information loss in process 200A. The greater the information loss, the fewer bits may be required to quantize the transform coefficients 216. To achieve different levels of information loss, the encoder can use different values for the quantization parameter or any other parameter of the quantization process.
[0051] At the binary coding level 226, the encoder can encode the prediction data 206 and the quantized transform coefficients 216 using a binary coding technique such as, for example, entropy coding, variable length coding, arithmetic coding, Huffman coding, context-adaptive binary arithmetic coding, or any other lossless or lossy compression algorithm. In some embodiments, in addition to the prediction data 206 and the quantized transform coefficients 216, the encoder can also encode other information at the binary coding level 226, such as, for example, the prediction mode used at the prediction level 204, the parameters of the prediction operation, the transform type at the transform level 212, the parameters of the quantization process (e.g., quantization parameters), encoder control parameters (e.g., bit rate control parameters), etc. The encoder can use the output data of the binary coding level 226 to generate a video bitstream 228. In some embodiments, the video bitstream 228 can be further packetized for network transmission.
[0052] Referring to the reconstruction path of process 200A, at an inverse quantization level 218, the encoder can perform inverse quantization on the quantized transform coefficients 216 to generate reconstructed transform coefficients. At an inverse transform level 220, the encoder can generate a reconstructed residual BPU 222 based on the reconstructed transform coefficients. The encoder can add the reconstructed residual BPU 222 to the prediction BPU 208 to generate a prediction reference 224 to be used in the next iteration of process 200A.
[0053] It should be noted that other variations of process 200A can be used to encode video sequence 202. In some embodiments, the levels of process 200A can be performed by the encoder in a different order. In some embodiments, one or more levels of process 200A can be combined into a single level. In some embodiments, a single level of process 200A can be divided into multiple levels. For example, transform level 212 and quantization level 214 can be combined into a single level. In some embodiments, process 200A can include additional levels. In some embodiments, process 200A can be omitted. Figure 2A One or more levels in .
[0054] Figure 2B A schematic diagram illustrating another example encoding process 200B consistent with embodiments of the present disclosure is shown. Process 200B can be modified from process 200A. For example, process 200B can be used by encoders conforming to hybrid video coding standards (e.g., the H.26x series). Compared to process 200A, the forward path of process 200B additionally includes a mode decision stage 230 and divides the prediction stage 204 into a spatial prediction stage 2042 and a temporal prediction stage 2044. The reconstruction path of process 200B additionally includes a loop filter stage 232 and a buffer 234.
[0055] In general, prediction techniques can be categorized into two types: spatial prediction and temporal prediction. Spatial prediction (e.g., intra-image prediction or "intra-frame prediction") can use pixels from one or more already coded neighboring BPUs in the same image to predict the current BPU. That is, the prediction reference 224 in spatial prediction can include neighboring BPUs. Spatial prediction can reduce the inherent spatial redundancy of an image. Temporal prediction (e.g., inter-image prediction or "inter-frame prediction") can use regions from one or more already coded images to predict the current BPU. That is, the prediction reference 224 in temporal prediction can include coded images. Temporal prediction can reduce the inherent temporal redundancy of an image.
[0056] Referring to process 200B, in the forward path, the encoder performs prediction operations at spatial prediction level 2042 and temporal prediction level 2044. For example, at spatial prediction level 2042, the encoder can perform intra-frame prediction. For the original BPU of the picture being encoded, the prediction reference 224 can include one or more neighboring BPUs that have been encoded (in the forward path) and reconstructed (in the reconstruction path) in the same picture. The encoder can generate the predicted BPU 208 by extrapolating the neighboring BPUs. Extrapolation techniques can include, for example, linear extrapolation or interpolation, polynomial extrapolation or interpolation, etc. In some embodiments, the encoder can perform extrapolation at the pixel level, such as by extrapolating the value of the corresponding pixel for each pixel of the predicted BPU 208. The neighboring BPUs used for extrapolation can be positioned in various directions relative to the original BPU, such as vertically (e.g., above the original BPU), horizontally (e.g., to the left of the original BPU), diagonally (e.g., to the lower left, lower right, upper left, or upper right of the original BPU), or in any direction defined in the video coding standard being used. For intra prediction, the prediction data 206 can include, for example, the location (eg, coordinates) of the used neighboring BPU, the size of the used neighboring BPU, extrapolated parameters, the direction of the used neighboring BPU relative to the original BPU, and the like.
[0057] As another example, at the temporal prediction level 2044, the encoder can perform inter-frame prediction. For the original BPU of the current image, the prediction reference 224 can include one or more images (referred to as "reference images") that have been encoded (in the forward path) and reconstructed (in the reconstruction path). In some embodiments, the reference images can be encoded and reconstructed on a BPU-by-BPU basis. For example, the encoder can add the reconstructed residual BPU 222 to the prediction BPU 208 to generate a reconstructed BPU. When all reconstructed BPUs for the same image have been generated, the encoder can generate the reconstructed image as the reference image. The encoder can perform a "motion estimation" operation to search for a matching region within a range of the reference image (referred to as a "search window"). The position of the search window in the reference image can be determined based on the position of the original BPU in the current image. For example, the search window can be centered at a location in the reference image with the same coordinates as the original BPU in the current image and can extend outward by a predetermined distance. When the encoder identifies (e.g., using a pixel recursion algorithm, a block matching algorithm, etc.) an area similar to the original BPU in the search window, the encoder can determine such an area as a matching region. The matching region can have a different size than the original BPU (e.g., smaller, equal, larger, or with a different shape). Because the reference image and the current image are temporally separated on the timeline (e.g., as Figure 1 ), so the matching area can be considered to "move" to the position of the original BPU over time. The encoder can record the direction and distance of such movement as a "motion vector". When using multiple reference images (e.g., Figure 1 When the encoder searches for matching regions and determines its associated motion vector for each reference image, the encoder can assign weights to the pixel values of the matching regions of the corresponding matching reference images.
[0058] Motion estimation can be used to identify various types of motion, such as, for example, translation, rotation, zoom, etc. For inter-frame prediction, the prediction data 206 can include, for example, the location (e.g., coordinates) of the matching region, the motion vector associated with the matching region, the number of reference images, weights associated with the reference images, etc.
[0059] To generate the predicted BPU 208, the encoder can perform a "motion compensation" operation. Motion compensation can be used to reconstruct the predicted BPU 208 based on the prediction data 206 (e.g., motion vectors) and the prediction reference 224. For example, the encoder can move the matching area of the reference image according to the motion vector, where the encoder can predict the original BPU of the current image. When using multiple reference images (e.g., Figure 1When the encoder is performing a motion vector adjustment on the matching region of the reference image 106, the encoder can move the matching region of the reference image according to the corresponding motion vector and the average pixel value of the matching region. In some embodiments, if the encoder has assigned weights to the pixel values of the matching region of the corresponding matching reference image, the encoder can add the weighted sum of the pixel values of the moved matching region.
[0060] In some embodiments, inter-frame prediction can be unidirectional or bidirectional. Unidirectional inter-frame prediction can use one or more reference pictures in the same temporal direction relative to the current picture. For example, Figure 1 The picture 104 in is a unidirectional inter-frame predicted picture, where the reference picture (i.e., picture 102) precedes the picture 104. Bidirectional inter-frame prediction can use one or more reference pictures in two temporal directions relative to the current picture. For example, Figure 1 Picture 106 in is a bi-directionally inter-predicted picture, where the reference pictures (ie, pictures 104 and 108 ) are relative to picture 104 in both temporal directions.
[0061] Still referring to the forward path of process 200B, after spatial prediction level 2042 and temporal prediction level 2044, at mode decision level 230, the encoder can select a prediction mode (e.g., one of intra prediction or inter prediction) for the current iteration of process 200B. For example, the encoder can perform a rate-distortion optimization technique, wherein the encoder can select a prediction mode to minimize a cost function based on the bit rate of a candidate prediction mode and the distortion of a reconstructed reference image under the candidate prediction mode. Depending on the selected prediction mode, the encoder can generate a corresponding predicted BPU 208 and predicted data 206.
[0062] In the reconstruction path of process 200B, if intra-prediction mode has been selected in the forward path, after generating the prediction reference 224 (e.g., the current BPU that has been encoded and reconstructed in the current picture), the encoder can feed the prediction reference 224 directly to the spatial prediction stage 2042 for later use (e.g., for extrapolation of the next BPU of the current picture). If inter-prediction mode has been selected in the forward path, after generating the prediction reference 224 (e.g., the current picture in which all BPUs have been encoded and reconstructed), the encoder can feed the prediction reference 224 to the loop filter stage 232, where the encoder can apply a loop filter to the prediction reference 224 to reduce or eliminate distortion (e.g., blocking artifacts) introduced by inter-prediction. The encoder can apply various loop filter techniques at the loop filter stage 232, such as, for example, deblocking, sample adaptive offset, adaptive loop filter, etc. The loop-filtered reference pictures can be stored in a buffer 234 (or "decoded picture buffer") for later use (e.g., to be used as inter-frame prediction reference pictures for future pictures of the video sequence 202). The encoder can store one or more reference pictures in the buffer 234 for use at the temporal prediction level 2044. In some embodiments, the encoder can encode the parameters of the loop filter (e.g., loop filter strength) as well as the quantized transform coefficients 216, the prediction data 206, and other information at a binary coding level 226.
[0063] Figure 3A Schematic diagram illustrating an example decoding process 300A consistent with an embodiment of the present disclosure. Process 300A may be Figure 2A In some embodiments, process 300A can be similar to the reconstruction path of process 200A. The decoder can decode the video bitstream 228 into a video stream 304 according to process 300A. Video stream 304 can be very similar to video sequence 202. However, due to the compression process and decompression process (e.g., Figures 2A-2B In general, the video stream 304 is not identical to the video sequence 202. Figures 2A-2B Similar to processes 200A and 200B in
[0045] , the decoder can perform process 300A at the basic processing unit (BPU) level for each picture encoded in the video bitstream 228. For example, the decoder can perform process 300A in an iterative manner, where the decoder can decode a basic processing unit in one iteration of process 300A. In some embodiments, the decoder can perform process 300A in parallel for regions (e.g., regions 114-118) of each picture encoded in the video bitstream 228.
[0064] exist Figure 3AIn the process 300A, the decoder can feed a portion of the video bitstream 228 associated with the basic processing unit of the coded picture (referred to as a "coded BPU") to the binary decoding level 302. At the binary decoding level 302, the decoder can decode the portion into prediction data 206 and quantized transform coefficients 216. The decoder can feed the quantized transform coefficients 216 to the inverse quantization level 218 and the inverse transform level 220 to generate a reconstructed residual BPU 222. The decoder can feed the prediction data 206 to the prediction level 204 to generate the prediction BPU 208. The decoder can add the reconstructed residual BPU 222 to the prediction BPU 208 to generate a prediction reference 224. In some embodiments, the prediction reference 224 can be stored in a buffer (e.g., a decoded picture buffer in computer memory). The decoder can feed the prediction reference 224 to the prediction level 204 for use in performing a prediction operation in the next iteration of the process 300A.
[0065] The decoder can iteratively perform process 300A to decode each coded BPU of the coded picture and generate prediction reference 224 for encoding the next coded BPU of the coded picture. After decoding all coded BPUs of the coded picture, the decoder can output the picture to video stream 304 for display and continue decoding the next coded picture in the video bitstream 228.
[0066] At the binary decoding level 302, the decoder can perform the inverse operation of the binary coding technique used by the encoder (e.g., entropy coding, variable length coding, arithmetic coding, Huffman coding, context-adaptive binary arithmetic coding, or any other lossless compression algorithm). In some embodiments, in addition to the prediction data 206 and the quantized transform coefficients 216, the decoder can also decode other information at the binary decoding level 302, such as, for example, the prediction mode, parameters of the prediction operation, the transform type, parameters of the quantization process (e.g., quantization parameters), encoder control parameters (e.g., bitrate control parameters), etc. In some embodiments, if the video bitstream 228 is transmitted in packets over the network, the decoder can depacketize the video bitstream 228 before feeding it to the binary decoding level 302.
[0067] Figure 3B A schematic diagram illustrating another example decoding process 300B consistent with embodiments of the present disclosure is shown. Process 300B can be modified from process 300A. For example, process 300B can be used by decoders compliant with hybrid video coding standards (e.g., the H.26x series). Compared to process 300A, process 300B additionally divides prediction level 204 into spatial prediction level 2042 and temporal prediction level 2044, and additionally includes loop filter level 232 and buffer 234.
[0068] In process 300B, for a coding basic processing unit (referred to as a "current BPU") of a coded picture being decoded (referred to as a "current picture"), the prediction data 206 decoded by the decoder from the binary decoding level 302 can include various types of data, depending on what prediction mode was used by the encoder to encode the current BPU. For example, if the encoder used intra-frame prediction to encode the current BPU, the prediction data 206 can include a prediction mode indicator (e.g., a flag value) indicating intra-frame prediction, parameters for the intra-frame prediction operation, etc. The parameters for the intra-frame prediction operation can include, for example, the location (e.g., coordinates) of one or more neighboring BPUs used as reference, the size of the neighboring BPUs, parameters for extrapolation, the orientation of the neighboring BPUs relative to the original BPU, etc. For another example, if the encoder used inter-frame prediction to encode the current BPU, the prediction data 206 can include a prediction mode indicator (e.g., a flag value) indicating inter-frame prediction, parameters for the inter-frame prediction operation, etc. The parameters of the inter-frame prediction operation can include, for example, the number of reference images associated with the current BPU, the weights associated with the reference images respectively, the positions (e.g., coordinates) of one or more matching regions in the corresponding reference images, one or more motion vectors associated with the matching regions respectively, and the like.
[0069] Based on the prediction mode indicator, the decoder can decide whether to perform spatial prediction (e.g., intra prediction) at the spatial prediction level 2042 or temporal prediction (e.g., inter prediction) at the temporal prediction level 2044. Figure 2B The details of performing such spatial prediction or temporal prediction are described in detail and will not be repeated below. After performing such spatial prediction or temporal prediction, the decoder can generate a prediction BPU 208. The decoder can add the prediction BPU 208 and the reconstructed residual BPU 222 to generate a prediction reference 224, as shown in FIG. Figure 3A Described in .
[0070] In process 300B, the decoder can feed the prediction reference 224 to the spatial prediction level 2042 or the temporal prediction level 2044 for performing a prediction operation in the next iteration of process 300B. For example, if intra prediction is used to decode the current BPU at the spatial prediction level 2042, then after generating the prediction reference 224 (e.g., the decoded current BPU), the decoder can feed the prediction reference 224 directly to the spatial prediction level 2042 for later use (e.g., for extrapolation of the next BPU of the current picture). If inter prediction is used to decode the current BPU at the temporal prediction level 2044, then after generating the prediction reference 224 (e.g., a reference picture in which all BPUs have been decoded), the encoder can feed the prediction reference 224 to the loop filter level 232 to reduce or eliminate distortion (e.g., blocking artifacts). The decoder can Figure 2B 2044 . In some embodiments, when the prediction mode indicator of the prediction data 206 indicates that inter prediction is used to encode the current BPU, the prediction data can further include parameters of the loop filter (e.g., loop filter strength).
[0071] Figure 4 is a block diagram of an example device 400 for encoding or decoding video consistent with embodiments of the present disclosure. Figure 4 As shown, the device 400 can include a processor 402. When the processor 402 runs the instructions described herein, the device 400 can become a special-purpose machine for video encoding or decoding. The processor 402 can be any type of circuit system capable of manipulating or processing information. For example, the processor 402 can include any combination of any number of the following: a central processing unit (or "CPU"), a graphics processing unit (or "GPU"), a neural processing unit ("NPU"), a microcontroller unit ("MCU"), an optical processor, a programmable logic controller, a microcontroller, a microprocessor, a digital signal processor, an intellectual property (IP) core, a programmable logic array (PLA), a programmable array logic (PAL), a general array logic (GAL), a complex programmable logic device (CPLD), a field programmable gate array (FPGA), a system on a chip (SoC), an application-specific integrated circuit (ASIC), etc. In some embodiments, the processor 402 can also be a group of processors grouped into a single logical component. For example, as Figure 4As shown, processor 402 can include multiple processors, including processor 402a, processor 402b, and processor 402n.
[0072] The device 400 can also include a memory 404 configured to store data (eg, instruction sets, computer code, intermediate data, etc.). Figure 4 As shown, the stored data can include program instructions (e.g., program instructions for implementing the various levels in process 200A, 200B, 300A, or 300B) and data for processing (e.g., video sequence 202, video bitstream 228, or video stream 304). Processor 402 can access the program instructions and the data for processing (e.g., via bus 410) and execute the program instructions to perform operations or manipulations on the data for processing. Memory 404 can include high-speed random access storage or non-volatile storage. In some embodiments, memory 404 can include any combination of any number of the following: random access memory (RAM), read-only memory (ROM), optical disk, magnetic disk, hard disk drive, solid-state drive, flash drive, secure digital (SD) card, memory stick, compact flash (CF) card, etc. Memory 404 can also be a group of memories (e.g., multiple memories) grouped into a single logical component. Figure 4 not shown).
[0073] The bus 410 may be a communication means for transferring data between components inside the device 400 , such as an internal bus (eg, a CPU-memory bus), an external bus (eg, a Universal Serial Bus port, a Peripheral Component Interconnect Express port), and the like.
[0074] For ease of explanation and unambiguousness, the processor 402 and other data processing circuitry are collectively referred to as "data processing circuitry" in this disclosure. The data processing circuitry can be implemented entirely as hardware or as a combination of software, hardware, or firmware. In addition, the data processing circuitry can be a single stand-alone module or can be fully or partially integrated into any other component of the device 400.
[0075] The device 400 can also include a network interface 406 to provide wired or wireless communication with a network (e.g., the Internet, an intranet, a local area network, a mobile communication network, etc.). In some embodiments, the network interface 406 can include any number or combination of the following: a network interface controller (NIC), a radio frequency (RF) module, a transponder, a transceiver, a modem, a router, a gateway, a wired network adapter, a wireless network adapter, a Bluetooth adapter, an infrared adapter, a near field communication ("NFC") adapter, a cellular network chip, etc.
[0076] In some embodiments, the device 400 can optionally further include a peripheral interface 408 to provide a connection to one or more peripheral devices. Figure 4 As shown, peripheral devices can include, but are not limited to, a cursor control device (e.g., a mouse, touchpad, or touch screen), a keyboard, a display (e.g., a cathode ray tube display, a liquid crystal display, or a light emitting diode display), a video input device (e.g., a camera or an input interface coupled to a video file), etc.
[0077] It should be noted that a video codec (e.g., a codec that performs process 200A, 200B, 300A, or 300B) can be implemented as any combination of software or hardware modules in device 400. For example, some or all levels of process 200A, 200B, 300A, or 300B can be implemented as one or more software modules of device 400, such as program instructions that can be loaded into memory 404. As another example, some or all levels of process 200A, 200B, 300A, or 300B can be implemented as one or more hardware modules of device 400, such as dedicated data processing circuitry (e.g., FPGA, ASIC, NPU, etc.).
[0078] The JVET Self-Organizing Group (AHG) Lossless and Near-Lossless Coding Tools (AHG18) has released lossless software based on the VVC Test Model 6.0 (VTM-6.0). This software introduces a coding unit (CU)-level flag called cu_transquant_bypass_flag. When cu_transquant_bypass_flag = 1, it means that the transform and quantization of the prediction residual signal of the CU is skipped and the residual of the CU is directly coded in a lossless manner.
[0079] Similar to lossy VVC, current lossless codecs use two types of residual coding techniques—transform skip (TS) residual coding and transform residual coding. TS residual coding is selected if one of the following two conditions is met: 1) intra_bdpcm_flag has a value equal to 1, or 2) transform_skip_flag has a value equal to 1. If both of the above conditions are false, transform residual coding is used.
[0080] Furthermore, in current lossless codecs, if Block Differential Pulse Code Modulation (BDPCM) is selected, transform skip (TS) residual coding is used, otherwise, transform residual coding is used.
[0081] However, traditionally, both the transform residual coding technique and the TS residual coding technique in VVC6 are designed for lossy codecs. The statistical characteristics of the residual coefficients differ depending on whether lossy or lossless coding is used. Therefore, in order to improve coding efficiency, it is desirable to improve existing residual coding methods to perform lossless coding. The present disclosure provides various methods for selecting an appropriate residual coding technique to perform lossless coding.
[0082] According to some embodiments, a residual coding method for a video signal can include TS residual coding and transform residual coding.
[0083] If the following two conditions are met, TS residual coding can be selected. The two conditions can include that the video signal is a luminance component and intra_bdpcm_flag or transform_skip_flag is 1.
[0084] If either of the above two conditions is false, transform residual coding can be selected.
[0085] In some embodiments, transform skipping and BDPCM blocks can be allowed to select between TS residual coding and transform residual coding. The selection can be controlled by signaling additional flags. Additional flags can be signaled at the CU level, slice level, picture level, or in a picture parameter set (PPS) or SPS.
[0086] For example, cu_transquant_bypass_flag may be a signal at the CU level and used to select one of two types of residual coding techniques for lossless coding. If cu_transquant_bypass_flag is 1, transform residual coding is used regardless of the value of intra_bdpcm_flag or transform_skip_flag. Figure 5 Table 1 in shows an exemplary transform unit syntax table, where syntax elements shown in dashed boxes are proposed to implement the disclosed embodiments.
[0087] According to some embodiments, a sequence parameter set (SPS) level flag "sps_bdpcm_transform_residual_coding_flag" is used to signal the residual coding technique used by the luma BDPCM block. Specifically, sps_bdpcm_transform_residual_coding_flag equal to 1 specifies that if BDPCM is applied to the current luma block (e.g., intra_bdpcm_flag=1), the current luma block uses transform residual coding. Furthermore, sps_bdpcm_transform_residual_coding_flag equal to 0 specifies that if BDPCM is applied to the current luma block (e.g., intra_bdpcm_flag=1), the current luma block uses TS residual coding. Additionally, when sps_bdpcm_transform_residual_coding_flag is not present, it is inferred to be equal to 0.
[0088] In these embodiments, sps_bdpcm_transform_residual_coding_flag is signaled based on a preset condition. For example, sps_bdpcm_transform_residual_coding_flag is signaled when sps_bdpcm_enabled_flag is 1.
[0089] As another example, if sps_bdpcm_enabled_flag and transquant_bypass_enabled_flag are both 1, sps_bdpcm_transform_residual_coding_flag is signaled. Figure 6 Table 2 in FIG. 1 shows an exemplary SPS syntax table for self-signaling sps_bdpcm_transform_residual_coding_flag based on sps_bdpcm_enabled_flag and transquant_bypass_enabled_flag, wherein the syntax elements shown in the dashed box are proposed to implement the disclosed embodiment. Figure 6), sps_bdpcm_transform_residual_coding_flag is equal to 1 to specify that if BDPCM is applied to the current luma block (e.g., intra_bdpcm_flag=1) and the current block is in transform and quantization bypass mode (e.g., cu_transquant_bypass_flag=1), the current luma block uses transform residual coding. In addition, sps_bdpcm_transform_residual_coding_flag is equal to 0 to specify that if BDPCM is applied to the current luma block (e.g., intra_bdpcm_flag=1) and the current block is in transform and quantization bypass mode (e.g., cu_transquant_bypass_flag=1), the current luma block uses TS residual coding.
[0090] It is contemplated that although the above description uses luma blocks as an example to describe the residual encoding process, the disclosed method is also readily applicable to residual encoding of chroma blocks.
[0091] In some embodiments, the selection of the residual coding method can also be signaled at other levels, such as the PPS, picture header, or slice header. For example, the selection of TS residual coding can be controlled at the slice level. In that case, a slice-level flag is provided to enable / disable the TS residual coding method. The semantics of the slice-level flag are given below.
[0092] slice_ts_residual_coding_disabled_flag equal to 1 specifies that the residual_coding() syntax structure is used to parse the residual samples of transform skip and BDPCM blocks for the current slice. slice_ts_residual_coding_disabled_flag equal to 0 specifies that the residual_ts_coding() syntax structure is used to parse the residual samples of transform skip blocks for the current slice. When slice_ts_residual_coding_disabled_flag is not present, it is inferred to be equal to 0.
[0093] Figure 7 Table 3 in illustrates an exemplary slice header syntax, where syntax elements shown in dashed boxes are proposed to implement the disclosed embodiments. Figure 8Table 4 in illustrates an exemplary transform block syntax, where the syntax elements shown in the dashed box are proposed to implement the disclosed embodiments. In some embodiments, if the value slice_ts_residual_coding_disabled_flag is equal to 1, the transform skip and BDPCM blocks use the transformed residual coding method instead of the TS residual coding method.
[0094] According to some embodiments of the present disclosure, the signaling of the position of the last significant coefficient can be omitted for transform residual coding. In the transform residual coding method of VVC6, the position of the last significant coefficient is signaled at the start of residual coding of the transform block. In contrast, in the disclosed method, if cu_transquant_bypass_flag = 1, the position of the last significant coefficient is not signaled, but instead is inferred as the right bottom position of the transform block. If cu_transquant_bypass_flag = 0, the position of the last significant coefficient is signaled in the same way as in VVC 6.
[0095] In transform residual coding of VVC 6, the coded_sub_block_flag of the first and last sub-blocks is not signaled and is inferred to be 1. In the disclosed method, if cu_transquant_bypass_flag=1, the coded_sub_block_flag of all sub-blocks is signaled. However, if the coded_sub_block_flag of all previously coded sub-blocks is zero, the coded_sub_block_flag of the first sub-block is inferred to be 1. Similar to VVC 6, in the disclosed method, if cu_transquant_bypass_flag=0, the first and last sub-blocks are not signaled and are inferred to be 1.
[0096] In the transform residual coding of VVC 6, since the position of the last significant coefficient is always signaled and the last significant coefficient is always non-zero, there is no need to signal the sig_coeff_flag of the last significant coefficient and infer it to be 1. In contrast, in the disclosed method, when cu_transquant_bypass_flag=1, the last significant coefficient is always the right bottom coefficient and it can be zero or non-zero. Therefore, if cu_transquant_bypass_flag=1, the disclosed method can signal the sig_coeff_flag of the position of the last significant coefficient. However, if cu_transquant_bypass_flag=0, the disclosed method can signal the sig_coeff_flag in the same way as the transform residual coding of VVC 6.
[0097] Figure 9 Table 5 in shows an exemplary transform residual coding syntax table for signaling the position of the last significant coefficient according to the disclosed method. Figure 9 ), the syntax elements shown in the dashed box are proposed changes to the transform residual coding syntax of VVC 6.
[0098] According to some embodiments of the present disclosure, regardless of the value of cu_transquant_bypass_flag, signaling of the position of the last significant coefficient can be omitted for transform residual coding.
[0099] Figure 10 is a flow chart of an exemplary computer-implemented method 1000 for processing a video signal using residual coding consistent with embodiments of the present disclosure. In some embodiments, the method 1000 can be implemented by a codec (e.g., using Figures 2A-2B The encoding process 200A or 200B of the encoder or the use of Figures 3A-3B The codec can be implemented as one or more software or hardware components of a device (e.g., device 400) for encoding or transcoding a video sequence. In some embodiments, the video sequence can be an uncompressed video sequence (e.g., video sequence 202) or a compressed video sequence (e.g., video stream 304) being decoded. In some embodiments, the video sequence can be a monitoring video sequence that can be monitored by a monitoring device (e.g., processor 402) associated with a processor of the device. Figure 4The video sequence can be captured by a video input device (e.g., a video input device). The video sequence can include multiple images. The device can perform method 1000 at the image level. For example, the device can process one image at a time during method 1000. For another example, the device can process multiple images at a time during method 1000. Method 1000 can include the following steps.
[0100] At step 1002, control information for encoding a video sequence can be received. The control information can include flags that can be signaled at different levels of the video sequence. For example, the flags can be signaled at the CU level, the slice level, the picture level, or in a picture parameter set (PPS) or SPS.
[0101] In step 1004, an encoding method for encoding a prediction residual signal of a coding block in a video sequence can be determined as one of transform residual coding and transform skip residual coding based on the control information.
[0102] In some embodiments, control information can be signaled at the coding unit level of the video sequence, and the control information includes a first flag indicating whether to skip transform and quantization of the prediction residual signal of the coding block. For example, the first flag can be cu_transquant_bypass_flag. In response to the first flag satisfying the first condition, the encoding method can be determined to be transform residual coding. As shown in Table 1 ( Figure 5 ), if the value of cu_transquant_bypass_flag is "1", transform residual coding is used regardless of the value of intra_bdpcm_flag or transform_skip_flag. Therefore, the first condition can include the value of the first flag being "1". It should be appreciated that transform residual coding is performed by a lossless codec. If the value of cu_transquant_bypass_flag is "0", both transform skip and BDPCM blocks can use TS residual coding.
[0103] In some embodiments, the control information may also include a second flag and a third flag. For example, the second flag may be intra_bdpcm_flag and the third flag may be transform_skip_flag. When the first flag does not meet the first condition, the encoding method may be determined based on the value of the second flag or the third flag. If intra_bdpcm_flag is equal to "1", the encoding method may be BDPCM. If transform_skip_flag is equal to "1", the encoding method may be transform skip coding.
[0104] In some embodiments, in addition to being signaled at the coding unit level, control information can also be signaled in the sequence parameter set (SPS) of the video sequence, and the control information can include a fourth flag and a fifth flag. For example, the fourth flag can be sps_bdpcm_transform_residual_coding_flag, and the fifth flag can be intra_bdpcm_flag. As shown in Table 2 ( Figure 6 ), in response to the fourth flag and the fifth flag being equal to the first value (e.g., "1"), the encoding method can be determined as transform residual encoding. And in response to the fourth flag being equal to the second value (e.g., "0") and the fifth flag being equal to the first value (e.g., "1"), the encoding method can be determined as transform skip residual encoding.
[0105] In some embodiments, a fourth flag can be signaled in the control information when block differential pulse code modulation (BDPCM) is enabled for the video sequence. In some embodiments, a fourth flag can be signaled in the control information when BDPCM is enabled for the video sequence and transform and quantization bypass mode is enabled for the coding block.
[0106] In some embodiments, control information can be signaled at the slice level for the slices of the video sequence. And the control information can include a sixth flag (e.g., slice_ts_residual_coding_disabled_flag). As shown in Table 3 ( Figure 7 ) and Table 4( Figure 8 ), when the value of the sixth flag is the first value, the encoding method for encoding the prediction residual signal of the coding block can be determined as transform skip residual coding. It should be understood that the coding block is associated with the slice for which the control information is signaled at the slice level.
[0107] In some embodiments, a non-transitory computer-readable storage medium comprising instructions is also provided, and the instructions can be executed by an apparatus (such as the disclosed encoder and decoder) for performing the above-described method. Common forms of non-transitory media include, for example, a floppy disk, a flexible disk, a hard disk, a solid-state drive, a magnetic tape or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with a hole pattern, RAM, PROM and EPROM, FLASH-EPROM or any other flash memory, NVRAM, a cache, a register, any other memory chip or cartridge and networked versions thereof. The apparatus may include one or more processors (CPUs), input / output interfaces, a network interface, and / or memory.
[0108] The embodiments may be further described using the following terms: 1. A computer-implemented method comprising: receiving control information for encoding a video sequence; and Based on the control information, a coding method for coding a prediction residual signal of a coding block in the video sequence is determined, where the coding method is one of transform residual coding and transform skip residual coding. 2. The method of clause 1, wherein the control information is signaled at a coding unit level of the video sequence, wherein: The control information includes a first flag indicating whether to skip transformation and quantization of the prediction residual signal of the coding block. 3. The method of clause 2, wherein determining the encoding method based on the control information further comprises: In response to the first flag satisfying a first condition, the encoding method is determined to be the transform residual encoding. 4. The method according to clause 3, wherein: The first condition includes that the value of the first flag is "1", and The transform residual encoding is performed by a lossless codec. 5. The method according to clause 2, wherein: The control information further includes a second flag and a third flag, and Determining the encoding method based on the control information further includes: In response to the first flag not satisfying a first condition, the encoding method is determined based on a value of the second flag or the third flag. 6. The method of clause 1, wherein the control information is signaled in a sequence parameter set for the video sequence, wherein: The control information includes a fourth flag and a fifth flag, and Determining the encoding method based on the control information further includes: In response to the fourth flag and the fifth flag having the same value, determining the encoding method as the transform residual encoding; and In response to the fourth flag and the fifth flag having different values, the encoding method is determined to be the transform skip residual encoding. 7. The method according to clause 6, further comprising: The fourth flag is signaled in the control information in response to block differential pulse code modulation (BDPCM) being enabled for the video sequence. 8. The method according to clause 6, further comprising: The fourth flag is signaled in the control information in response to the BDPCM being enabled for the video sequence and a transform and quantization bypass mode being enabled for the coding block. 9. The method of clause 1, wherein the control information is signaled at a slice level for slices of the video sequence, wherein: The control information includes a sixth flag, and Determining the encoding method based on the control information further includes: In response to the value of the sixth flag being the first value, the encoding method is determined to be the transform skip residual encoding. 10. The method of clause 9, wherein the coding block is associated with the slice. 11. A system for processing a video signal using residual coding, comprising: a memory for storing an instruction set; and at least one processor configured to execute the set of instructions to cause the system to perform: receiving control information for encoding a video sequence; and Based on the control information, a coding method for coding a prediction residual signal of a coding block in the video sequence is determined, where the coding method is one of transform residual coding and transform skip residual coding. 12. The system of clause 11, wherein the control information is signaled at a coding unit level of the video sequence, wherein: The control information includes a first flag indicating whether to skip transformation and quantization of the prediction residual signal of the coding block. 13. The system of clause 12, wherein upon determining the encoding method based on the control information, the at least one processor is configured to execute the set of instructions to cause the system to further perform: In response to the first flag satisfying a first condition, the encoding method is determined to be the transform residual encoding. 14. The system of clause 13, wherein: The first condition includes that the value of the first flag is "1", and The transform residual encoding is performed by a lossless codec. 15. The system of clause 12, wherein: The control information further includes a second flag and a third flag, and When determining the encoding method based on the control information, the at least one processor is configured to execute the instruction set so as to cause the system to further perform: In response to the first flag not satisfying a first condition, the encoding method is determined based on a value of the second flag or the third flag. 16. The system of clause 11, wherein the control information is signaled in a sequence parameter set for the video sequence, wherein: The control information includes a fourth flag and a fifth flag, and When determining the encoding method based on the control information, the at least one processor is configured to execute the instruction set so as to cause the system to further perform: In response to the fourth flag and the fifth flag having the same value, determining the encoding method as the transform residual encoding; and In response to the fourth flag and the fifth flag having different values, the encoding method is determined to be the transform skip residual encoding. 17. The system of clause 16, wherein the at least one processor is configured to execute the set of instructions to cause the system to further perform: The fourth flag is signaled in the control information in response to enabling the BDPCM for the video sequence. 18. The system of clause 16, wherein the at least one processor is configured to execute the set of instructions to cause the system to further perform: The fourth flag is signaled in the control information in response to the BDPCM being enabled for the video sequence and a transform and quantization bypass mode being enabled for the coding block. 19. The system of clause 11, wherein the control information is signaled at a slice level for slices of the video sequence, wherein: The control information includes a sixth flag, and When determining the encoding method based on the control information, the at least one processor is configured to execute the instruction set so as to cause the system to further perform: In response to the value of the sixth flag being the first value, the encoding method is determined to be the transform skip residual encoding. 20. A non-transitory computer-readable medium storing instructions executable by at least one processor of a computer system, wherein execution of the instructions causes the computer system to perform a method comprising: receiving control information for encoding a video sequence; and Based on the control information, a coding method for coding a prediction residual signal of a coding block in the video sequence is determined, where the coding method is one of transform residual coding and transform skip residual coding.
[0109] It should be noted that relational terms such as "first" and "second" herein are used only to distinguish one entity or operation from another entity or operation, and do not require or imply any actual relationship or order between these entities or operations. In addition, the words "comprise," "have," "contain," and "include," and other similar forms are intended to be equivalent in meaning and open-ended, in that the one or more items immediately following any of these words are not intended to be an exhaustive list of one or more such items, or to be limited to only the one or more items listed.
[0110] It should be understood that the above embodiments can be implemented by hardware or software (program code) or a combination of hardware and software. If implemented by software, it can be stored in the above-mentioned computer-readable medium. The software can execute the disclosed method when run by a processor. The computing unit and other functional units described in the present invention can be implemented by hardware or software or a combination of hardware and software. Those of ordinary skill in the art will also understand that multiple modules / units in the above-mentioned modules / units can be combined into one module / unit, and each of the above-mentioned modules / units can be further divided into multiple sub-modules / sub-units.
[0111] In the foregoing description, embodiments have been described with reference to many specific details, which can vary from implementation to implementation. Certain adaptations and modifications can be made to the described embodiments. Other embodiments may be apparent to those skilled in the art from consideration of the description and practice of the invention disclosed herein. This description and examples are intended to be considered as merely exemplary, with the true scope and spirit of the invention being indicated by the appended claims. The order of the steps shown in the figures is also intended to be for illustrative purposes only and is not intended to be limited to any particular order of steps. Therefore, those skilled in the art will appreciate that these steps can be performed in different orders while implementing the same method.
[0112] In the drawings and the specification, exemplary embodiments have been disclosed. However, many variations and modifications can be made to these embodiments. Therefore, although specific terms are employed, they are used only in a generic and descriptive sense and not for purposes of limitation.
Claims
1. A method for decoding a video bitstream, comprising: receiving control information for decoding a bitstream into a video sequence, wherein the control information is received in the bitstream and comprises a flag, and determining, based on the control information, a residual coding method for encoding a chroma Cb component transform skip block in the slice, the residual coding method being one of transform residual coding and transform skip residual coding; In which, in response to the value of the flag being 0, the residual coding method is determined to be the transform skip residual coding.
2. The method according to claim 1, characterized in that The flag is slice_ts_residual_coding_disabled_flag.
3. A method for encoding a video sequence, comprising: sending control information for encoding a video sequence, wherein the control information is signaled in a bitstream and comprises a flag, and determining, based on the control information, a residual coding method for encoding a chroma Cb component transform skip block in the slice, the residual coding method being one of transform residual coding and transform skip residual coding; In which, in response to the value of the flag being 0, the residual coding method is determined to be the transform skip residual coding.
4. The method according to claim 3, characterized in that The flag is slice_ts_residual_coding_disabled_flag.
5. A non-transitory computer-readable storage medium storing an instruction set and a bitstream, wherein the instruction set is executable by one or more processors to generate a method for encoding a video sequence to generate the bitstream, the method comprising: sending control information for encoding a video sequence, wherein the control information is signaled in a bitstream and comprises a flag, and determining, based on the control information, a residual coding method for encoding a chroma Cb component transform skip block in the slice, the residual coding method being one of transform residual coding and transform skip residual coding; In which, in response to the value of the flag being 0, the residual coding method is determined to be the transform skip residual coding.
6. The method according to claim 5, characterized in that The flag is slice_ts_residual_coding_disabled_flag.