Symbolic data hiding for video recording
Patent Information
- Application Number
- CN202180023861.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-03-24
- Filing Date
- 2021-03-24
- Publication Date
- 2026-10-20
- Estimated Expiration
- 2041-03-24
Smart Images

Figure CN115349228B_ABST
Abstract
Description
[0001] Cross-references to related applications
[0002] This disclosure claims priority to U.S. Provisional Patent Application No. 62 / 994,239, filed March 24, 2020, which is incorporated herein by reference in its entirety. Technical Field
[0003] The present disclosure relates generally to video data processing, and more specifically, to residual coding of video data. Background Technology
[0004] Video is a set of still images (or "frames") that capture visual information. To reduce storage memory and transmission bandwidth, video can be compressed before storage or transmission and then 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, the most common being prediction, transform, quantization, entropy coding, and in-loop filtering. Standardization organizations have developed video coding standards, such as the High Efficiency Video Coding (HEVC / H.265) standard, the Universal Video Coding (VVC / H.266) standard, and the AVS standard, specifying particular video coding formats. As more and more advanced video coding techniques are adopted in video standards, the coding efficiency of new video coding standards is becoming increasingly higher. Summary of the Invention
[0005] This disclosure provides a video data encoding method, the method comprising: receiving a video frame for residual coding; determining whether to encode the video frame according to a transform block-level transform skip mode; and, in response to determining that the video frame is to be encoded according to the transform skip mode, disabling symbolic data hiding for the residual coding.
[0006] This disclosure also provides a video data encoding method, the method comprising: receiving a video frame for residual coding; determining whether to encode the video frame according to a block differential pulse code modulation mode; and, in response to determining that the video frame is encoded according to a block differential pulse code modulation mode, disabling symbol data hiding for the residual coding.
[0007] This disclosure also provides a video data encoding method, the method comprising: receiving a video frame for residual coding; determining whether to encode the video frame by skipping the residual coding mode according to a stripe-level transform; and, in response to determining that the video frame is not encoded by skipping the residual coding mode according to the stripe-level transform, disabling symbolic data hiding for the residual coding.
[0008] This disclosure also provides a video data encoding method, the method comprising: receiving a video frame for residual coding; determining whether symbolic data hiding is enabled at the image level of the video frame and whether transform skip residual coding is disabled at the stripe level of the video frame; and in response to determining that symbolic data hiding is enabled at the image level of the video frame and transform skip residual coding is enabled at the stripe level of the video frame, enabling symbolic data hiding at the stripe level of the video frame.
[0009] This disclosure also provides a method for encoding video data, the method comprising: receiving a video frame for residual coding; determining whether symbolic data hiding is enabled at the image level of the video frame; in response to determining that symbolic data hiding is enabled at the image level of the video frame, enabling symbolic data hiding at the stripe level of the video frame; determining whether symbolic data hiding is disabled at the stripe level of the video frame; and in response to determining that symbolic data hiding is disabled at the stripe level of the video frame, disabling transform skip residual coding at the stripe level of the video frame.
[0010] This disclosure also provides a video data encoding method, the method comprising: receiving a video frame for residual encoding; determining whether the video frame is encoded in a lossless mode at the slice level; and, in response to determining that the video frame is encoded in the lossless mode at the slice level, disabling one or more loop filters at the slice level.
[0011] This disclosure also provides a video data encoding method, the method comprising: receiving a video frame for residual coding; determining whether symbolic data hiding is disabled at the image level of the video frame; and, in response to determining that symbolic data hiding is disabled at the image level of the video frame, disabling strip-level transform skip residual coding of the video frame.
[0012] This disclosure also provides a video data encoding method, the method comprising: receiving a video frame for residual coding; determining whether dependency quantization is enabled for the video frame; and, in response to determining that dependency quantization is enabled for the video frame, disabling transform skip residual coding at the stripe level of the video frame.
[0013] Embodiments of this disclosure also provide a system for performing video data processing, the system comprising: a memory storing an instruction set; and a processor configured to execute the instruction set to cause the system to: receive a video frame for residual coding; determine whether to encode the video frame according to a transform block-level transform skip mode; and, in response to determining that the video frame is to be encoded according to the transform skip mode, disable symbolic data hiding for the residual coding.
[0014] Embodiments of this disclosure also provide a system for performing video data processing, the system comprising: a memory storing an instruction set; and a processor configured to execute the instruction set to cause the system to: receive a video frame for residual coding; determine whether to encode the video frame according to a block differential pulse code modulation mode; and, in response to determining that the video frame is encoded according to a block differential pulse code modulation mode, disable symbolic data hiding for the residual coding.
[0015] Embodiments of this disclosure also provide a system for performing video data processing, the system comprising: a memory storing an instruction set; and a processor configured to execute the instruction set to cause the system to: receive a video frame for residual coding; determine whether to encode the video frame by skipping a residual coding mode according to a stripe-level transform; and, in response to determining that the video frame is not encoded by skipping a residual coding mode according to the stripe-level transform, disable symbolic data hiding for the residual coding.
[0016] Embodiments of this disclosure also provide a system for performing video data processing, the system comprising: a memory storing an instruction set; and a processor configured to execute the instruction set to cause the system to: receive a video frame for residual coding; determine whether symbolic data hiding is enabled at the image level of the video frame and whether transform skip residual coding is disabled at the stripe level of the video frame; and in response to determining that symbolic data hiding is enabled at the image level of the video frame and transform skip residual coding is enabled at the stripe level of the video frame, enable symbolic data hiding at the stripe level of the video frame.
[0017] Embodiments of this disclosure also provide a system for performing video data processing, the system comprising: a memory storing an instruction set; and a processor configured to execute the instruction set to cause the system to: receive a video frame for residual coding; determine whether symbolic data hiding is enabled at the image level of the video frame; in response to determining that symbolic data hiding is enabled at the image level of the video frame, enable symbolic data hiding at the stripe level of the video frame; determine whether symbolic data hiding is disabled at the stripe level of the video frame; and in response to determining that symbolic data hiding is disabled at the stripe level of the video frame, disable transform skip residual coding at the stripe level of the video frame.
[0018] Embodiments of this disclosure also provide a system for performing video data processing, the system comprising: a memory storing an instruction set; and a processor configured to execute the instruction set to cause the system to: receive a video frame for residual coding; determine whether the video frame is encoded in a lossless mode at the stripe level; and, in response to determining that the video frame is encoded in the lossless mode at the stripe level, disable one or more loop filters at the stripe level.
[0019] Embodiments of this disclosure also provide a system for performing video data processing, the system comprising: a memory storing an instruction set; and a processor configured to execute the instruction set to cause the system to: receive a video frame for residual coding; determine whether symbolic data hiding is disabled at the image level of the video frame; and, in response to determining that symbolic data hiding is disabled at the image level of the video frame, disable stripe-level transform skip residual coding of the video frame.
[0020] Embodiments of this disclosure also provide a system for performing video data processing, the system comprising: a memory storing an instruction set; and a processor configured to execute the instruction set to cause the system to: receive a video frame for residual coding; determine whether dependency quantization is enabled for the video frame; and, in response to determining that dependency quantization is enabled for the video frame, disable transform skip residual coding at the stripe level of the video frame.
[0021] Embodiments of this disclosure also provide a non-transitory computer-readable medium storing an instruction set executable by one or more processors of a device to cause the device to initiate a method for performing video data processing, the method comprising: receiving a video frame for residual coding; determining whether to encode the video frame according to a transform block-level transform skip mode; and disabling symbolic data hiding for the residual coding in response to determining that the video frame is encoded according to the transform skip mode.
[0022] Embodiments of this disclosure also provide a non-transitory computer-readable medium storing an instruction set executable by one or more processors of a device to cause the device to initiate a method for performing video data processing, the method comprising: receiving a video frame for residual coding; determining whether to encode the video frame according to a block differential pulse code modulation mode; and disabling symbolic data hiding for the residual coding in response to determining that the video frame is encoded according to the block differential pulse code modulation mode.
[0023] Embodiments of this disclosure also provide a non-transitory computer-readable medium storing an instruction set executable by one or more processors of a device to cause the device to initiate a method for performing video data processing, the method comprising: receiving a video frame for residual coding; determining whether to encode the video frame by skipping a residual coding mode according to a stripe-level transform; and disabling symbolic data hiding for the residual coding in response to determining that the video frame is not encoded by skipping a residual coding mode according to the stripe-level transform.
[0024] Embodiments of this disclosure also provide a non-transitory computer-readable medium storing an instruction set executable by one or more processors of an apparatus to cause the apparatus to initiate a method for performing video data processing, the method comprising: receiving a video frame for residual coding; determining whether symbolic data hiding is enabled at the image level of the video frame and whether transform skip residual coding is disabled at the stripe level of the video frame; and in response to determining that symbolic data hiding is enabled at the image level of the video frame and transform skip residual coding is enabled at the stripe level of the video frame, enabling symbolic data hiding at the stripe level of the video frame.
[0025] Embodiments of this disclosure also provide a non-transitory computer-readable medium storing an instruction set executable by one or more processors of an apparatus to initiate a method for performing video data processing, the method comprising: receiving a video frame for residual coding; determining whether symbolic data hiding is enabled at the image level of the video frame; in response to determining that symbolic data hiding is enabled at the image level of the video frame, enabling symbolic data hiding at the stripe level of the video frame; determining whether symbolic data hiding is disabled at the stripe level of the video frame; and in response to determining that symbolic data hiding is disabled at the stripe level of the video frame, disabling transform skip residual coding at the stripe level of the video frame.
[0026] Embodiments of this disclosure also provide a non-transitory computer-readable medium storing an instruction set executable by one or more processors of a device to cause the device to initiate a method for performing video data processing, the method comprising: receiving a video frame for residual coding; determining whether the video frame is encoded in a lossless mode at the stripe level; and, in response to determining that the video frame is encoded in the lossless mode at the stripe level, disabling one or more loop filters at the stripe level.
[0027] Embodiments of this disclosure also provide a non-transitory computer-readable medium storing an instruction set executable by one or more processors of an apparatus to cause the apparatus to initiate a method for performing video data processing, the method comprising: receiving a video frame for residual coding; determining whether symbolic data hiding is disabled at the image level of the video frame; and, in response to determining that symbolic data hiding is disabled at the image level of the video frame, disabling stripe-level transform skip residual coding of the video frame.
[0028] Embodiments of this disclosure also provide a non-transitory computer-readable medium storing an instruction set executable by one or more processors of an apparatus to cause the apparatus to initiate a method for performing video data processing, the method comprising: receiving a video frame for residual coding; determining whether dependency quantization is enabled for the video frame; and, in response to determining that dependency quantization is enabled for the video frame, disabling transform skip residual coding at the stripe level of the video frame. Attached Figure Description
[0029] Embodiments and aspects of this disclosure are illustrated in the following detailed description and accompanying drawings. The various features shown in the figures are not drawn to scale.
[0030] Figure 1 The structure of an example video sequence according to some embodiments of this disclosure is shown.
[0031] Figure 2A A schematic diagram of an exemplary encoding process according to some embodiments of the present disclosure is shown.
[0032] Figure 2B A schematic diagram of another example encoding process according to some embodiments of the present disclosure is shown.
[0033] Figure 3A A schematic diagram of an exemplary decoding process according to some embodiments of the present disclosure is shown.
[0034] Figure 3B A schematic diagram of another example decoding process according to some embodiments of the present disclosure is shown.
[0035] Figure 4 A block diagram of an example apparatus for encoding or decoding video according to some embodiments of the present disclosure is shown.
[0036] Figure 5 An exemplary table is shown, according to some embodiments of this disclosure, including support conditions to allow or disallow SDH for TS and BDPCM blocks.
[0037] Figure 6AExemplary encoder adjustments of a BDPCM block prior to adjustment are shown according to some embodiments of this disclosure.
[0038] Figure 6B Exemplary encoder adjustments of a BDPCM block after adjustments according to some embodiments of this disclosure are shown.
[0039] Figure 7 An exemplary table is shown that includes conditions for disabling symbol data hiding, according to some embodiments of this disclosure.
[0040] Figure 8 An exemplary syntax, including a portion of the residual coding syntax, is shown according to some embodiments of this disclosure.
[0041] Figure 9 An exemplary table is shown, according to some embodiments of the present disclosure, including conditions that allow symbolic data hiding for switching skip modes and block differential pulse code modulation modes.
[0042] Figure 10 The present disclosure illustrates some embodiments including those for use with Figure 9 An exemplary syntax of a portion of the residual coding syntax for the conditions shown.
[0043] Figure 11 Exemplary syntax, including a portion of a residual coding syntax for disabling symbolic data hiding, is shown according to some embodiments of this disclosure.
[0044] Figure 12 An exemplary syntax, including a portion of the strip header syntax for controlling strip-level symbol data hiding flags, is shown according to some embodiments of this disclosure.
[0045] Figure 13 An exemplary syntax, including a portion of a residual coding syntax for controlling stripe-level symbolic data hiding flags, is shown according to some embodiments of this disclosure.
[0046] Figure 14 An exemplary syntax, including a portion of the strip header syntax for strip-level symbolic data hiding flags, is shown according to some embodiments of this disclosure.
[0047] Figure 15 illustrates an exemplary syntax including a portion of the strip header syntax for strip-level lossless marking, according to some embodiments of this disclosure.
[0048] Figure 16 An exemplary syntax, including a portion of a residual coding syntax for stripe-level lossless marking, is shown according to some embodiments of this disclosure.
[0049] Figure 17Exemplary syntax is shown, according to some embodiments of this disclosure, including a portion of striped header syntax with reduced syntactic redundancy.
[0050] Figure 18 An exemplary syntax is shown, comprising a portion of a striped header syntax for conditions used for symbolic data hiding and dependency quantization, according to some embodiments of this disclosure.
[0051] Figure 19 A flowchart is shown of an example video encoding method with transform skip mode and symbol data hiding according to some embodiments of the present disclosure.
[0052] Figure 20 A flowchart is shown of an example video coding method with block differential pulse code modulation mode and symbol data hiding according to some embodiments of the present disclosure.
[0053] Figure 21 A flowchart is shown of an example video coding method with transform skip residual coding and symbolic data hiding according to some embodiments of the present disclosure.
[0054] Figure 22 A flowchart is shown of an example video coding method with transform skip residual coding and symbolic data hiding at the image level, according to some embodiments of the present disclosure.
[0055] Figure 23 A flowchart of an example video coding method according to some embodiments of the present disclosure is shown, the video coding method having symbolic data hidden at the image level, symbolic data hidden at the strip level, and transform skip residual coding at the strip level.
[0056] Figure 24 A flowchart is shown of an example video coding method with lossless coding mode and symbolic data hiding according to some embodiments of the present disclosure.
[0057] Figure 25 A flowchart of an example video coding method according to some embodiments of the present disclosure is shown, the video coding method having symbolic data hidden at the image level and transform skip residual coding at the stripe level.
[0058] Figure 26 A flowchart is shown of an example video coding method with dependent quantization and transform skip residual coding at the strip level, according to some embodiments of the present disclosure. Detailed Implementation
[0059] Exemplary embodiments will now be described in detail, examples of which are illustrated in the accompanying drawings. The following description refers to the accompanying drawings, wherein, unless otherwise stated, the same numerals in different drawings denote the same or similar elements. The embodiments set forth in the following description of the exemplary embodiments do not represent all embodiments consistent with this disclosure. Rather, they are merely examples of apparatuses and methods consistent with aspects of this disclosure as described in the appended claims. Specific aspects of this disclosure are described below in more detail. In the event of any conflict with terms and / or definitions incorporated by reference, the terms and definitions provided herein shall prevail.
[0060] The Joint Video Experts Group (JVET) of the ITU-T Video Coding Experts Group (ITU-T VCEG) and the ISO / IEC Moving Picture Experts Group (ISO / IEC MPEG) is currently developing the Universal Video Coding (VVC / H.266) standard. The VVC standard aims to double the compression efficiency of its predecessor, the High Efficiency Video Coding (HEVC / H.265) standard. In other words, VVC aims to achieve the same subjective quality as HEVC / H.265 using half the bandwidth.
[0061] To achieve the same subjective quality as HEVC / H.265 using half the bandwidth, JVET has been developing techniques other than HEVC using the Joint Exploratory Model (JEM) reference software. With the incorporation of coding techniques into JEM, JEM achieves higher coding performance than HEVC.
[0062] The VVC standard is a recent development and continues to include more coding techniques that provide better compression performance. VVC is based on a hybrid video coding system that has been used in modern video compression standards such as HEVC, H.264 / AVC, MPEG2, and H.263.
[0063] Video is a set of still images (or “frames”) arranged in chronological order to store visual information. These images can be captured and stored in chronological order using video capture devices (e.g., cameras), and displayed in a time-series using video playback devices (e.g., televisions, computers, smartphones, tablets, video players, or any end-user terminal with a display capability). Furthermore, in some applications, video capture devices can transmit captured video in real time to video playback devices (e.g., computers with monitors), such as for surveillance, conferencing, or live broadcasting.
[0064] To reduce the storage space and transmission bandwidth required for such applications, video can be compressed before storage and transmission, and decompressed before display. Compression and decompression can be implemented by software executed by a processor (e.g., a processor in a general-purpose computer) or dedicated hardware. The module used for compression is typically called an "encoder," and the module used for decompression is typically called a "decoder." Encoders and decoders can be collectively referred to as a "codec." Encoders and decoders can be implemented as any of a variety of suitable hardware, software, or combinations thereof. For example, hardware implementations of encoders and decoders can include circuits 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. Software implementations of encoders and decoders can include program code embedded in a computer-readable medium, computer-executable instructions, firmware, or any suitable computer-implemented algorithm or process. Video compression and decompression can be implemented using 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 from a first encoding standard and recompress the decompressed video using a second encoding standard; in this case, the codec can be referred to as a "transcoder."
[0065] Video encoding processes identify and retain useful information that can be used to reconstruct the image, while ignoring unimportant reconstruction information. If ignoring unimportant information prevents complete reconstruction, such an encoding process can be called "lossy." Otherwise, it can be called "lossless." Most encoding processes are lossy, a trade-off to reduce required storage space and transmission bandwidth.
[0066] Useful information about an encoded image (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 variations in pixel position, brightness, or color, with positional changes being the most important. The positional changes of a set of pixels representing an object can reflect the object's movement between the reference and current images.
[0067] An image encoded without referencing another image (i.e., it is its own reference image) is called an "I-image". An image encoded using a previous image as a reference image is called a "P-image", and an image encoded using both a previous image and a future image as reference images is called a "B-image" (the reference is "bidirectional").
[0068] Figure 1 The structure of an example video sequence 100 according to some embodiments of the present disclosure is shown. For example... Figure 1As shown, 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 of both (e.g., real 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 (e.g., a video broadcast transceiver) that receives video from a video content provider.
[0069] like Figure 1 As shown, video sequence 100 may include a series of images arranged temporally along a timeline, including images 102, 104, 106, and 108. Images 102-106 are consecutive, with more images between images 106 and 108. Figure 1 In this diagram, image 102 is an I-image, and its reference image is image 102 itself. Image 104 is a P-image, and its reference image is image 102, as indicated by the arrow. Image 106 is a B-image, and its reference images are images 104 and 108, as indicated by the arrow. In some embodiments, the reference image of an image (e.g., image 104) may not immediately precede or follow the image. For example, the reference image of image 104 may be an image preceding image 102. It should be noted that the reference images of images 102-106 are merely examples, and this disclosure does not limit the scope to such cases. Figure 1 An example of the reference image shown.
[0070] Typically, due to the computational complexity of encoding and decoding tasks, video codecs do not encode or decode the entire image at once. Instead, they can segment the image into basic segments and encode or decode each segment sequentially. In this disclosure, such basic segments are referred to as basic processing units (“BPUs”). For example, Figure 1 Structure 110 illustrates an example structure of an image (e.g., any of images 102-108) from video sequence 100. 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., 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 may have a variable size in the image, such as 128×128, 64×64, 32×32, 16×16, 4×8, 16×32, or pixels of any shape and size. The size and shape of the basic processing units for the image can be chosen based on a balance between coding efficiency and the level of detail to be maintained within the basic processing units.
[0071] A basic processing unit can be a logical unit that may include a set of different types of video data stored in computer memory (e.g., in a video frame buffer). For example, a basic processing unit for a color image may include a luminance component (Y) representing achromatic luminance information, one or more chrominance components (e.g., Cb and Cr) representing color information, and associated syntax elements, where the luminance and chrominance components may have the same size as the basic processing unit. In some video coding standards (e.g., H.265 / HEVC or H.266 / VVC), the luminance and chrominance components may be referred to as “code tree blocks” (“CTBs”). Any operation performed on a basic processing unit may be performed repeatedly on each of its luminance and chrominance components.
[0072] Video encoding involves multiple operational stages, examples of which are as follows: Figure 2A-2B and Figures 3A-3B As shown. For each stage, the size of the basic processing unit may still be too large for the processing, and therefore can be further divided into segments referred to herein as "basic processing subunits". In some embodiments, the basic processing subunit may be referred to as a "block" in some video coding standards (e.g., MPEG family, 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 subunit may have the same size as the basic processing unit or a smaller size. Similar to the basic processing unit, the basic processing subunit is also a logical unit that may include a set of different types of video data (e.g., Y, Cb, Cr, and associated syntax elements) stored in computer memory (e.g., in a video frame buffer). Any operation performed on the basic processing subunit may be repeated for each of its luminance and chrominance components. It should be noted that this division can be performed to further levels as needed for processing. It should also be noted that different schemes can be used to divide the basic processing units for different stages.
[0073] For example, in the pattern decision-making stage (examples of which are in...) Figure 2B As shown, the encoder can decide which prediction mode (e.g., intra-frame prediction or inter-frame prediction) to use for a basic processing unit, which may be too large to make such a decision. The encoder can divide the basic processing unit into multiple basic processing subunits (e.g., CUs in H.265 / HEVC or H.266 / VVC) and determine the prediction type for each individual basic processing subunit.
[0074] For another example, in the prediction phase (the example is in...) Figure 2A-2BAs shown in the diagram, the encoder can perform prediction operations at the level of a basic processing subunit (e.g., a CU). However, in some cases, the basic processing subunit may still be too large to handle. The encoder can further divide the basic processing subunit into smaller segments (e.g., referred to as "prediction blocks" or "PBs" in H.265 / HEVC or H.266 / VVC) at which prediction operations can be performed.
[0075] For another example, in the transformation phase (the example of which is in...) Figure 2A-2B As shown in the diagram, the encoder can perform transformation operations on residual basic processing subunits (e.g., CUs). However, in some cases, the basic processing subunits may still be too large to process. The encoder can further divide the basic processing subunits into smaller segments (e.g., referred to as "transform blocks" or "TBs" in H.265 / HEVC or H.266 / VVC), at which level transformation operations can be performed. It is important to note that the partitioning scheme of the same basic processing subunit can differ between the prediction and transformation phases. 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.
[0076] exist Figure 1 In structure 110, the basic processing unit 112 is further divided into 3×3 basic processing sub-units, the boundaries of which are shown by dashed lines. Different basic processing units of the same image can be divided into basic processing sub-units in different schemes.
[0077] In some implementations, to provide parallel processing capabilities and fault tolerance for video encoding and decoding, an image can be divided into regions for processing, such that the encoding or decoding process for a given region of the image can be independent of information 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 encoding efficiency. Furthermore, when data in one region is corrupted during processing or lost during network transmission, the codec can correctly encode or decode other regions of the same image without depending on the corrupted or lost data, thus providing fault tolerance. In some video coding standards, images 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 may have different partitioning schemes for dividing the image into regions.
[0078] For example, in Figure 1In the diagram, structure 110 is divided into three regions 114, 116, and 118, whose boundaries are shown as solid lines within structure 110. Region 114 comprises four basic processing units. Regions 116 and 118 each comprise six basic processing units. It should be noted that... Figure 1 The basic processing unit, basic processing subunit, and structural region of 110 are merely examples, and this disclosure does not limit its embodiments.
[0079] Figure 2A A schematic diagram of an exemplary encoding process 200A according to an embodiment of the present disclosure is shown. For example, the encoding process 200A may be performed by an encoder. Figure 2A As shown, the encoder can encode the video sequence 202 into a video bitstream 228 according to process 200A. Similar to... Figure 1 Video sequence 100 and video sequence 202 may include a set of images arranged in chronological order (referred to as "original images"). Similar to... Figure 1 In structure 110, each raw image of video sequence 202 can be divided into basic processing units, basic processing subunits, or regions by an encoder for processing. In some embodiments, the encoder can perform process 200A at the level of basic processing units for each raw image of video sequence 202. For example, the encoder can perform process 200A iteratively, wherein the encoder can encode basic processing units 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 raw image of video sequence 202.
[0080] refer to Figure 2AThe encoder feeds the basic processing unit (referred to as the "raw BPU") of the original image of video sequence 202 to prediction stage 204 to generate prediction data 206 and prediction BPU 208. The encoder can subtract the predicted BPU 208 from the raw BPU to generate residual BPU 210. The encoder can feed residual BPU 210 to transform stage 212 and quantization stage 214 to generate quantization transform coefficients 216. The encoder can feed prediction data 206 and quantization transform coefficients 216 to binary encoding stage 226 to generate video bitstream 228. Components 202, 204, 206, 208, 210, 212, 214, 216, 226, and 228 can be referred to as the "forward path". During process 200A, after quantization stage 214, the encoder can feed quantization transform coefficients 216 to inverse quantization stage 218 and inverse transform stage 220 to generate reconstructed residual BPU 222. The encoder can add the reconstructed residual BPU 222 to the predicted BPU 208 to generate a prediction reference 224, which is used in the prediction stage 204 of the next iteration of process 200A. Components 218, 220, 222, and 224 of process 200A can be referred to as the "reconstruction path". The reconstruction path can be used to ensure that both the encoder and decoder use the same reference data for prediction.
[0081] The encoder can iteratively execute process 200A to encode each raw BPU (in the forward path) of the original image and generate a prediction reference 224 for encoding the next raw BPU (in the reconstruction path) of the original image. After encoding all raw BPUs of the original image, the encoder can continue to encode the next image in the video sequence 202.
[0082] Referring to process 200A, the encoder may receive a video sequence 202 generated by a video acquisition device (e.g., a camera). As used herein, the term "receive" can refer to any action that receives, inputs, acquires, retrieves, obtains, reads, accesses, or is used for inputting data in any manner.
[0083] In prediction phase 204, during the current iteration, the encoder can receive the original BPU and prediction reference 224, and perform prediction operations to generate prediction data 206 and prediction BPU 208. Prediction reference 224 can be generated from the reconstruction path of previous iterations of process 200A. The purpose of prediction phase 204 is to reduce information redundancy by extracting prediction data 206 from prediction data 206 and prediction reference 224 that can be used to reconstruct the original BPU into prediction BPU 208.
[0084] Ideally, the predicted BPU 208 should 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 record these differences, the encoder can subtract the predicted BPU 208 from the original BPU to generate the residual BPU 210. For example, the encoder can subtract the value of the corresponding pixel in the predicted BPU 208 (e.g., grayscale or RGB value) from the value of a pixel in the original BPU. Each pixel in the residual BPU 210 can have a residual value as the result of this subtraction between the corresponding pixel in the original BPU and the predicted BPU 208. 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 a significant quality degradation. Thus, the original BPU is compressed.
[0085] To further compress the residual BPU 210, in the transform stage 212, the encoder can reduce its spatial redundancy by decomposing the residual BPU 210 into a set of two-dimensional “base patterns”. Each base pattern is associated with “transform coefficients”. The base patterns can have the same size (e.g., the size of the residual BPU 210), and each base pattern can represent the frequency (e.g., the frequency of brightness variation) component of the residual BPU 210. None of the base patterns can be reproduced from any combination (e.g., a linear combination) of any other base patterns. In other words, the decomposition can decompose the variation of the residual BPU 210 into the frequency domain. This decomposition is analogous to the discrete Fourier transform of a function, where the base patterns are analogous to the base functions of the discrete Fourier transform (e.g., trigonometric functions), and the transform coefficients are analogous to the coefficients associated with the base functions.
[0086] Different transform algorithms can use different base patterns. Various transform algorithms, such as discrete cosine transform, discrete sine transform, etc., can be used in transform stage 212. The transform at transform stage 212 is reversible. That is, the encoder can recover the residual BPU 210 through the inverse operation of the transform (called the "inverse transform"). For example, to recover the pixels of the residual BPU 210, the inverse transform can be to multiply the values of the corresponding pixels of the base pattern by the corresponding correlation coefficients and sum the products to produce a weighted sum. For video coding standards, both the encoder and decoder can use the same transform algorithm (and therefore have the same base pattern). Therefore, the encoder can only record the transform coefficients, from which the decoder can reconstruct the residual BPU 210 without receiving the base 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. Therefore, the residual BPU 210 is further compressed.
[0087] The encoder can further compress the transform coefficients during the quantization stage 214. During the transform process, different fundamental patterns can represent different frequencies of change (e.g., brightness change frequencies). Because the human eye is generally better at recognizing low-frequency changes, the encoder can ignore information about high-frequency changes without causing significant quality degradation in decoding. For example, in the quantization stage 214, the encoder can generate quantized transform coefficients 216 by dividing each transform coefficient by an integer value (called the “quantization parameter”) and rounding the quotient to its nearest integer. After such an operation, some transform coefficients of the high-frequency fundamental patterns can be converted to zero, and the transform coefficients of the low-frequency fundamental patterns can be converted to smaller integers. The encoder can ignore the zero-valued quantized transform coefficients 216, thus further compressing the transform coefficients. This 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”).
[0088] Because the encoder ignores the remainder of the division during rounding, quantization stage 214 can be lossy. Typically, quantization stage 214 contributes the most to information loss in process 200A. The greater the information loss, the fewer bits are required for the quantization transform coefficients 216. To obtain different levels of information loss, the encoder can use different quantization parameter values or any other parameter of the quantization process.
[0089] In the binary encoding stage 226, the encoder can encode the prediction data 206 and the quantization transform coefficients 216 using binary encoding techniques, such as 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 quantization transform coefficients 216, the encoder can encode other information in the binary encoding stage 226, such as the prediction mode used in the prediction stage 204, the parameters of the prediction operation, the transform type at the transform stage 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 encoding stage 226 to generate a video bitstream 228. In some embodiments, the video bitstream 228 can be further packaged for network transmission.
[0090] Following the reconstruction path of process 200A, in the inverse quantization stage 218, the encoder can perform inverse quantization on the quantized transform coefficients 216 to generate reconstructed transform coefficients. In the inverse transform stage 220, the encoder can generate a reconstruction residual BPU 222 based on the reconstructed transform coefficients. The encoder can add the reconstruction residual BPU 222 to the prediction BPU 208 to generate a prediction reference 224 that will be used in the next iteration of process 200A.
[0091] It should be noted that other variations of process 200A can be used to encode video sequence 202. In some embodiments, the stages of process 200A may be performed by the encoder in different orders. In some embodiments, one or more stages of process 200A may be combined into a single stage. In some embodiments, a single stage of process 200A may be divided into multiple stages. For example, transform stage 212 and quantization stage 214 may be combined into a single stage. In some embodiments, process 200A may include additional stages. In some embodiments, process 200A may be omitted. Figure 2A One or more stages in the process.
[0092] Figure 2B A schematic diagram of another example encoding process 200B according to an embodiment of the present disclosure is shown. Process 200B can be modified from process 200A. For example, process 200B can be used by an encoder conforming to a hybrid video coding standard (e.g., H.26x series). Compared to process 200A, the forward path of process 200B further 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 also additionally includes a loop filtering stage 232 and a buffer 234.
[0093] Generally, prediction techniques can be categorized into two types: spatial prediction and temporal prediction. Spatial prediction (e.g., intra-frame image prediction or "intra-prediction") uses pixels from one or more already encoded 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 images. Temporal prediction (e.g., inter-image prediction or "inter-frame prediction") uses regions from one or more already encoded images to predict the current BPU. That is, the prediction reference 224 in temporal prediction can include encoded images. Temporal prediction can reduce the inherent temporal redundancy of images.
[0094] In reference process 200B, during the forward path, the encoder performs prediction operations in spatial prediction phase 2042 and temporal prediction phase 2044. For example, in spatial prediction phase 2042, the encoder may perform intra-frame prediction. For the original BPU of the encoded image, prediction reference 224 may include one or more adjacent BPUs that have been encoded (in the forward path) and reconstructed (in the reconstruction path) in the same image. The encoder can generate the predicted BPU 208 by interpolating adjacent BPUs. Interpolation techniques may include, for example, linear interpolation or interpolation, polynomial interpolation or interpolation, etc. In some embodiments, the encoder may perform interpolation at the pixel level, for example, by interpolating to predict the value of the corresponding pixel for each pixel of BPU 208. The adjacent BPUs used for interpolation may be located in various directions relative to the original BPU, such as in the vertical direction (e.g., at the top of the original BPU), the horizontal direction (e.g., to the left of the original BPU), the diagonal direction (e.g., at the lower left, lower right, upper left, or upper right of the original BPU), or any direction defined in the video coding standard used. For intra-frame prediction, prediction data 206 may include, for example, the location (e.g., coordinates) of the neighboring BPUs used, the size of the neighboring BPUs used, the interpolation parameters, the orientation of the neighboring BPUs used relative to the original BPU, etc.
[0095] In another example, during the temporal prediction phase 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 a reconstructed image as the reference image. The encoder can perform a "motion estimation" operation to search for matching regions within the 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 that has the same coordinates as the original BPU in the current image and can extend outward by a predetermined distance. When the encoder identifies a region in the search window that resembles the original BPU (e.g., by using a PEL recursive algorithm, a block matching algorithm, etc.), the encoder can determine such a region as a matching region. The matching region can have a different size than the original BPU (e.g., less than, equal to, greater than, or with a different shape). This is because the reference image and the current image are temporally separated on the timeline (e.g., as...). Figure 1As shown in the image, the matching region can be considered to have "moved" to the original BPU's location over time. The encoder can record the direction and distance of this movement as a "motion vector." When using multiple reference images (e.g., such as...), Figure 1 In image 106, the encoder can search for matching regions and determine the associated motion vector for each reference image. In some embodiments, the encoder can assign weights to the pixel values of the matching regions of each matching reference image.
[0096] Motion estimation can be used to identify various types of motion, such as translation, rotation, scaling, etc. For inter-frame prediction, prediction data 206 may 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, the weights associated with the reference images, etc.
[0097] 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 predicted data 206 (e.g., motion vectors) and the predicted reference 224. For example, the encoder can move a matching region of the reference image according to the motion vectors, where the encoder can predict the original BPU of the current image. When using multiple reference images (e.g., such as...), Figure 1 In image 106), the encoder can move the matching region of the reference image based on the individual motion vectors and average pixel values of the matching region. In some embodiments, if the encoder has already assigned weights to the pixel values of the matching regions of the respective matching reference images, the encoder can add the weighted sums of the pixel values of the moved matching regions.
[0098] In some embodiments, inter-frame prediction can be unidirectional or bidirectional. Unidirectional inter-frame prediction can use one or more reference images in the same temporal direction relative to the current image. For example, Figure 1 Image 104 in the diagram is a one-way inter-frame prediction image, where the reference image (i.e., image 102) precedes image 104. Two-way inter-frame prediction can use one or more reference images in two temporal directions relative to the current image. For example, Figure 1 Image 106 in the image is a bidirectional inter-frame prediction image, in which the reference image (i.e., images 104 and 08) is relative to image 104 in two temporal directions.
[0099] Referring again to the forward path of process 200B, after spatial prediction 2042 and temporal prediction stages 2044, in the mode decision stage 230, the encoder can select a prediction mode (e.g., one of intra-frame prediction or inter-frame prediction) for the current iteration of process 200B. For example, the encoder can perform a rate distortion optimization technique, whereby the encoder selects a prediction mode based on the bit rate of the candidate prediction modes and the distortion of the reconstructed reference image under the candidate prediction modes to minimize the value of the cost function. Based on the selected prediction mode, the encoder can generate the corresponding prediction BPU 208 and prediction data 206.
[0100] In the reconstruction path of process 200B, if intra-frame prediction mode has been selected in the forward path, the encoder can directly feed prediction reference 224 (e.g., the current BPU that has been encoded and reconstructed in the current image) to spatial prediction stage 2042 for later use (e.g., for interpolating the next BPU of the current image) after generating prediction reference 224. If inter-frame prediction mode has been selected in the forward path, the encoder can feed prediction reference 224 (e.g., the current image where all BPUs have been encoded and reconstructed) to loop filter stage 232 after generating prediction reference 224. In this stage, the encoder can apply loop filters to prediction reference 224 to reduce or eliminate distortions introduced by inter-frame prediction (e.g., block artifacts). The encoder can apply various loop filter techniques at loop filter stage 232, such as deblocking, adaptive sampling compensation, adaptive loop filtering, etc. The loop-filtered reference image can be stored in buffer 234 (or "decoded image buffer") for later use (e.g., as an inter-frame prediction reference image for future images of video sequence 202). The encoder can store one or more reference images in buffer 234 for use at temporal prediction stage 2044. In some embodiments, the encoder can encode parameters of the loop filter (e.g., loop filter strength) as well as quantization transform coefficients 216, prediction data 206, and other information at binary encoding stage 226.
[0101] Figure 3A A schematic diagram of an exemplary decoding process 300A according to an embodiment of the present disclosure is shown. Process 300A may be corresponding to Figure 2A The compression process 200A in the video stream is followed by the decompression process. In some embodiments, process 300A can be similar to the reconstruction path of process 200A. The decoder can decode the video bitstream 228 into video stream 304 according to process 300A. Video stream 304 can be very similar to video sequence 202. However, due to information loss during compression and decompression (e.g., Figure 2A-2B In the quantization stage 214), the video stream 304 is typically different from the video sequence 202. Similar to... Figure 2A-2B In processes 200A and 200B, the decoder can perform process 300A at the basic processing unit (BPU) level for each image encoded in the video bitstream 228. For example, the decoder can perform process 300A iteratively, where the decoder can decode the basic processing unit in one iteration of process 300A. In some embodiments, the decoder can perform process 300A in parallel for a region (e.g., region 114-118) of each image encoded in the video bitstream 228.
[0102] like Figure 3A As shown, the decoder can feed a portion of the video bitstream 228 associated with a basic processing unit (referred to as the "encoded BPU") of the encoded image to a binary decoding stage 302, where the decoder can decode this portion into prediction data 206 and quantization transform coefficients 216. The decoder can feed the quantization transform coefficients 216 to an inverse quantization stage 218 and an inverse transform stage 220 to generate a reconstruction residual BPU 222. The decoder can feed the prediction data 206 to a prediction stage 204 to generate a prediction BPU 208. The decoder can add the reconstruction 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 image buffer in computer memory). The decoder can feed the prediction reference 224 to the prediction stage 204 for performing a prediction operation in the next iteration of process 300A.
[0103] The decoder can iteratively execute process 300A to decode each encoded BPU of the encoded image and generate a prediction reference 224 for the next encoded BPU of the encoded image. After decoding all encoded BPUs of the encoded image, the decoder can output the image to video stream 304 for display and continue decoding the next encoded image in video bit stream 228.
[0104] In the binary decoding stage 302, the decoder can perform the inverse operation of the binary encoding 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 decode other information in the binary decoding stage 302, such as the prediction mode, parameters of the prediction operation, transform type, parameters of the quantization process (e.g., quantization parameters), encoder control parameters (e.g., bit rate control parameters), etc. In some embodiments, if the video bitstream 228 is transmitted over a network in packets, the decoder can unpack it before feeding the video bitstream 228 to the binary decoding stage 302.
[0105] Figure 3B A schematic diagram of another example decoding process 300B according to an embodiment of the present disclosure is shown. Process 300B can be modified from process 300A. For example, process 300B can be used by a decoder conforming to a hybrid video coding standard (e.g., H.26x series). Compared to process 300A, process 300B additionally divides the prediction stage 204 into a spatial prediction stage 2042 and a temporal prediction stage 2044, and additionally includes a loop filtering stage 232 and a buffer 234.
[0106] In process 300B, for the encoding basic processing unit (referred to as the "current BPU") of the decoded encoded image (referred to as the "current image"), the prediction data 206 decoded by the decoder from the binary decoding stage 302 can include various types of data depending on the prediction mode used by the encoder to encode the current BPU. For example, if the encoder uses intra-frame prediction to encode the current BPU, the prediction data 206 can include prediction mode indicators (e.g., flag values) that indicate intra-frame prediction, parameters of the intra-frame prediction operation, etc. Parameters of the intra-frame prediction operation can include, for example, the positions (e.g., coordinates) of one or more neighboring BPUs used as references, the sizes of neighboring BPUs, interpolation parameters, the orientation of neighboring BPUs relative to the original BPU, etc. For another example, if the current BPU is encoded by inter-frame prediction used by the encoder, the prediction data 206 can include prediction mode indicators (e.g., flag values) that indicate inter-frame prediction, parameters of the inter-frame prediction operation, etc. The parameters of the inter-frame prediction operation may 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, and one or more motion vectors associated with the matching regions respectively.
[0107] Based on the prediction mode indicator, the decoder can decide whether to perform spatial prediction (e.g., intra-frame prediction) in the spatial prediction phase 2042 or temporal prediction (e.g., inter-frame prediction) in the temporal prediction phase 2044. The details of performing this spatial or temporal prediction are detailed in [the relevant section]. Figure 2B As described herein, it will not be repeated below. After performing such spatial or temporal prediction, the decoder can generate a predicted BPU 208, which can be added to the predicted BPU 208 and the reconstructed residual BPU 222 to generate a prediction reference 224, as shown below. Figure 3A As described in [the text].
[0108] In process 300B, the decoder can feed prediction reference 224 to either spatial prediction stage 2042 or temporal prediction stage 2044 for performing prediction operations in the next iteration of process 300B. For example, if intra-frame prediction is used to decode the current BPU in spatial prediction stage 2042, the decoder can feed prediction reference 224 directly to spatial prediction stage 2042 for later use (e.g., for interpolating the next BPU of the current image) after generating prediction reference 224 (e.g., the decoded current BPU). If inter-frame prediction is used to decode the current BPU in temporal prediction stage 2044, the encoder can feed prediction reference 224 to loop filter stage 232 to reduce or eliminate distortion (e.g., block artifacts) after generating prediction reference 224 (e.g., a reference image where all BPUs are decoded). The decoder can, as follows: Figure 2B The loop filter is applied to prediction reference 224 in the manner shown. The loop-filtered reference image can be stored in buffer 234 (e.g., a decoded image buffer in computer memory) for later use (e.g., as an inter-prediction reference image for future encoded images of video bitstream 228). The decoder can store one or more reference images in buffer 234 for use at temporal prediction stage 2044. In some embodiments, the prediction data may further include parameters of the loop filter (e.g., loop filter strength). In some embodiments, the prediction data includes parameters of the loop filter when the prediction mode indicator of prediction data 206 indicates that inter-frame prediction is used to encode the current BPU.
[0109] There can be four types of loop filters. For example, loop filters can include deblocking filters, sample adaptive offset (“SAO”) filters, luminance mapping with chroma scaling (“LMCS”) filters, and adaptive loop filters (“ALF”). The order in which the four types of loop filters are applied can be LMCS filter, deblocking filter, SAO filter, and ALF. An LMCS filter can include two main components. The first component is an in-loop mapping of the luminance component based on an adaptive piecewise linear model. The second component can be used for the chroma component, and luminance-related chroma residual scaling can be applied.
[0110] Figure 4 This is a block diagram of an example apparatus 400 for encoding or decoding video according to embodiments of the present disclosure. Figure 4As shown, device 400 may include processor 402. When processor 402 executes the instructions described herein, device 400 may become a dedicated machine for video encoding or decoding. Processor 402 may be any type of circuit capable of manipulating or processing information. For example, processor 402 may include any number of central processing units (or “CPU”), graphics processing units (or “GPU”), neural processing units (“NPU”), microcontroller units (“MCU”), optical processors, programmable logic controllers, microprocessors, digital signal processors, intellectual property (IP) cores, programmable logic arrays (PLAs), programmable array logic (PALs), general-purpose array logic (GALs), complex programmable logic devices (CPLDs), field-programmable gate arrays (FPGAs), system-on-a-chip (SoCs), application-specific integrated circuits (ASICs), and any combination thereof. In some embodiments, processor 402 may also be a group of processors grouped into individual logic components. For example, such as Figure 4 As shown, processor 402 may include multiple processors, including processor 402a, processor 402b and processor 402n.
[0111] The device 400 may also include a memory 404 configured to store data (e.g., instruction sets, computer code, intermediate data, etc.). For example, such as Figure 4 As shown, the stored data may include program instructions (e.g., for implementing stages in processes 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 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 may include a high-speed random access memory device or a non-volatile memory device. In some embodiments, memory 404 may include any combination of any number of random access memories (RAM), read-only memories (ROM), optical discs, magnetic disks, hard disks, solid-state drives, flash drives, secure digital cards (SD cards), memory sticks, compact flash memory (CF cards), etc. Memory 404 may also be a group of memories grouped into single logical components. Figure 4 (Not shown in the image).
[0112] Bus 410 may be a communication device for transmitting data between components within device 400, such as an internal bus (e.g., CPU-memory bus), an external bus (e.g., a Universal Serial Bus port, a Peripheral Component Interconnect Fast Port), or the like.
[0113] For ease of explanation and to avoid ambiguity, the processor 402 and other data processing circuitry are collectively referred to as "data processing circuitry" in this disclosure. The data processing circuitry may be implemented entirely in hardware, or as a combination of software, hardware, or firmware. Furthermore, the data processing circuitry may be a single, separate module, or may be wholly or partially integrated into any other component of the device 400.
[0114] The device 400 may also include a network interface 406 to provide wired or wireless communication with a network (e.g., the Internet, intranet, local area network, mobile communication network, etc.). In some embodiments, the network interface 406 may include any combination of any number of network interface controllers (NICs), radio frequency (RF) modules, transceivers, transceivers, modems, routers, gateways, wired network adapters, wireless network adapters, Bluetooth adapters, infrared adapters, near field communication (“NFC”) adapters, cellular network chips, etc.
[0115] In some embodiments, optionally, the device 400 may further include a peripheral interface 408 to provide connectivity to one or more peripheral devices. Figure 4 As shown, peripheral devices may include, but are not limited to, cursor control devices (e.g., mouse, touchpad, or touchscreen), keyboards, displays (e.g., cathode ray tube displays, liquid crystal displays, or light-emitting diode displays), video input devices (e.g., cameras or input interfaces coupled to video files), etc.
[0116] It should be noted that the video codec (e.g., the codec for executing processes 200A, 200B, 300A, or 300B) can be implemented as any combination of any software or hardware modules in device 400. For example, some or all stages of processes 200A, 200B, 300A, or 300B can be implemented as one or more software modules of device 400, such as program instances that can be loaded into memory 404. As another example, some or all stages of processes 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.).
[0117] In quantization and dequantization function blocks (e.g., Figure 2A or Figure 2B Quantization 214 and inverse quantization 218, Figure 3A or Figure 3BIn inverse quantization (218), the quantization parameter (QP) is used to determine the amount of quantization (and inverse quantization) applied to the prediction residual. The initial QP value used to encode the image or strip can be signaled at a higher level, for example, using the init_qp_minus26 syntax element in the image parameter set (PPS) and the slice_qp_delta syntax element in the strip header. Furthermore, incremental QP values can be adapted at the local level of each CU using quantization group granularity.
[0118] In VVC transform skip mode, residual blocks (e.g., the difference between the original block and the predicted block) can be directly quantized and entropy-encoded. The transform process can be bypassed in transform-skip (“TS”) mode. For example, the transform_skip_flag variable can be signaled at the transform block level to indicate whether the TS mode to be processed has been selected. TS mode is efficient for lossless compression. For example, TS mode is efficient for camera capture or sequences of screen content. In the case of lossy compression, TS mode can also improve the compression process for certain types of video content, such as computer-generated images or graphics mixed with camera view content (e.g., scrolling text). A transform block is a block of samples generated by the transform during the decoding process, and the transform is the process of converting a block of transform coefficients into a block of spatial threshold values.
[0119] In addition to TS mode, VVC also employs Block Differential Pulse Code Modulation (“BDPCM”) mode. In BDPCM mode, the residual block can be directly quantized, and the increment between the quantized residual and its predictor quantization value can be entropy-coded. The predictor quantization value can be horizontal or vertical. The variable `bdpcm_flag` can be transmitted at the CU level to indicate whether BDPCM is applied. If BDPCM is applied, another flag can be sent to indicate the direction of the BDPCM mode (e.g., horizontal or vertical). In some examples, if BDPCM mode is selected, the value of `transform_skip_flag` can be inferred to be 1, indicating that the transform process is bypassed for the current block.
[0120] In VVC (e.g., VVC Draft 8), dependent scalar quantization can be used in addition to scalar quantization. In dependent scalar quantization, a set of permissible reconstructed values for the transform coefficients depends on the values of the transform coefficient levels preceding the current transform coefficient level in the reconstruction order. The sequence parameter set (“SPS”) level variable `sps_dep_quant_enabled_flag` can be used to enable dependent quantization (“DQ”) at the sequence level. If the variable `sps_dep_quant_enabled_flag` is equal to 1, another image-level variable `ph_dep_quant_enabled_flag` can be sent to indicate that scalar quantization has been applied to the image.
[0121] Symbolic data hiding (“SDH”) is a mechanism in HEVC or VVC (e.g., VVC draft 8) to reduce the number of coded symbols. For each coefficient group (“CG”), when SDH is enabled, the symbols for the last non-zero coefficients can be omitted (e.g., in reverse scan order). Instead, predefined conventions can be used to embed the symbol values into the parity of the sum of the non-zero coefficient levels in the CG. For example, an even sum can correspond to positive parity (e.g., “+”), and an odd sum can correspond to negative parity (e.g., “-”). One criterion for using SDH is the distance between the first and last non-zero coefficients of the CG, calculated in scan order. For example, if this distance is equal to or greater than 4, SDH is used for that CG. In VVC (e.g., VVC draft 8), there is an SPS-level gating variable, `sps_sign_data_hiding_enabled_flag`, which determines whether SDH is enabled for the current video sequence. If the variable sps_sign_data_hiding_enabled_flag is equal to 1, another image-level variable pic_sign_data_hiding_enabled_flag can be signaled at the image header to indicate whether SDH is enabled in the image.
[0122] DQ and SDH can conflict with each other. Therefore, for the same video sequence, the VVC specification (e.g., VVC Draft 8) does not allow DQ and SDH to be enabled simultaneously (e.g., sps_dep_quant_enabled_flag equals 1, sps_sign_data_hiding_enabled_flag equals 1). For example, sps_sign_data_hiding_enabled_flag can only be signaled when sps_dep_quant_enabled_flag equals 0. If sps_dep_quant_enabled_flag equals 1, then sps_sign_data_hiding_enabled_flag is inferred to be 0.
[0123] In VVC encoding (e.g., VVC draft 8), there are two residual coding methods: regular residual coding (e.g., `residual_coding`) and transform-skip residual coding (`residual_ts_coding`). In regular residual coding, each symbol with non-zero coefficients is encoded in the third scan in bypass mode. Depending on whether SDH is enabled for the CG, the last symbol in the CG can be encoded or hidden. TS blocks and BDPCM blocks are allowed to choose between regular residual coding and TS residual coding. If the slice level flag or the variable `slice_ts_residual_coding_disabled_flag` is equal to 0, blocks encoded in TS and BDPCM modes for that slice will choose `residual_ts_coding` as the residual coding process for the block. If the slice level flag `slice_ts_residual_coding_disabled_flag` is equal to 1, blocks encoded in TS and BDPCM modes for that slice will choose regular residual coding (e.g., `residual_coding`) as the residual coding process for the block.
[0124] SDH is allowed for TSs with non-BDPCM blocks and TSs with BDPCM blocks if the following two conditions are met: 1) the variable `slice_ts_residual_coding_disabled_flag` is equal to 1, and 2) the variable `pic_sign_data_hiding_enabled_flag` is equal to 1. When SDH is enabled, each CG of an entropy-coded or decoded block should satisfy at least one of the following two conditions: 1) the sum of the absolute values of the coefficients is even, and the sign of the top-left coefficient is positive; or 2) the sum of the absolute values of the coefficients is odd, and the sign of the top-left coefficient is negative. If none of the above conditions are met by the CG, the encoder may adjust the absolute value of one of the coefficients in the CG to guarantee that one of the above conditions is met.
[0125] Figure 5 Exemplary tables, including support conditions to allow or disallow SDH for TS and BDPCM blocks, are shown according to some embodiments of this disclosure. Figure 5 As shown, SDH is disabled when the value of pic_sign_data_hiding_enabled_flag is 1 and the value of slice_ts_residual_coding_disabled_flag is 0. SDH is enabled when the value of pic_sign_data_hiding_enabled_flag is 1 and the value of slice_ts_residual_coding_disabled_flag is 1.
[0126] The current design has many problems (e.g., VVC draft 8). First, the VVC design allows BDPCM blocks to use SDH even without an efficient coding algorithm to adjust the coefficient values of the BDPCM blocks to guarantee the aforementioned SDH conditions. Figure 6A Exemplary encoder adjustments of a BDPCM block prior to adjustment are shown according to some embodiments of this disclosure. Figure 6B Exemplary encoder adjustments of a BDPCM block after adjustments according to some embodiments of this disclosure are shown. The coefficients before adjustment are as follows: Figure 6A As shown. Figure 6A As shown, the sum of the coefficients of the horizontal BDPCM block is odd (e.g., 2^11), and the sign of the top-left coefficient (e.g., the sign of the number 14) is positive. This does not satisfy the necessary conditions of SDH. Therefore, adjustments are needed in the encoding. The adjusted coefficients are as follows. Figure 6B As shown. Figure 6BAs shown, the encoder is adjusted to change the value -21 to -22 (shown in bold) so that the sum of the absolute values is even (e.g., 2^12). As a result, CG satisfies the necessary conditions of SDH. However, changing one coefficient value affects many more coefficients. Figure 6B As shown, Figure 6A The values -12, -2, 4, -1, -1, -1 shown have all been changed (shown in bold), and the error has propagated. This error propagation makes BDPCM with SDH less efficient in terms of compression performance.
[0127] Another issue with the current design of VVC (e.g., VVC Draft 8) is its ability to perform lossless compression. In lossless compression, regular residual coding (e.g., the variable slice_ts_residual_coding_disabled_flag equals 1) can achieve higher compression gain than TS residual coding (e.g., the variable slice_ts_residual_coding_disabled_flag equals 0). As a result, one important use case for conditionally setting slice_ts_residual_coding_disabled_flag to 1 is lossless compression. Since SDH is a lossy coding tool, it cannot always produce lossless results. To achieve lossless compression, it may be necessary to disable the hiding of symbolic data. As an alternative approach, the combination of setting slice_ts_residual_coding_disabled_flag == 1 and hiding symbolic data may not be allowed.
[0128] Syntactic redundancy is another issue. The VVC specification (e.g., VVC Draft 8) supports the combination of `slice_ts_residual_coding_disabled_flag` equal to 1 and `pic_sign_data_hiding_enabled_flag` equal to 1. However, based on the aforementioned drawbacks, the combination of regular residual coding (e.g., `slice_ts_residual_coding_disabled_flag` equal to 1) with symbolic data hiding (e.g., `pic_sign_data_hiding_enabled_flag` equal to 1) is not a useful configuration. Therefore, disallowing this combination can reduce syntactic redundancy.
[0129] Embodiments of this disclosure provide a method for solving the above-mentioned problems. In some embodiments, SDH is disabled for both TSs with non-BDPCM blocks and TSs with BDPCM blocks, regardless of the value of slice_ts_residual_coding_disabled_flag. Figure 7An exemplary table showing conditions for disabling symbol data hiding, according to some embodiments of this disclosure, is illustrated. Figure 7 As shown, the variable `transform_skip_flag` is set to 1, regardless of the value of the variable `slice_ts_residual_coding_disabled_flag`. It is asserted that if the block is encoded in BDPCM mode, then the variable `transform_skip_flag` can be inferred to be 1.
[0130] Figure 8 Exemplary syntax, including a portion of residual coding syntax, is shown according to some embodiments of this disclosure. For example... Figure 8 As shown, changes to previous VVC are displayed in bold and italics, and suggested deletion syntax is further shown with strikethrough. For example, if the variable `transform_skip_flag` equals 1, symbolic data hiding will be disabled. Additionally, redundant condition checks in the variable `ph_dep_quant_enabled_flag` can be removed. According to the VVC specification, there is no valid case where both the flags `pic_sign_data_hiding_enabled_flag` and `ph_dep_quant_enabled_flag` are 1.
[0131] In some embodiments, SDH is disabled if the block is encoded in BDPCM mode (e.g., the variable BdpcmFlag equals 1), regardless of the value of the variable slice_ts_residual_coding_disabled_flag. However, if the variable slice_ts_residual_coding_disabled_flag equals 1, SDH with TS blocks in non-BDPCM mode is allowed. If slice_ts_residual_coding_disabled_flag equals 0, SDH for TS blocks (with or without BDPCM) is disabled. Figure 9 An exemplary table is shown illustrating conditions that allow symbol data hiding for switching skip modes and block differential pulse code modulation modes according to some embodiments of this disclosure. Figure 9 As shown, in non-BDPCM mode (e.g., variable BdpcmFlag equals 0), SDH can be enabled if variable slice_ts_residual_coding_disabled_flag equals 1.
[0132] Figure 10 The present disclosure illustrates some embodiments including those for use with Figure 9 An exemplary syntax for a portion of the residual coding syntax for the conditions shown. For example... Figure 10 As shown, changes to the previous VVC are displayed in bold and italics, and suggested deletion syntax is further shown with strikethrough. For example, SDH is disabled if BdpcmFlag equals 0 (e.g., signHidden equals 0). Additionally, redundant condition checks for the variable ph_dep_quant_enabled_flag can be removed from the syntax.
[0133] In some embodiments, if the variable slice_ts_residual_coding_disabled_flag is equal to 1, symbolic data hiding is disabled for all coded blocks (e.g., TS and non-TS blocks). This is because when the variable slice_ts_residual_coding_disabled_flag is equal to 1, it is more likely that the slice is encoded in lossless mode, in which case SDH may not be suitable. Figure 11 Exemplary syntax, including a portion of the residual coding syntax for disabling symbolic data hiding, is shown according to some embodiments of this disclosure. For example... Figure 11 As shown, changes to previous VVCs are displayed in bold and italics, and suggested deletion syntax is further shown with strikethrough. For example, SDH is disabled when the variable slice_ts_residual_coding_disabled_flag equals 1.
[0134] In some embodiments, a slice-level symbol data hiding flag (e.g., the variable `slice_sign_data_hiding_enabled_flag`) can be introduced to control the symbol data hiding of the slice. For example, if the variable `slice_sign_data_hiding_enabled_flag` is equal to 0, then symbol bit hiding is disabled for the current slice. If the variable `slice_sign_data_hiding_enabled_flag` is equal to 1, then symbol bit hiding is enabled for the current slice. In some embodiments, when the variable `slice_sign_data_hiding_enabled_flag` does not exist, it is inferred that it is equal to 0.
[0135] In some embodiments, for a given slice, symbolic data hiding and slice_ts_residual_coding_disabled_flag == 1 are both disabled. More specifically, the following combinations are not allowed:
[0136] a.slice_sign_data_hiding_enabled_flag equals 1, and
[0137] b.slice_ts_residual_coding_disabled_flag equals 1
[0138] In some embodiments, the variable slice_sign_data_hiding_enabled_flag is signaled if the following two conditions are met: 1) the variable pic_sign_data_hiding_enabled_flag is equal to 1, meaning that the current image enables SDH, and 2) the slice_ts_residual_coding_disabled_flag is equal to 0, meaning that the slice is likely encoded in lossy mode, where SDH can be a useful tool.
[0139] Figure 12 Exemplary syntax, including a portion of the stripe header syntax for controlling stripe-level symbol data hiding flags, is shown according to some embodiments of this disclosure. For example... Figure 10 Therefore, changes to the previous VVC are shown in bold and italics. For example, as... Figure 10 As shown, a new variable, slice_sign_data_hiding_enabled_flag, has been added.
[0140] In some embodiments, if slice_sign_data_hiding_enabled_flag is not equal to 1, the slice-level slice_ts_residual_coding_disabled_flag is signaled. This is one way to disable the combination of slice_ts_residual_coding_disabled_flag and slice_sign_data_hiding_enabled_flag on the same slice.
[0141] Figure 13 Exemplary syntax is shown, according to some embodiments of this disclosure, including a portion of a residual coding syntax for controlling stripe-level symbolic data hiding flags. For example... Figure 13 As shown, changes to the previous VVC are displayed in bold, and suggested deletion syntax is further shown with strikethrough. For example, when the variable slice_sign_data_hiding_enabled_flag is equal to 0, SDH is disabled regardless of the values of the variables ph_dep_quant_enabled_flag or pic_sign_data_hiding_enabled_flag.
[0142] In some embodiments, the variable slice_sign_data_hiding_enabled_flag can be signaled before the variable slice_ts_residual_coding_disabled_flag is signaled, and if the variable slice_sign_data_hiding_enabled_flag is equal to 0, the variable slice_ts_residual_coding_disabled_flag can be conditionally signaled. Figure 14 Exemplary syntax according to some embodiments of this disclosure is shown, which includes a portion of the stripe header syntax for stripe-level symbolic data hiding flags. For example... Figure 14 As shown, changes to the previous VVC are displayed in bold. For example, if pic_sign_data_hidnig_enabled_flag is equal to 1, slice_sign_data_hiding_enabled_flag can be set. Figure 14 As shown, signal notifications at the slice level variable `slice_sign_data_hiding_enabled_flag` are conditional on the image level variable `pic_sign_data_hiding_enabled_flag`. Furthermore, signal notifications at the slice level variable `slice_ts_residual_coding_disabled_flag` are conditional on the slice_sign_data_hiding_enabled_flag variable.
[0143] In some embodiments, the signal notifications for the variable `slice_sign_data_hiding_enabled_flag` and the variable `slice_ts_residual_coding_disabled_flag` can be processed independently of each other. In other words, the signal notification of one is not conditional on the signal notification of the other. In some embodiments, this may require the encoder to send a value of 0 for the variable `slice_sign_data_hiding_enabled_flag` even if the encoder is already in lossless mode. Therefore, syntactic redundancy may occur. However, this can create flexibility later to use regular residual coding together with SDH for TS and BDPCM blocks, thereby improving the efficiency of lossy coding.
[0144] In some embodiments, the slice-level variable `slice_ts_residual_coding_disabled_flag` can be replaced with the slice-level lossless variable, `slice_losslesss_flag`. In some embodiments, a value of 1 for `slice_lossless_flag` indicates that the current slice is losslessly encoded, and all residual blocks of that slice are parsed using the `residual_coding()` syntax to resolve residual samples. A value of 0 for `slice_lossless_flag` indicates that the current slice is not losslessly encoded. In some embodiments, when `slice_lossless_flag` does not exist, it is inferred to be equal to 0.
[0145] Figure 15 illustrates an exemplary syntax according to some embodiments of this disclosure, which includes a portion of the slice header syntax for slice-level lossless flags. As shown in Figure 15, changes to previous VVCs are shown in bold italics, and suggested deletion syntax is further shown with strikethrough. For example, the variable slice_losslesss_flag is added and incorporated into the syntax. The variable slice_losslesss_flag is signaled after the slice type signaling. If the variable slice_lossless_flag is equal to 1, some or all loop filters (e.g., adaptive loop filters, sample adaptive offsets, deblocking filters, and luma mapping with chroma scaling) can be disabled for lossless slices. For example, if the variable slice_losslesss_flag is equal to 1, the variables slice_alf_enabled_flag, slice_sao_luma_flag, slice_deblocking_filter_override_flag, and slice_lmcs_enabled_flag are not signaled.
[0146] Figure 16 Exemplary syntaxes according to some embodiments of this disclosure are shown, including a portion of a residual coding syntax for stripe-level lossless marking. For example... Figure 16 As shown, changes to the previous VVC are displayed in bold and italics, and suggested deletion syntax is further shown with strikethrough. For example, the variable slice_losslesss_flag is added and incorporated into the syntax. In some embodiments, such as Figure 16 As shown, when determining the conditions for residual coding, the variable slice_losslesss_flag can replace the variable slice_ts_residual_coding_disabled_flag.
[0147] In some embodiments, the values of the variables `pic_sign_data_hiding_enabled_flag` and `slice_ts_residual_coding_disabled_flag` cannot both be equal to 1. When `pic_sign_data_hiding_enabled_flag` equals 1, the codec is most likely to operate in lossy mode, and the probability of `slice_ts_residual_coding_disabled_flag` being equal to 0 is very high for lossy compression. Therefore, to reduce syntactic redundancy, if `pic_sign_data_hiding_enabled_flag` equals 1, it can be inferred that `slice_ts_residual_coding_disabled_flag` is 0. The variable `slice_ts_residual_coding_disabled_flag` is only signaled when `pic_sign_data_hiding_enabled_flag` equals 0. Figure 17 Exemplary syntax, including a portion of striped header syntax with reduced syntactic redundancy, is shown according to some embodiments of this disclosure. For example... Figure 17 As shown, the changes from the previous VVC are displayed in bold and italics. For example, when the variable pic_sign_data_hiding_enabled_flag is equal to 0, the variable slice_ts_residual_coding_disabled_flag is equal to 1.
[0148] In some embodiments, symbolic data hiding and dependency quantization cannot be supported simultaneously for a given image. As a result, the variables `ph_dep_quant_enabled_flag` and `pic_sign_data_hiding_enabled_flag` may not both equal 1. To avoid this combination, if the variable `ph_dep_quant_enabled_flag` equals 1, the variable `slice_ts_residual_coding_disabled_flag` is signaled. Figure 18 Exemplary syntax according to some embodiments of this disclosure is shown, which includes a portion of a striped header syntax for conditions used for symbolic data hiding and dependency quantization. For example... Figure 18 As shown, changes to the previous VVC are displayed in bold italics. For example, as... Figure 18 As shown, when the variable ph_dep_quant_enabled_flag equals 1, the variable slice_ts_residual_coding_disabled_flag is notified by a signal.
[0149] In some embodiments, for a given slice, dependency quantization and slice_ts_residual_coding_disabled_flag == 1 cannot be supported simultaneously. To avoid this combination, if the variable ph_dep_quant_enabled_flag is equal to 1, the variable slice_ts_residual_coding_disabled_flag is not signaled.
[0150] In some embodiments, if both `slice_sign_data_hiding_enabled_flag` and `ph_dep_quant_enabled_flag` are non-zero, then `slice_ts_residual_coding_disabled_flag` will be signaled. More specifically,
[0151] if(!slice_sign_data_hiding_enabled_flag&&!ph_dep_quant_enabled_flag)
[0152] signal_residual_coding_disabled_flag
[0153] Embodiments of this disclosure also provide methods for performing video encoding. Figure 19 A flowchart illustrating an example video encoding method with transform skipping mode and symbol data hiding according to some embodiments of the present disclosure is shown. In some embodiments, Figure 19 The method shown can be derived from Figure 4 The illustrated device 400 performs the operation. In some embodiments, it can be based on... Figure 8 The syntax execution shown Figure 19 Method 19000 is shown. In some embodiments, it is performed according to the VVC standard. Figure 19 The method shown is 19000.
[0154] In step S19010, a video frame for encoding is received. In some embodiments, the video frame is in a bitstream. In some embodiments, a video frame for residual coding is received.
[0155] In step S19020, it is determined whether to encode the video frame according to the transform block-level transform skip mode. For example, as Figure 8 As shown, the variable transform_skip_flag can be used to determine whether a video frame is encoded according to the transform block-level transform skip mode.
[0156] In step S19030, in response to determining that the video frame is to be encoded according to the transform skip mode at the transform block level, symbolic data hiding is disabled for residual coding. For example, as Figure 8 As shown, when the variable `transform_skip_flag` equals 0, the variable `signHidden` is set to 0. Therefore, symbolic data hiding for residual coding is disabled. In some embodiments, disabling symbolic data hiding for residual coding does not depend on whether dependency quantization is enabled for the video frame. For example, as... Figure 8 As shown, the variable ph_dep_quant_enabled_flag is removed from the condition of the variable signHidden. In other words, the value of signHidden is independent of the variable ph_dep_quant_enabled_flag. In some embodiments, disabling symbolic data hiding for TSs with non-BDPCM blocks and TSs with BDPCM blocks can improve the efficiency of compression performance. For example, disabling symbolic data hiding removes the error propagation shown in Figure 6.
[0157] Figure 20 A flowchart illustrating an example video coding method with block differential pulse code modulation mode and symbol data hiding according to some embodiments of the present disclosure is shown. In some embodiments, Figure 20 The method 20000 shown can be used by Figure 4 The illustrated device 400 performs this function. In some embodiments, Figure 20 The method shown can be based on 20000 Figure 10 The syntax shown is executed. In some embodiments, Figure 20 The method shown is performed according to the VVC standard.
[0158] In step S20010, a video frame for encoding is received. In some embodiments, the video frame is in a bitstream. In some embodiments, a video frame for residual coding is received.
[0159] In step S20020, it is determined whether the video frame is encoded according to a block differential pulse code modulation (BCD) mode. In some embodiments, it is determined whether the video frame is encoded according to a block-level BCD mode. For example, such as Figure 10 As shown, the variable BdpcmFlag can be used to determine whether a video frame has been encoded according to a block-level block differential pulse code modulation mode.
[0160] In step S20030, in response to determining that the video frame is encoded according to the block differential pulse code modulation mode, symbol data hiding is disabled for residual coding. For example, as Figure 10As shown, when the variable BdpcmFlag equals 0, the variable signHidden is set to 0. Therefore, for residual coding, symbolic data hiding is disabled. In some embodiments, disabling symbolic data hiding for residual coding does not depend on whether dependency quantization is enabled for the video frame. For example, as... Figure 10 As shown, the variable ph_dep_quant_enabled_flag is removed from the condition of the variable signHidden. In other words, the value of signHidden is independent of the variable ph_dep_quant_enabled_flag. In some embodiments, disabling symbolic data hiding of a TS with BDPCM blocks can improve the efficiency of compression performance. For example, disabling symbolic data hiding removes the error propagation shown in Figure 6.
[0161] Figure 21 A flowchart illustrating an example video coding method with transform skip residual coding and symbolic data hiding according to some embodiments of the present disclosure is shown. In some embodiments, Figure 21 The method 21000 shown can be derived from Figure 4 The illustrated device 400 performs this function. In some embodiments, Figure 21 The method shown 21000 can be based on Figure 11 The syntax shown is executed. In some embodiments, Figure 21 The method 21000 shown is performed according to the VVC standard.
[0162] In step S21010, a video frame for encoding is received. In some embodiments, the video frame is in a bitstream. In some embodiments, a video frame for residual coding is received.
[0163] In step S21020, it is determined whether the video frame should be encoded by skipping the residual coding mode based on the stripe-level transformation. For example, as... Figure 11 As shown, the variable slice_ts_residual_coding_disabled_flag can be used to determine whether a video frame is encoded by skipping the residual coding mode based on the slice-level transformation.
[0164] In step S21030, in response to determining that the video frame was not encoded by skipping the residual coding mode according to the stripe-level transformation, the symbolic data hiding used for residual coding is turned off. For example, as Figure 11As shown, when the variable `slice_ts_residual_coding_disabled_flag` equals 1, it is determined that the video frame was not encoded using the residual coding mode skipping according to the slice-level transformation. As a result, the variable `signHidden` is set to 0, and symbolic data hiding for residual coding is disabled. In some embodiments, disabling symbolic data hiding for residual coding does not depend on whether dependency quantization is enabled for the video frame. For example, as... Figure 11 As shown, the variable `ph_dep_quant_enabled_flag` is removed from the condition of the variable `signHidden`. In other words, the value of `signHidden` is independent of the variable `ph_dep_quant_enabled_flag`. In some embodiments, symbolic data hiding is a lossy coding tool. Regular residual coding (e.g., `slice_ts_residual_coding_disabled_flag` equals 1) can achieve more compression gain than TS residual coding. Therefore, when the variable `slice_ts_residual_coding_disabled_flag` equals 1, the compression performed can be lossless. Therefore, symbolic data hiding can be disabled.
[0165] Figure 22 A flowchart illustrating an example video coding method with transform skip residual coding and symbolic data hiding at the image level, according to some embodiments of this disclosure, is shown. In some embodiments, Figure 22 The method 22000 shown can be used by Figure 4 The illustrated device 400 performs this function. In some embodiments, Figure 22 The method shown 22000 can be based on Figure 12 The syntax shown is or Figure 13 The syntax shown is executed. In some embodiments, Figure 22 The method 22000 shown is performed according to the VVC standard.
[0166] In step S22010, a video frame for encoding is received. In some embodiments, the video frame is in a bitstream. In some embodiments, a video frame for residual coding is received.
[0167] In step S22020, it is determined whether symbolic data hiding is enabled at the image level for the video frame, and whether transform skip residual coding is disabled at the stripe level for the video frame. For example, as Figure 12As shown, the variable pic_sign_data_hiding_enabled_flag can be used to determine whether symbolic data hiding is enabled at the image level for a video frame, and the variable slice_ts_residual_coding_disabled_flag can be used to determine whether the video frame was encoded by skipping residual coding mode based on the transformation at the slice level of the video frame.
[0168] In step S22030, in response to determining that symbolic data hiding is enabled at the image level and transform skip residual coding is enabled at the stripe level for the video frame, symbolic data hiding is enabled at the stripe level for the video frame. For example, as Figure 12 As shown, when the variable `pic_sign_data_hiding_enabled_flag` equals 1, it is determined that symbolic data hiding is enabled at the image level for the video frame. Furthermore, when the variable `slice_ts_residual_coding_disabled_flag` equals 1, it is determined that the video frame is not encoded according to the slice-level transform-skip residual coding mode. As a result, the variable `slice_sign_data_hiding_enabled_flag` is set to 1, and symbolic data hiding is enabled at the slice level. In some embodiments, symbolic data hiding is a lossy coding tool. Regular residual coding (e.g., `slice_ts_residual_coding_disabled_flag` equals 1) can achieve more compression gain than transform-skip residual coding. Therefore, transform-skip residual coding may be lossy compression. Therefore, symbolic data hiding can be enabled.
[0169] In some embodiments, method 22000 further includes steps S22040 and S22050. In step S22040, it is determined whether symbolic data hiding is disabled at the stripe level of the video frame. For example, as Figure 13 As shown, you can check the variable slice_sign_data_hiding_enabled_flag to determine whether symbol data hiding is disabled at the slice level of the video frame.
[0170] In step S22050, in response to determining that symbolic data hiding is disabled at the stripe level for the video frame, symbolic data hiding for residual coding is disabled. Figure 13 As shown, when the variable `slice_sign_data_hiding_enabled_flag` equals 0, the variable `signHidden` is set to 0, and symbolic data hiding is disabled for residual coding. In some embodiments, disabling symbolic data hiding for residual coding does not depend on whether dependency quantization is enabled for the video frame. Figure 13 As shown, the variable ph_dep_quant_enabled_flag is removed from the condition of the variable signHidden. In other words, the value of signHidden is independent of the variable ph_dep_quant_enabled_flag.
[0171] Figure 23 A flowchart of an example video coding method according to some embodiments of the present disclosure is shown, the video coding method having image-level symbolic data hiding, stripe-level symbolic data hiding, and stripe-level transform skip residual coding. In some embodiments, Figure 23 The method 23000 shown can be derived from Figure 4 The illustrated device 400 performs this function. In some embodiments, Figure 23 The method shown 23000 can be based on Figure 14 The syntax shown is executed. In some embodiments, Figure 23 The method 23000 shown can be executed according to the VVC standard.
[0172] In step S23010, a video frame for encoding is received. In some embodiments, the video frame is in a bitstream. In some embodiments, a video frame for residual coding is received.
[0173] In step S23020, it is determined whether symbolic data hiding is enabled at the image level of the video frame. For example, as Figure 14 As shown, the variable pic_sign_data_hiding_enabled_flag can be used to determine whether symbolic data hiding is enabled at the image level of a video frame.
[0174] In step S23030, in response to determining that symbolic data hiding is enabled at the image level of the video frame, symbolic data hiding is enabled at the stripe level of the video frame. For example, as Figure 14 As shown, when the variable `pic_sign_data_hiding_enabled_flag` equals 1, symbolic data hiding is enabled at the image level of the video frame. Consequently, the variable `slice_sign_data_hiding_enabled_flag` is set to 1, and symbolic data hiding is enabled at the slice level.
[0175] In step S23040, it is determined whether symbolic data hiding is disabled at the stripe level of the video frame. For example, as Figure 14 As shown, check the variable slice_sign_data_hiding_enabled_flag to determine whether symbolic data hiding is disabled at the slice level of the video frame.
[0176] In step S23050, in response to the determination that symbolic data hiding is disabled at the stripe level of the video frame, transform skip residual coding is disabled at the stripe level of the video frame. For example, as Figure 14 As shown, if the variable `slice_sign_data_hiding_enabled_flag` equals 0, then the variable `slice_ts_residual_coding_disabled_flag` is set to 1, and transform skip residual coding is disabled at the slice level of the video frame. In some embodiments, symbolic data hiding is a lossy coding tool. Regular residual coding (e.g., `slice_ts_residual_coding_disabled_flag` equals 1) can achieve more compression gain than transform skip residual coding. Therefore, transform skip residual coding may be lossy compression. When symbolic data hiding is disabled, transform skip residual coding at the slice level is also disabled.
[0177] Figure 24 A flowchart illustrating an example video coding method with lossless coding mode and symbolic data hiding according to some embodiments of the present disclosure is shown. In some embodiments, Figure 24 The method 24000 shown can be used by Figure 4 The device 400 performs this action. In some embodiments, Figure 24 The method 24000 shown can be based on the syntax shown in Figure 15 or Figure 16 The syntax shown is executed in step 24. In some embodiments, Figure 24 The method 24000 shown is performed according to the VVC standard.
[0178] In step S24010, a video frame for encoding is received. In some embodiments, the video frame is in a bitstream. In some embodiments, a video frame for residual coding is received.
[0179] In step S24020, it is determined whether the video frame is encoded in lossless mode. In some embodiments, it is determined whether the video frame is encoded in lossless mode at the slice level. For example, as shown in Figure 15, the variable slice_losslesss_flag can be used to determine whether the video frame is encoded in lossless mode at the slice level.
[0180] In step S24030, in response to determining that the video frame is encoded in lossless mode at the slice level, one or more loop filters are turned off at the slice level. For example, as shown in Figure 15, if the variable slice_losslesss_flag equals 1, then the variables slice_alf_enabled_flag, slice_sao_luma_flag, slice_deblocking_filter_override_flag, and slice_lmcs_enabled_flag are not signaled. In some embodiments, turning off the one or more loop filters can make video encoding more efficient.
[0181] Figure 25 A flowchart of an example video coding method according to some embodiments of the present disclosure is shown, the video coding method having symbolic data hiding at the image level and transform skip residual coding at the stripe level, in some embodiments, Figure 25 The method 25000 shown can be derived from Figure 4 The illustrated device 400 performs this function. In some embodiments, Figure 25 The method shown 25000 can be based on Figure 17 The syntax shown is used to execute. In some embodiments, Figure 25 The method 25000 shown is performed according to the VVC standard.
[0182] In step S25010, a video frame for encoding is received. In some embodiments, the video frame is in a bitstream. In some embodiments, a video frame for residual coding is received.
[0183] In step S25020, it is determined whether symbolic data hiding is disabled at the image level of the video frame. For example, as... Figure 17 As shown, the variable pic_sign_data_hiding_enabled_flag can be used to determine whether symbolic data hiding is disabled at the image level of a video frame.
[0184] In step S25030, in response to determining that symbolic data hiding is disabled at the image level of the video frame, transform skip residual coding is disabled at the stripe level of the video frame. For example, as Figure 17As shown, the variable `pic_sign_data_hiding_enabled_flag` is checked. If `pic_sign_data_hiding_enabled_flag` equals 0, the variable `slice_ts_residual_coding_disabled_flag` is signaled. As a result, transform skip residual coding is disabled at the slice level for the video frame. In some embodiments, the combination of regular residual coding (e.g., `slice_ts_residual_coding_disabled_flag == 1`) and symbolic data hiding (e.g., `pic_sign_data_hiding_enabled_flag == 1`) is not a useful configuration. Therefore, disallowing this combination reduces syntactic redundancy.
[0185] Figure 26 A flowchart illustrating an example video coding method with dependent quantization and transform skip residual coding at the strip level, according to some embodiments of this disclosure, is shown. In some embodiments, Figure 26 The method 26000 shown can be derived from Figure 4 The illustrated device 400 performs this function. In some embodiments, Figure 26 The method shown 26000 can be based on Figure 18 The syntax shown is executed. In some embodiments, Figure 26 The method 26000 shown is performed according to the VVC standard 26.
[0186] In step S26010, a video frame for encoding is received. In some embodiments, the video frame is in a bitstream. In some embodiments, a video frame for residual coding is received.
[0187] In step S26020, it is determined whether to enable dependency quantization for video frames. For example, as... Figure 18 As shown, the variable ph_dep_quant_enabled_flag can be used to determine whether dependency quantization is enabled for video frames.
[0188] In step S26030, in response to determining that dependent quantization is enabled for a video frame, transform skip residual coding is disabled at the stripe level of the video frame. For example, as Figure 18As shown, the variable `ph_dep_quant_enabled_flag` is checked. If `ph_dep_quant_enabled_flag` equals 1, the variable `slice_ts_residual_coding_disabled_flag` is signaled. As a result, transform skip residual coding is disabled at the slice level of the video frame. In some embodiments, the combination of regular residual coding (e.g., `slice_ts_residual_coding_disabled_flag == 1`) and symbolic data hiding (e.g., `pic_sign_data_hiding_enabled_flag == 1`) is not a useful configuration. Therefore, disallowing this combination reduces syntactic redundancy.
[0189] In some embodiments, a non-transitory computer-readable storage medium including instructions is also provided, and these instructions can be executed by a device (such as the disclosed encoder and decoder) to perform the methods described above. Common forms of non-transitory media include, for example, floppy disks, hard disks, solid-state drives, magnetic tape or any other magnetic data storage media, CD-ROMs, any other optical data storage media, any physical media with a perforated pattern, RAM, PROMs and EPROMs, FLASH-EPROMs or any other flash memory, NVRAMs, caches, registers, any other memory chips or cassettes, and their networking versions. The device may include one or more processors (CPUs), input / output interfaces, network interfaces, and / or memory.
[0190] It should be noted that relational terms such as “first” and “second” in this document are used only to distinguish an entity or operation from another entity or operation, and do not require or imply any actual relationship or order between these entities or operations. Furthermore, the words “including,” “having,” “containing,” and “comprising,” and other similar forms are equivalent in meaning and are open-ended, because one or more items following any of these words do not imply an exhaustive list of such one or more items, or that it is limited to only the listed one or more items.
[0191] As used herein, unless otherwise specified, the term "or" includes all possible combinations except where impractical. For example, if a database is declared to include A or B, then unless otherwise expressly stated or impractical, the database may include A, or B, or A and B. As a second example, if a database is declared to include A, B, or C, then unless otherwise expressly stated or impractical, the database may include A, or B, or C, or A and B, or A and C, or B and C, or A, B, and C.
[0192] It should be understood that the above embodiments can be implemented by hardware, software (program code), or a combination of hardware and software. If implemented by software, it can be stored in the above-described computer-readable medium. The software, when executed by a processor, can perform the disclosed methods. The computing units and other functional units described in this disclosure can be implemented by hardware, software, or a combination of hardware and software. Those skilled in the art will also understand that the above-described multiple modules / units can be combined into one module / unit, and each of the above-described modules / units can be further divided into multiple sub-modules / sub-units.
[0193] In the foregoing description, numerous specific details have been described with reference to embodiments, which may vary depending on implementation. Certain modifications and changes may be made to the described embodiments. Other embodiments will be apparent to those skilled in the art upon consideration of the specification and practice of the invention disclosed herein. This specification and embodiments are to be considered exemplary only, and the true scope and spirit of this disclosure are indicated by the appended claims. The sequences of steps shown in the accompanying drawings are for illustrative purposes only and are not intended to limit one to any particular sequence of steps. Therefore, those skilled in the art will understand that these steps may be performed in different orders while implementing the same method.
[0194] The embodiments may be further described using the following terms:
[0195] 1. A video encoding method, comprising:
[0196] Receive video frames used for residual coding;
[0197] Determine whether to encode the video frame according to the transform block-level transform skip mode; and
[0198] In response to determining that the video frame is to be encoded according to the transform skip mode, symbolic data hiding for the residual encoding is turned off.
[0199] 2. The video decoding method according to Clause 1, wherein disabling symbol data hiding for the residual coding is independent of whether dependency quantization is enabled for the video frame.
[0200] 3. The video encoding method according to Clause 1, wherein the video frame is in a bit stream.
[0201] 4. The video coding method according to Clause 1, wherein the method is performed in accordance with a general video coding standard.
[0202] 5. A video encoding method, comprising:
[0203] Receive video frames used for residual coding;
[0204] Determine whether to encode the video frame according to the block differential pulse code modulation mode; and
[0205] In response to determining that the video frame is encoded according to the block differential pulse code modulation mode, symbol data hiding for the residual coding is turned off.
[0206] 6. The video coding method according to Clause 5, wherein determining whether to encode the video frame according to the block differential pulse code modulation mode further includes:
[0207] Determine whether to encode the video frame according to the block differential pulse code modulation mode at the block level.
[0208] 7. The video decoding method according to Clause 5, wherein disabling symbolic data hiding for the residual coding is independent of whether dependency quantization is enabled for the video frame.
[0209] 8. The video encoding method according to Clause 5, wherein the video frame is in a bit stream.
[0210] 9. The video coding method described in Clause 5, wherein the method is performed in accordance with a common video coding standard.
[0211] 10. A video encoding method, comprising:
[0212] Receive video frames used for residual coding;
[0213] Determine whether to encode the video frame by skipping the residual coding mode based on the stripe-level transformation; and
[0214] In response to determining that the video frame was not encoded according to the strip-level transformation skip residual coding mode, symbol data hiding for the residual coding is turned off.
[0215] 11. The video coding method according to Clause 10, wherein disabling symbolic data hiding for the residual coding is independent of whether dependency quantization for the video frame is enabled.
[0216] 12. The video encoding method according to Clause 10, wherein the video frame is in a bit stream.
[0217] 13. The video coding method according to Clause 10, wherein the method is performed in accordance with a general video coding standard.
[0218] 14. A video encoding method, comprising:
[0219] Receive video frames used for residual coding;
[0220] Determine whether symbolic data hiding is enabled at the image level of the video frame, and whether transform skip residual coding is disabled at the stripe level of the video frame; and
[0221] In response to determining that symbolic data hiding is enabled at the image level of the video frame and transform skip residual coding is enabled at the strip level of the video frame, symbolic data hiding at the strip level of the video frame is enabled.
[0222] 15. The video encoding method according to Clause 14 further includes:
[0223] Determine whether symbolic data hiding is disabled at the stripe level of the video frame; and
[0224] In response to the determination that symbolic data hiding is disabled at the stripe level of the video frame, symbolic data hiding for residual coding is disabled.
[0225] 16. The video decoding method according to Clause 14, wherein the video frame is in a bit stream.
[0226] 17. The video decoding method described in Clause 14, wherein the method is performed in accordance with a general video decoding standard.
[0227] 18. A video encoding method, comprising:
[0228] Receive video frames used for residual coding;
[0229] Determine whether symbolic data hiding is enabled at the image level of the video frame;
[0230] In response to determining that symbolic data hiding is enabled at the image level of the video frame, enable symbolic data hiding at the strip level of the video frame;
[0231] Determine whether symbolic data hiding is disabled at the stripe level of the video frame; and
[0232] In response to determining that symbolic data hiding is disabled at the strip level of the video frame, transform skip residual coding is disabled at the strip level of the video frame.
[0233] 19. The video decoding method according to Clause 18, wherein the video frame is in a bit stream.
[0234] 20. The video decoding method according to Clause 18, wherein the method is performed in accordance with a general video decoding standard.
[0235] 21. A video encoding method, comprising:
[0236] Receive video frames used for residual coding;
[0237] Determine whether the video frame is encoded in lossless mode at the stripe level; and
[0238] In response to determining that the video frame is encoded in the lossless mode at the slice level, one or more loop filters at the slice level are turned off.
[0239] 22. The video decoding method according to Clause 21, wherein the video frame is in a bit stream.
[0240] 23. The video coding method described in Clause 21, wherein the method is performed in accordance with a general video coding standard.
[0241] 24. A video encoding method, comprising:
[0242] Receive video frames used for residual coding;
[0243] Determine whether symbolic data hiding is disabled at the image level of the video frame;
[0244] In response to determining that symbolic data hiding is disabled at the image level of the video frame, transform skip residual coding is disabled at the strip level of the video frame.
[0245] 25. The video decoding method according to Clause 24, wherein the video frame is in a bit stream.
[0246] 26. The video decoding method described in Clause 24, wherein the method is performed in accordance with a general video decoding standard.
[0247] 27. A video encoding method, comprising:
[0248] Receive video frames used for residual coding;
[0249] Determine whether dependency quantization is enabled for the video frame;
[0250] In response to determining that the dependency quantization is enabled for the video frame, transform skip residual coding at the stripe level of the video frame is disabled.
[0251] 28. The video decoding method according to Clause 27, wherein the video frame is in a bit stream.
[0252] 29. The video decoding method described in Clause 27, wherein the method is performed in accordance with a general video decoding standard.
[0253] 30. A system for performing video data processing, the system comprising:
[0254] Memory for storing instruction sets; and
[0255] A processor configured to execute the instruction set to cause the system to perform the following operations:
[0256] Receive video frames used for residual coding;
[0257] Determine whether to encode the video frame according to the transform block-level transform skip mode; and
[0258] In response to determining that the video frame is to be encoded according to the transform skip mode, symbolic data hiding for the residual encoding is turned off.
[0259] 31. The system according to Clause 30, wherein disabling symbolic data hiding for the residual coding is independent of whether dependency quantization is enabled for the video frame.
[0260] 32. The system according to Clause 30, wherein the video frame is in a bit stream.
[0261] 33. The system described in Clause 30, wherein the residual coding is performed in accordance with a common video coding standard.
[0262] 34. A system for performing video data processing, the system comprising:
[0263] Memory for storing instruction sets; and
[0264] A processor configured to execute the instruction set to cause the system to perform the following operations:
[0265] Receive video frames used for residual coding;
[0266] Determine whether to encode the video frame according to the block differential pulse code modulation mode; and
[0267] In response to determining that the video frame is encoded according to the block differential pulse code modulation mode, symbol data hiding for the residual coding is turned off.
[0268] 35. The system according to Clause 34, wherein it is determined that the processor is also configured to execute the instruction set to cause the system to perform:
[0269] Determine whether to encode the video frame according to the block differential pulse code modulation mode at the block level.
[0270] 36. The system according to Clause 34, wherein disabling symbolic data hiding for the residual coding is independent of whether dependency quantization is enabled for the video frame.
[0271] 37. The system according to Clause 34, wherein the video frame is in a bit stream.
[0272] 38. The system described in Clause 34, wherein the residual coding is performed in accordance with a common video coding standard.
[0273] 39. A system for performing video data processing, the system comprising:
[0274] Memory for storing instruction sets; and
[0275] A processor configured to execute the instruction set to cause the system to perform the following operations:
[0276] Receive video frames used for residual coding;
[0277] Determine whether to encode the video frame by skipping the residual coding mode based on the stripe-level transformation; and
[0278] In response to determining that the video frame was not encoded according to the strip-level transformation skip residual coding mode, symbol data hiding for the residual coding is turned off.
[0279] 40. The system as described in Clause 39, wherein disabling symbolic data hiding for the residual coding is independent of whether dependency quantization for the video frame is enabled.
[0280] 41. The system according to Clause 39, wherein the video frame is in a bit stream.
[0281] 42. The system described in Clause 39, wherein the residual coding is performed in accordance with a common video coding standard.
[0282] 43. A system for performing video data processing, the system comprising:
[0283] Memory for storing instruction sets; and
[0284] A processor configured to execute the instruction set to cause the system to perform the following operations:
[0285] Receive video frames used for residual coding;
[0286] Determine whether symbolic data hiding is enabled at the image level of the video frame, and whether transform skip residual coding is disabled at the stripe level of the video frame; and
[0287] In response to determining that symbolic data hiding is enabled at the image level of the video frame and transform skip residual coding is enabled at the strip level of the video frame, symbolic data hiding at the strip level of the video frame is enabled.
[0288] 44. The system according to Clause 43, wherein the processor is further configured to execute the instruction set to cause the system to perform:
[0289] Determine whether symbolic data hiding is disabled at the stripe level of the video frame; and
[0290] In response to the determination that symbolic data hiding is disabled at the stripe level of the video frame, symbolic data hiding for residual coding is disabled.
[0291] 45. The system according to Clause 43, wherein the video frame is in a bit stream.
[0292] 46. The system described in Clause 43, wherein the residual coding is performed in accordance with a common video coding standard.
[0293] 47. A system for performing video data processing, the system comprising:
[0294] Memory for storing instruction sets; and
[0295] A processor configured to execute the instruction set to cause the system to perform the following operations:
[0296] Receive video frames used for residual coding;
[0297] Determine whether symbolic data hiding is enabled at the image level of the video frame;
[0298] In response to determining that symbolic data hiding is enabled at the image level of the video frame, symbolic data hiding is enabled at the stripe level of the video frame;
[0299] Determine whether symbolic data hiding is disabled at the stripe level of the video frame; and
[0300] In response to determining that symbolic data hiding is disabled at the strip level of the video frame, transform skip residual coding is disabled at the strip level of the video frame.
[0301] 48. The system described in Clause 47, wherein the video frame is in a bit stream.
[0302] 49. The system described in Clause 47, wherein the residual coding is performed in accordance with a common video coding standard.
[0303] 50. A system for performing video data processing, the system comprising:
[0304] Memory for storing instruction sets; and
[0305] A processor configured to execute the instruction set to cause the system to perform the following operations:
[0306] Receive video frames used for residual coding;
[0307] Determine whether the video frame is encoded in lossless mode at the stripe level; and
[0308] In response to determining that the video frame is encoded in the lossless mode at the slice level, one or more loop filters at the slice level are turned off.
[0309] 51. The system according to Clause 50, wherein the video frame is in a bit stream.
[0310] 52. The system described in Clause 50, wherein the residual coding is performed in accordance with a common video coding standard.
[0311] 53. A system for performing video data processing, the system comprising:
[0312] Memory for storing instruction sets; and
[0313] A processor configured to execute the instruction set to cause the system to perform the following operations:
[0314] Receive video frames used for residual coding;
[0315] Determine whether symbolic data hiding is disabled at the image level of the video frame;
[0316] In response to determining that symbolic data hiding is disabled at the image level of the video frame, transform skip residual coding is disabled at the strip level of the video frame.
[0317] 54. The system according to Clause 53, wherein the video frame is in a bit stream.
[0318] 55. The system described in Clause 54, wherein the residual coding is performed in accordance with a common video coding standard.
[0319] 56. A system for performing video data processing, the system comprising:
[0320] Memory for storing instruction sets; and
[0321] A processor configured to execute the instruction set to cause the system to perform the following operations:
[0322] Receive video frames used for residual coding;
[0323] Determine whether dependency quantization is enabled for the video frame;
[0324] In response to determining that the dependency quantization is enabled for the video frame, transform skip residual coding at the stripe level of the video frame is disabled.
[0325] 57. The system according to Clause 56, wherein the video frame is in a bit stream.
[0326] 58. The system described in Clause 56, wherein the residual coding is performed in accordance with a common video coding standard.
[0327] 59. A non-transitory computer-readable medium storing a set of instructions executable by one or more processors of a device to cause the device to initiate a method for performing video data processing, the method comprising:
[0328] Receive video frames used for residual coding;
[0329] Determine whether to encode the video frame according to the transform block-level transform skip mode; and
[0330] In response to determining that the video frame is to be encoded according to the transform skip mode, symbolic data hiding for the residual encoding is turned off.
[0331] 60. The non-transitory computer-readable medium as described in Clause 59, wherein disabling symbolic data hiding for the residual coding is independent of whether dependent quantization is enabled for the video frame.
[0332] 61. The non-transitory computer-readable medium as described in Clause 59, wherein the video frame is in a bit stream.
[0333] 62. The non-transitory computer-readable medium as described in Clause 59, wherein the method is performed in accordance with a general video coding standard.
[0334] 63. A non-transitory computer-readable medium storing a set of instructions executable by one or more processors of a device to cause the device to initiate a method for performing video data processing, the method comprising:
[0335] Receive video frames used for residual coding;
[0336] Determine whether to encode the video frame according to the block differential pulse code modulation mode; and
[0337] In response to determining that the video frame is encoded according to the block differential pulse code modulation mode, symbol data hiding for the residual coding is turned off.
[0338] 64. A non-transitory computer-readable medium as described in Clause 63, wherein the instruction set is executable by the at least one processor of the computer system to enable the computer system to further perform:
[0339] Determine whether to encode the video frame according to the block differential pulse code modulation mode at the block level.
[0340] 65. The non-transitory computer-readable medium as described in Clause 63, wherein disabling symbolic data hiding for the residual coding is independent of whether dependent quantization is enabled for the video frame.
[0341] 66. The non-transitory computer-readable medium as described in Clause 63, wherein the video frame is in a bit stream.
[0342] 67. A non-transitory computer-readable medium as described in Clause 63, wherein the method is performed in accordance with a common video coding standard.
[0343] 68. A non-transitory computer-readable medium storing a set of instructions executable by one or more processors of a device to cause the device to initiate a method for performing video data processing, the method comprising:
[0344] Receive video frames used for residual coding;
[0345] Determine whether to encode the video frame by skipping the residual coding mode based on the stripe-level transformation; and
[0346] In response to determining that the video frame was not encoded according to the strip-level transformation skip residual coding mode, symbol data hiding for the residual coding is turned off.
[0347] 69. The non-transitory computer-readable medium as described in Clause 68, wherein disabling symbolic data hiding for the residual coding is independent of whether dependency quantization for the video frame is enabled.
[0348] 70. The non-transitory computer-readable medium as described in Clause 68, wherein the video frames are in a bit stream.
[0349] 71. A non-transitory computer-readable medium as described in Clause 68, wherein the method is performed in accordance with a common video coding standard.
[0350] 72. A non-transitory computer-readable medium storing a set of instructions executable by one or more processors of a device to cause the device to initiate a method for performing video data processing, the method comprising:
[0351] Receive video frames used for residual coding;
[0352] Determine whether symbolic data hiding is enabled at the image level of the video frame, and whether transform skip residual coding is disabled at the stripe level of the video frame; and
[0353] In response to determining that symbolic data hiding is enabled at the image level of the video frame and transform skip residual coding is enabled at the strip level of the video frame, symbolic data hiding at the strip level of the video frame is enabled.
[0354] 73. A non-transitory computer-readable medium as described in Clause 72, wherein the instruction set is executable by the at least one processor of the computer system to enable the computer system to further perform:
[0355] Determine whether symbolic data hiding is disabled at the stripe level of the video frame; and
[0356] In response to the determination that symbolic data hiding is disabled at the stripe level of the video frame, symbolic data hiding for residual coding is disabled.
[0357] 74. The non-transitory computer-readable medium as described in Clause 72, wherein the video frames are in a bit stream.
[0358] 75. A non-transitory computer-readable medium as described in Clause 72, wherein the method is performed in accordance with a general video coding standard.
[0359] 76. A non-transitory computer-readable medium storing an instruction set executable by one or more processors of a device to cause the device to initiate a method for performing video data processing, the method comprising:
[0360] Receive video frames used for residual coding;
[0361] Determine whether symbolic data hiding is enabled at the image level of the video frame;
[0362] In response to determining that symbolic data hiding is enabled at the image level of the video frame, symbolic data hiding is enabled at the stripe level of the video frame;
[0363] Determine whether symbolic data hiding is disabled at the stripe level of the video frame; and
[0364] In response to determining that symbolic data hiding is disabled at the strip level of the video frame, transform skip residual coding is disabled at the strip level of the video frame.
[0365] 77. The non-transitory computer-readable medium as described in Clause 76, wherein the video frame is in a bit stream.
[0366] 78. A non-transitory computer-readable medium as described in Clause 76, wherein the method is performed in accordance with a general video coding standard.
[0367] 79. A non-transitory computer-readable medium storing an instruction set executable by one or more processors of a device to cause the device to initiate a method for performing video data processing, the method comprising:
[0368] Receive video frames used for residual coding;
[0369] Determine whether the video frame is encoded in lossless mode at the stripe level; and
[0370] In response to determining that the video frame is encoded in the lossless mode at the slice level, one or more loop filters at the slice level are turned off.
[0371] 80. The non-transitory computer-readable medium as described in Clause 79, wherein the video frames are in a bit stream.
[0372] 81. A non-transitory computer-readable medium as described in Clause 79, wherein the method is performed in accordance with a general video coding standard.
[0373] 82. A non-transitory computer-readable medium storing an instruction set executable by one or more processors of a device to cause the device to initiate a method for performing video data processing, the method comprising:
[0374] Receive video frames used for residual coding;
[0375] Determine whether symbolic data hiding is disabled at the image level of the video frame;
[0376] In response to determining that symbolic data hiding is disabled at the image level of the video frame, transform skip residual coding is disabled at the strip level of the video frame.
[0377] 83. The non-transitory computer-readable medium as described in Clause 82, wherein the video frame is in a bit stream.
[0378] 84. A non-transitory computer-readable medium as described in Clause 82, wherein the method is performed in accordance with a common video coding standard.
[0379] 85. A non-transitory computer-readable medium storing a set of instructions executable by one or more processors of a device to cause the device to initiate a method for performing video data processing, the method comprising:
[0380] Receive video frames used for residual coding;
[0381] Determine whether dependency quantization is enabled for the video frame;
[0382] In response to determining that the dependency quantization is enabled for the video frame, transform skip residual coding at the stripe level of the video frame is disabled.
[0383] 86. A non-transitory computer-readable medium as described in Clause 85, wherein the video frames are in a bit stream.
[0384] 87. A non-transitory computer-readable medium as described in Clause 85, wherein the method is performed in accordance with a general video coding standard.
[0385] Exemplary embodiments have been disclosed in the accompanying drawings and description. However, many variations and modifications can be made to these embodiments. Therefore, although specific terminology has been used, it is used only in a general and descriptive sense and not for limiting purposes.
Claims
1. A method for encoding a video sequence into a bitstream, characterized in that, include: Receive video frames used for residual coding; The first stripe-level flag is encoded into the bitstream, indicating whether symbolic data hiding is disabled for the video frame at the stripe level; and Based on the value of the first strip level flag, determine whether to skip encoding using a second strip level flag, which indicates whether to disable transform skip residual encoding for the video frame at the strip level.
2. The method according to claim 1, characterized in that, The first strip level flag includes: a strip level flag that enables strip symbol data hiding.
3. The method according to claim 1, characterized in that, The second stripe level flag includes: a stripe level flag that disables stripe transform skip residual coding.
4. The method according to claim 3, characterized in that, Also includes: In response to the value of the first stripe-level flag indicating that symbolic data hiding is turned off at the stripe level for the video frame, the second stripe-level flag is encoded into the bitstream.
5. The method according to claim 1, characterized in that, Disabling symbolic data hiding for the residual coding is independent of whether dependency quantization is enabled for the video frame.
6. The method as described in claim 1, characterized in that, The video frames are in a bitstream.
7. The method according to claim 1, characterized in that, The method is performed according to the common video coding standard.
8. A method for decoding a bitstream to output a video stream, characterized in that, include: Receive a bitstream based on residual coding, the bitstream including a first stripe-level flag indicating whether symbolic data hiding is turned off at the stripe level; Decode the first stripe level flag; and Based on the value of the first stripe-level flag, determine whether to decode the second stripe-level flag indicating whether to disable transform skip residual coding at the stripe level.
9. The method according to claim 8, characterized in that, Also includes: In response to the first stripe-level flag indicating that symbolic data hiding is turned off at the stripe level, the second stripe-level flag is decoded.
10. The method according to claim 8, characterized in that, Also includes: In response to the first stripe level flag being equal to 1, the decoding of the second stripe level flag is skipped, and it is determined that transform skip residual coding is enabled at the stripe level.
11. A non-transitory computer-readable storage medium storing computer instructions, characterized in that, The non-transitory computer-readable storage medium is part of a computing device configured to execute a set of instructions to encode a bitstream according to operations including: Receive video frames used for residual coding; The first stripe-level flag is encoded into the bitstream, indicating whether symbolic data hiding is disabled for the video frame at the stripe level; and Based on the value of the first strip level flag, determine whether to skip encoding using a second strip level flag, which indicates whether to disable transform skip residual encoding for the video frame at the strip level.
Citation Information
Patent Citations
Transform skipping and lossless coding unification
US20130294524A1