METHOD AND APPARATUS FOR VIDEO CODING - Patent application
The super-resolution coding mode addresses inefficiencies in existing video coding by applying downsampling and upsampling to video blocks, optimizing transform coefficients and motion vectors, resulting in improved compression efficiency and video quality.
Patent Information
- Application Number
- JP2024094299
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-09-22
- Filing Date
- 2024-06-11
- Publication Date
- 2025-09-02
- Estimated Expiration
- 2041-10-04
AI Technical Summary
Existing video coding techniques face challenges in efficiently reducing redundancy and improving compression ratios, particularly in intra-frame prediction and motion compensation, due to the varying likelihood of prediction directions and motion vectors, leading to suboptimal bit usage.
Implementing a super-resolution coding mode that applies downsampling and upsampling processes to video blocks, allowing for enhanced spatial resolution and efficient encoding/decoding by indicating whether super-resolution is applied to specific blocks, thereby optimizing transform coefficients and motion vectors.
Enhances compression efficiency by reducing bit usage and improving video quality through more effective intra-frame prediction and motion compensation, particularly in high-resolution video streams.
Smart Images

Figure 0007732718000005 
Figure 0007732718000006 
Figure 0007732718000007
Abstract
Description
[Technical Field]
[0001] [CROSS-REFERENCE TO RELATED APPLICATIONS] This application claims priority to U.S. Patent Application No. 17 / 482,018, entitled "Method and Apparatus for Video Coding," filed September 22, 2021, which claims priority to U.S. Provisional Application No. 63 / 130,265, entitled "Super-Resolution-Based Coding," filed December 23, 2020. The entire disclosures of the prior applications are incorporated herein by reference in their entirety.
[0002] [Technical field] This disclosure generally describes embodiments related to video coding. [Background technology]
[0003] The background art discussion provided herein is intended to provide an overall context for the present disclosure. The extent of the work of the currently signed inventors described in this background art section and in each aspect of this specification has not been shown as prior art at the time of the filing of this disclosure, and is not expressly or impliedly admitted as prior art to the present disclosure.
[0004] Video encoding and decoding can be performed using interframe image prediction with motion compensation. Uncompressed digital video can include a series of images, each with spatial dimensions of, for example, 1920x1080 luma samples and associated chroma samples. The series can have a fixed or variable image rate (informally known as the frame rate), for example, 60 images per second or 60 hertz (Hz). Uncompressed video has specific bitrate requirements. For example, 1080p60 4:2:0 video (1920x1080 luma sample resolution at a 60Hz frame rate) with 8 bits per sample requires close to 1.5 Gbit / s of bandwidth. Such video requires more than 600 GB of storage space per hour.
[0005] One goal of video encoding and decoding is to reduce redundant information in an input video signal through compression. Compression can help reduce the bandwidth and / or storage space requirements, in some cases by more than two orders of magnitude. Both lossless and lossy compression, as well as a combination of both, can be used. Lossless compression refers to a technique in which an exact copy of the original signal can be reconstructed from a compressed version of the original signal. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signal is small enough that it can be used in applications where a reconstructed signal is expected. For video, lossy compression is widely used. The amount of acceptable distortion depends on the application; for example, a user consuming a streaming application can tolerate higher distortion than a user of a television distribution application. The achievable compression ratio reflects the fact that a higher allowable / tolerable distortion can produce a higher compression ratio.
[0006] Video encoders and decoders can utilize techniques from several broad categories, including, for example, motion compensation, transform, quantization, and entropy coding.
[0007] Video encoding / decoding techniques can include a technique known as intraframe coding. In intraframe coding, sample values are represented without reference to samples or other data from a previously reconstructed reference image. In some video codecs, an image is spatially subdivided into sample blocks. If all sample blocks are coded in intraframe mode, the image can be an intraframe image. Intraframe images and their derivatives, such as independent decoder refresh images, can be used to reset the decoder state and, therefore, can be used as the first image or still image in a coded video bitstream and video session. Samples in intraframe blocks are used in a transform, and the transform coefficients can be quantized before entropy coding. Intraframe prediction can be a technique that minimizes sample values in the pre-transform domain. In some cases, the smaller the DC value and AC coefficients after the transform, the fewer bits required for a given quantization step size to represent the block after entropy coding.
[0008] Conventional intraframe coding, such as that known from MPEG-2 coding techniques, does not use intraframe prediction. However, some newer video compression techniques include techniques that attempt to derive data blocks from surrounding sample data and / or metadata, for example, obtained during the encoding and / or decoding of spatially adjacent blocks and prior to the decoding order. Such techniques are hereinafter referred to as "intraframe prediction" techniques. It should be noted that, at least in some cases, intraframe prediction does not use reference data from a reference picture, but only reference data from the current picture being reconstructed.
[0009] Many different forms of intra-frame prediction can exist. If a given video coding technique can use two or more of these techniques, the technique in use can perform coding in intra-frame prediction mode. In some cases, modes may have sub-modes and / or parameters, and these modes may be coded alone or included in a mode codeword. This may also be the case for the entropy coding technique used to convert codewords into a bitstream, as which codewords are used for a given mode, sub-mode, and / or parameter combination affects the coding efficiency gains from intra-frame prediction.
[0010] Certain modes of intraframe prediction were introduced in H.264, improved in H.265, and further improved in modern encoding / decoding techniques such as the joint exploration model (JEM), versatile video coding (VVC), and benchmark set (BMS). A prediction block can be formed using neighboring sample values belonging to already available samples. The sample values of the neighboring samples are copied into the prediction block according to a certain direction. A reference to the direction in use may be coded in the bitstream or may itself be predicted.
[0011] Referring to FIG. 1A, the bottom right corner depicts a subset of nine known prediction directions from the 33 possible prediction directions (corresponding to the 33 angular modes of the 35 intraframe modes) in H.265. The point where the arrows converge (101) represents the sample being predicted. The arrows represent the direction from which the sample is predicted. For example, arrow (102) indicates that sample (101) is predicted from one or more samples to the upper right, which are at a 45-degree angle from horizontal. Similarly, arrow (103) indicates that sample (101) is predicted from one or more samples to the lower left of sample (101), which are at a 22.5-degree angle from horizontal.
[0012] Continuing with FIG. 1A , a square block (104) of 4×4 samples is depicted in the upper left (indicated by a thick dashed line). The square block (104) contains 16 samples, each labeled with “S” and its position in the Y dimension (e.g., row index) and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample in the Y dimension (from the top) and the first sample in the X dimension (from the left). Similarly, sample S44 is the fourth sample in block (104) in both the Y and X dimensions. Because this block is a 4×4 sized sample, S44 is located in the lower right. Also shown are reference samples that follow a similar numbering scheme. The reference samples are labeled with “R” and their Y position (e.g., row index) and X position (e.g., column index) relative to block (104). In both H.264 and H.265, since the predicted samples are adjacent to the block being reconstructed, negative values do not need to be used.
[0013] Intraframe prediction can work by copying reference sample values from neighboring samples according to a signaled prediction direction. For example, assume that the coded video bitstream includes signaling indicating, for this block, the prediction direction consistent with arrow (102), i.e., that the samples are predicted from one or more prediction samples in the upper right corner at a 45-degree angle with the horizontal. In this case, samples S41, S32, S23, and S14 are predicted from the same reference sample R05. And sample S44 is predicted from reference sample R08.
[0014] In some cases, the values of multiple reference samples can be combined, for example through interpolation, to calculate the reference sample, particularly if the orientation is not evenly divisible by 45 degrees.
[0015] As video coding technology has evolved, the number of possible directions has increased. H.264 (2003) could represent nine different directions. This increased to 33 in H.265 (2013), and JEM / VVC / BMS can support up to 65 directions at the time of publication. Experiments have been conducted to identify the most likely directions, and some techniques in entropy coding are used to represent these likely directions with a small number of bits, at the expense of less likely directions. Furthermore, the direction itself may be predictable from neighboring directions used in neighboring already decoded blocks.
[0016] FIG. 1B shows a schematic diagram (180) depicting 65 intra-frame prediction directions according to JEM to illustrate the increasing number of prediction directions over time.
[0017] The mapping from intra-frame prediction directions to bits representing directions in the coded video bitstream can vary between video coding techniques and can range, for example, from a simple direct mapping to prediction directions to complex adaptation schemes involving intra-frame prediction modes, codewords, most likely modes, and similar techniques. However, in all cases, there may be certain directions that are statistically less likely to occur in the video content than certain other directions. Because the goal of video compression is to reduce redundancy, these less likely directions are represented with more bits than more likely directions in a well-performing video coding technique.
[0018] Motion compensation may be a lossy compression technique and may involve the use of sample data blocks from a previously reconstructed image or portion thereof (reference image) to predict a newly reconstructed image or image portion after spatially shifting the blocks in a direction indicated by a motion vector (hereinafter referred to as MV). In some cases, the reference image may be the same as the image currently being reconstructed. The MV may have two dimensions, X and Y, or it may have three dimensions, with the third dimension being an indication of the reference image in use (the latter may indirectly be the temporal dimension).
[0019] In some video compression techniques, the MV applicable to a particular region of sample data can be predicted from other MVs, for example, from an MV associated with another sample data region that is spatially adjacent to the region being reconstructed and precedes that MV in decoding order. Doing so can significantly reduce the amount of data required to code the MV, thereby eliminating redundancy and improving compression ratios. MV prediction can work effectively, for example, when coding an input video signal derived from a video camera (called natural video), there is a statistical possibility that regions larger than the region to which a single MV is applicable will move in similar directions, and therefore, in some cases, can be predicted using similar motion vectors derived from MVs of neighboring regions. As a result, the MV found for a given region will be similar or identical to the MV predicted from surrounding MVs, and after entropy coding, can be represented using fewer bits than would be used to code the MV directly. In some cases, MV prediction can be an example of lossless compression of a signal (i.e., an MV) derived from the original signal (i.e., a sample stream). In other cases, the MV prediction itself may be a lossy compression, for example due to rounding errors in computing the predictor from several surrounding MVs.
[0020] Various MV prediction mechanisms are described in H.265 / HEVC (ITU-T Rec. H.265, "High Efficiency Video Coding", December 2016). Among the many MV prediction mechanisms provided by H.265, the one described in this specification is a technique hereinafter referred to as "spatial merging".
[0021] Referring to Figure 2, the current block (201) contains samples discovered by the encoder during the motion search process, and these samples may be predicted from a spatially shifted previous block of the same size. Instead of coding the MV directly, the MV may be derived from metadata associated with one or more reference pictures, e.g., from the nearest (in decoding order) reference picture using the MV associated with A0, A1, and any of five surrounding samples (denoted as 202-206, respectively). In H.265, MV prediction can use predictors from the same reference picture used by neighboring blocks. Summary of the Invention [Means for solving the problem]
[0022] Aspects of the present disclosure provide methods and apparatuses for video encoding / decoding. In some examples, the apparatus for video decoding includes a processing circuit. The processing circuit can decode coded information for one or more blocks from a coded video bitstream. The coded information can indicate whether a super-resolution coding mode is applied to one or more blocks. The super-resolution coding mode can be applied in response to one or more blocks being downsampled from a high spatial resolution to a low spatial resolution by an encoder. Based on the coded information indicating that the super-resolution coding mode is applied to the one or more blocks, the processing circuit can generate a reconstructed block by upsampling information of a first block in the one or more blocks using the super-resolution coding mode. The first block has a low spatial resolution, and the reconstructed block has a high spatial resolution that is higher than the low spatial resolution. The one or more blocks include transform coefficients, and the reconstructed block can include sample values in the spatial domain.
[0023] In one embodiment, the one or more blocks are coding blocks (CB), coding units (CU), predictive blocks (PB), or transform blocks (TB), and the coded information indicates whether a super-resolution coding mode is applied to each of the one or more blocks.
[0024] In one embodiment, the coded information indicates whether the super-resolution coding mode applies to a coding unit (CU), a coding block (CB), a superblock, a predictive block (PB), a transform block (TB), a tile, a coded segment, a frame, or a sequence containing one or more blocks.
[0025] In one embodiment, the processing circuitry can inverse transform the first block into a downsampled residual block having a lower spatial resolution.
[0026] In one example, the processing circuit downsamples a reference block for the first block to obtain a downsampled reference block, where the reference block and the downsampled reference block have high and low spatial resolutions, respectively. The processing circuit generates a downsampled reconstructed block based on the downsampled residual block and the downsampled reference block, where the downsampled reconstructed block has low spatial resolution. The processing circuit can generate the reconstructed block by upsampling the downsampled reconstructed block.
[0027] In one example, the processing circuit may obtain a residual block having a high spatial resolution by upsampling the downsampled residual block, and the processing circuit may generate a reconstructed block based on the obtained residual block and a reference block for the first block, the reference block having the high spatial resolution.
[0028] In one embodiment, the one or more blocks are a subset of the blocks in the current image being reconstructed, and the super-resolution coding mode is not applied to blocks in the current image that are different from the one or more blocks.
[0029] In some examples, an apparatus for video encoding includes a processing circuit. The processing circuit can determine whether a super-resolution coding mode is applied to a first block in a video. The first block can include sample values in the spatial domain and have a high spatial resolution. Based on determining that the super-resolution coding mode is applied to the first block, the processing circuit in the apparatus for video encoding can generate a downsampled coefficient block based on the first block using the super-resolution coding mode, where the downsampled coefficient block includes transform coefficients and has a low spatial resolution that is lower than the high spatial resolution. The processing circuit in the apparatus for video encoding can encode information for the first block in a video bitstream, where the encoded information indicates that the super-resolution coding mode is applied to the first block.
[0030] In one embodiment, the first block is a coding block (CB), a coding unit (CU), a prediction block (PB), or a transform block (TB).
[0031] In one embodiment, the coded information indicates that a super-resolution coding mode has been applied to a coding unit (CU), coding block (CB), superblock, predictive block (PB), transform block (TB), tile, coded segment, frame, or sequence including the first block.
[0032] In one embodiment, a processing circuit in an apparatus for video encoding generates a downsampled residual block based on a first block and a reference block for the first block. The reference block has a high spatial resolution. The downsampled residual block includes residual values and has a low spatial resolution. The processing circuit in the apparatus for video encoding transforms the downsampled residual block to obtain a downsampled coefficient block.
[0033] In one example, a processing circuit in the apparatus for video encoding downsamples a first block to obtain a downsampled block having a low spatial resolution, downsamples a reference block to obtain a downsampled reference block having a low spatial resolution, and generates a downsampled residual block based on the downsampled block and the downsampled reference block.
[0034] In one example, a processing circuit in the apparatus for video encoding generates a residual block based on the first block and the reference block, where the residual block has high spatial resolution. The processing circuit in the apparatus for video encoding downsamples the residual block to obtain a downsampled residual block.
[0035] Aspects of the present disclosure also provide a non-transitory computer-readable medium having stored thereon instructions that, when executed by a computer for decoding and / or encoding video, cause the computer to perform a method for decoding and / or encoding video. [Brief explanation of the drawings]
[0036] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings, in which:
[0037] [Figure 1A]FIG. 2 is a schematic diagram of an exemplary subset of intra-frame prediction modes. [Figure 1B] FIG. 2 is a schematic diagram of an exemplary intra-frame prediction direction. [Figure 2] FIG. 1 is a schematic diagram of a current block and its surrounding spatial merge candidates in one example. [Figure 3] FIG. 3 is a simplified block diagram schematic of a communication system (300) according to one embodiment. [Figure 4] FIG. 4 is a simplified block diagram schematic of a communication system (400) according to one embodiment. [Figure 5] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment. [Figure 6] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment. [Figure 7] FIG. 10 shows a block diagram of an encoder according to another embodiment. [Figure 8] FIG. 10 shows a block diagram of a decoder according to another embodiment. [Figure 9] 1A and 1B illustrate examples of partitioning techniques used in example video coding formats. [Figure 10] 10A and 10B are diagrams illustrating examples of partitioning techniques used in other examples of video coding formats. [Figure 11A] 10A and 10B are diagrams illustrating examples of partitioning techniques used in other examples of video coding formats. [Figure 11B] 10A and 10B are diagrams illustrating examples of partitioning techniques used in other examples of video coding formats. [Figure 12A] 10A and 10B are diagrams illustrating examples of vertical center-side triple tree partitioning and horizontal center-side triple tree partitioning. [Figure 12B] 10A and 10B are diagrams illustrating examples of vertical center-side triple tree partitioning and horizontal center-side triple tree partitioning. [Figure 13]FIG. 1 illustrates an exemplary loop filtering pipeline including a frame-level super-resolution coding mode, according to one embodiment of the present disclosure. [Figure 14] FIG. 1 illustrates a process for coding a block using a block-based super-resolution coding mode, according to one embodiment of this disclosure. [Figure 15A] FIG. 1 illustrates a process for coding a block using a block-based super-resolution coding mode, according to one embodiment of this disclosure. [Figure 15B] FIG. 1 illustrates a process for coding a block using a block-based super-resolution coding mode, according to one embodiment of this disclosure. [Figure 16] FIG. 10 illustrates an example of a block-level super-resolution coding mode according to one embodiment of the present disclosure. [Figure 17] FIG. 10 illustrates an example of a block-level super-resolution coding mode according to one embodiment of the present disclosure. [Figure 18] FIG. 18 shows a flowchart outlining a process 1800 according to one embodiment of the present disclosure. [Figure 19] FIG. 19 shows a flowchart outlining a process (1900) according to one embodiment of the present disclosure. [Figure 20] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0038] Figure 3 is a simplified block diagram of a communication system (300) according to an embodiment of the present disclosure. The communication system (300) includes multiple terminal devices that can communicate with each other, for example, via a network (350). For example, the communication system (300) includes a first pair of terminal devices (310) and (320) interconnected via the network (350). In the example of Figure 3, the first pair of terminal devices (310) and (320) perform unidirectional data transmission. For example, the terminal device (310) can code video data (e.g., a video image stream captured by the terminal device (310)) for transmission to another terminal device (320) via the network (350). The encoded video data can be transmitted in the form of one or more coded video bitstreams. The terminal device (320) can receive the coded video data from the network (350), decode the coded video data to reconstruct the video image, and display the video image based on the reconstructed video data. Unidirectional data transmission is common in media serving applications and the like.
[0039] In another example, the communication system (300) includes a second pair of terminal devices (330) and (340) that perform bidirectional transmission of coded video data, such as may occur during a video conference. For bidirectional transmission of data, in one example, each of the terminal devices (330) and (340) can code video data (e.g., a video image stream captured by the terminal device) for transmission to the other of the terminal devices (330) and (340) over the network (350). Each of the terminal devices (330) and (340) can also receive coded video data transmitted by the other of the terminal devices (330) and (340), decode the coded video data to reconstruct the video image, and display the video image on an accessible display device based on the reconstructed video data.
[0040] In the example of FIG. 3 , the terminal devices 310, 320, 330, and 340 may be depicted as a server, a personal computer, and a smartphone, although the principles of the present disclosure are not limited thereto. Embodiments of the present disclosure find application with laptop computers, tablet computers, media players, and / or dedicated videoconferencing equipment. Network 350 represents any number of networks transmitting coded video data between the terminal devices 310, 320, 330, and 340, including wired and / or wireless communication networks. The communication network 350 may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this disclosure, the architecture and topology of network 350 may not be important to the operation of the present disclosure, unless otherwise described herein.
[0041] 4 illustrates the arrangement of a video encoder and a video decoder in a streaming environment as an example application for the disclosed subject matter. The disclosed subject matter is equally applicable to other video-supported applications, including, for example, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc., video conferencing, digital TV, etc.
[0042] The streaming system may include a capture subsystem (413), which may include a video source (401), such as a digital camera, that creates an uncompressed video image stream (402). In one example, the video image stream (402) includes samples captured by the digital camera. The video image stream (402), depicted with thick lines to emphasize its high data volume when compared to the encoded video data (404) (or coded video bitstream), may be processed by an electronic device (420) that includes a video encoder (403) coupled to the video source (401). The video encoder (403) may include hardware, software, or a combination thereof to enable or implement various aspects of the disclosed subject matter, as described in more detail below. The encoded video data (404) (or coded video bitstream (404)), depicted with thin lines to emphasize its lower data volume when compared to the video image stream (402), may be stored on a streaming server (405) for future use. One or more streaming client subsystems, such as the client subsystems (406) and (408) of FIG. 3, can access the streaming server (405) to retrieve copies (407) and (409) of the encoded video data (404). The client subsystem (406) can include, for example, a video decoder (410) in an electronic device (430). The video decoder (410) decodes the incoming copy of the encoded video data (407) to generate an outgoing video image stream (411), which can be displayed on a display (412) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (404), (407), and (409) (e.g., a video bitstream) can be encoded according to a particular video coding / compression standard.Examples of these standards include ITU-T Recommendation H.265. In one example, a video coding standard under development is informally called Next Generation Video Coding (VVC). The disclosed subject matter can be used in the context of VVC.
[0043] It should be noted that the electronic devices (420) and (430) may include other components (not shown). For example, the electronic device (420) may include a video decoder (not shown), and the electronic device (430) may similarly include a video encoder (not shown).
[0044] 5 shows a block diagram of a video decoder (510) according to an embodiment of the present disclosure. The video decoder (510) can be included in an electronic device (530). The electronic device (530) can include a receiver (531) (e.g., receiving circuitry). The video decoder (510) can be used in place of the video decoder (510) in the example of FIG. 3.
[0045] The receiver (531) can receive one or more coded video sequences decoded by the video decoder (510), in the same or another embodiment, one coded video sequence at a time, where the decoding of each coded video sequence is independent of the other coded video sequences. The coded video sequences can be received from a channel (501), which may be a hardware / software link to a storage device that stores the coded video data. The receiver (531) can receive the coded video data along with other data, such as coded audio data and / or auxiliary data streams, that can be transmitted to respective using entities (not shown). The receiver (531) can separate the coded video sequences from other data. To prevent network jitter, a buffer memory (515) can be coupled between the receiver (531) and the entropy decoder / parser (520) (hereinafter "parser (520)"). In some applications, the buffer memory (515) is part of the video decoder (510). In other cases, the buffer memory (515) may be located external to the video decoder (510) (not shown). In still other cases, there may be a buffer memory (not shown) external to the video decoder (510), for example, to prevent network jitter, and there may be another buffer memory (515) internal to the video decoder (510), for example, to handle playback timing. If the receiver (531) receives data from a store-and-forward device or from an isochronous network with sufficient bandwidth and controllability, the buffer memory (515) may not be necessary or may be small.For use in best-effort packet networks such as the Internet, the buffer memory (515) may be necessary and may be relatively large, advantageously of adaptive size, and may be implemented at least in part in an operating system or similar element (not shown) external to the video decoder (510).
[0046] The video decoder (510) may include a parser (520) for reconstructing symbols (521) from the coded video sequence. These symbol categories include information used to manage the operation of the video decoder (510) and potential information for controlling a rendering device, such as a rendering device (512) (e.g., a display screen) that is not an integral part of the electronic device (530) but may be coupled to the electronic device (530) as shown in FIG. 5. The rendering device control information may be in the form of a supplemental enhancement information (SEI) message or a visual usability information (VUI) parameter set fragment (not shown). The parser (520) may perform parsing / entropy decoding on the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow various principles, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The analyzer (520) can extract from the coded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. The subgroups can include groups of pictures (GOPs), images, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. The analyzer (520) can also extract information such as transform coefficients, quantizer parameter values, MVs, etc. from the coded video sequence.
[0047] The analyzer (520) can perform entropy decoding / analysis operations on the video sequence received from the buffer memory (515) to produce symbols (521).
[0048] The reconstruction of the symbols (521) can be associated with several different units, depending on the type of coded video image or portion thereof (e.g., inter-frame and intra-frame images, inter-frame and intra-frame blocks) and other factors. Which units are associated and how can be controlled by subgroup control information parsed by the analyzer (520) from the coded video sequence. The flow of such subgroup control information between the analyzer (520) and the following units is not shown for clarity.
[0049] In addition to the functional blocks already mentioned, the video decoder (510) may be conceptually subdivided into several functional units, as described below. In an actual embodiment operating within commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is appropriate.
[0050] The first unit is a scalar / inverse transform unit (551), which receives quantized transform coefficients and control information from the analyzer (520) as symbols (521), including information on what transform to use, block size, quantization factors, quantization scaling matrices, etc. The scalar / inverse transform unit (551) can output blocks containing sample values that can be input to an aggregator (555).
[0051] In some cases, the output samples of the scalar / inverse transform unit (551) may belong to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed image but can use prediction information from a previously reconstructed portion of the current image. Such prediction information may be provided by an intra-frame image prediction unit (552). In some cases, the intra-frame image prediction unit (552) generates blocks of the same size and shape as the block being reconstructed using surrounding, already reconstructed information extracted from a current image buffer (558). The current image buffer (558), for example, buffers a partially reconstructed current image and / or a fully reconstructed current image. The aggregator (555), in some cases, adds the prediction information generated by the intra-frame prediction unit (552) to the output sample information provided by the scalar / inverse transform unit (551) on a sample-by-sample basis.
[0052] In other cases, the output samples of the scalar / inverse transform unit (551) may belong to an inter-coded block and potentially a motion-compensated block. In such cases, the motion-compensated prediction unit (553) may access a reference picture memory (557) to extract samples used for prediction. After the extracted samples are motion-compensated based on the symbols (521) associated with the block, these samples may be added by an aggregator (555) to the output of the scalar / inverse transform unit (551) (in this case, referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (557) from which the motion-compensated prediction unit (553) extracts prediction samples may be controlled by MVs available to the motion-compensated prediction unit (553), for example, in the form of symbols (521) that may have X, Y, and reference picture components. Motion compensation may also include interpolation of sample values extracted from the reference picture memory (557), MV prediction mechanisms, etc., when sub-sample accurate motion vectors are in use.
[0053] The output samples of the aggregator (555) may be subjected to various loop filtering techniques in a loop filter unit (556). Video compression techniques may include in-loop filter techniques controlled by parameters contained in the coded video sequence (also called a coded video bitstream) and made available to the loop filter unit (556) as symbols (521) from the analyzer (520), or may be responsive to meta-information obtained during decoding of a coded image or previous portions of the coded video sequence (in decoding order), and may be responsive to previously reconstructed loop-filtered sample values.
[0054] The output of the loop filter unit (556) may be a sample stream that can be output to a rendering device (512) and stored in a reference image memory (557) for use in future inter-frame image prediction.
[0055] Once a particular coded picture is fully reconstructed, it can be used as a reference picture for future predictions. For example, once a coded picture corresponding to a current picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the analyzer (520)), the current picture buffer (558) can become part of the reference picture memory (557), and a new current picture buffer can be reallocated before beginning reconstruction of a subsequent coded picture.
[0056] The video decoder (510) can perform decoding operations according to a predetermined video compression technique in a standard, such as ITU-T Rec. H.265. The coded video sequence can conform to the syntax specified by the video compression technique or standard being used, in the sense that the coded video sequence conforms to both the syntax of the video compression technique or standard and the profile of the video compression technique or standard as its document. Specifically, the profile can select some tools from all tools available in the video compression technique or standard as the only tools usable in that profile. Compliance also requires that the complexity of the coded video sequence be within a range defined by the tier of the video compression technique or standard. In some cases, the tier limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in mega samples per second), maximum reference picture size, etc. The limits set by the tier can, in some cases, be further constrained by a Hypthetical Reference Decoder (HRD) specification and HRD buffer management metadata signaled in the coded video sequence.
[0057] In one embodiment, the receiver (531) can receive additional (redundant) data along with the coded video. The additional data can be included as part of the coded video sequence. The additional data can be used by the video decoder (510) to properly decode the data and / or more accurately reconstruct the original video data. The additional data can be in forms such as, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0058] 6 shows a block diagram of a video encoder (603) according to one embodiment of the present disclosure. The video encoder (603) is included in an electronic device (620). The electronic device (620) includes a transmitter (640) (e.g., a transmitting circuit). The video encoder (603) can be used in place of the video encoder (403) in the example of FIG. 4.
[0059] The video encoder (603) can receive video samples from a video source (601) (not part of the electronic device (620) in the example of FIG. 6) that captures video images coded by the video encoder (603). In another example, the video source (601) is part of the electronic device (620).
[0060] The video source (601) can provide a source video sequence coded by the video encoder (603) in the form of a digital video sample stream, which can have any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, etc.), any suitable color space (e.g., BT.601 Y CrCB, RGB, etc.), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media services system, the video source (601) can be a storage device that stores previously prepared video. In a video conferencing system, the video source (601) can be a camera that captures local image information as a video sequence. The video data can be provided as multiple individual images that, when viewed in sequence, create motion. The images themselves can be organized as a spatial pixel array, where each pixel can contain one or more samples, depending on the sampling structure, color space, etc., in use. Those skilled in the art can easily understand the relationship between pixels and samples. The following description focuses on samples.
[0061] According to one embodiment, the video encoder (603) can code and compress images of a source video sequence into a coded video sequence (643) in real time or under any other time constraint required by the application. Enforcing the appropriate coding rate is one function of the controller (650). In some embodiments, the controller (650) controls and is operatively coupled to other functional units, as described below. Such coupling is not shown for clarity. Parameters set by the controller (650) can include rate control-related parameters (picture skip, quantizer, lambda value for rate-distortion optimization techniques, etc.), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (650) can be configured with other appropriate functions associated with the video encoder (603) optimized for a particular system design.
[0062] In some embodiments, the video encoder (603) is configured to operate in a coding loop. As an overly simplified explanation, in one example, the coding loop can include a source coder (630) (e.g., responsible for creating symbols, such as a symbol stream, based on an input image to be coded and a reference image) and a (local) decoder (633) embedded in the video encoder (603). The decoder (633) reconstructs the symbols to create sample data in a manner similar to how a (remote) decoder creates sample data (because the video compression techniques contemplated in the disclosed subject matter ensure that any compression between the symbols and the coded video bitstream is lossless). The reconstructed sample stream (sample data) is input to a reference image memory (634). Decoding the symbol stream produces bit-exact results regardless of the location (local or remote) of the decoder, so the contents of the reference image memory (634) correspond bit-exactly between the local and remote encoders. In other words, the reference picture samples "seen" by the prediction part of the encoder are exactly the same sample values "seen" by the decoder when it uses the prediction during decoding. This basic principle of reference picture synchrony (and the drift that occurs when synchrony is not maintained, e.g., due to channel errors) is also used in several related technologies.
[0063] The operation of the "local" decoder (633) may be the same as the operation of a "remote" decoder, such as the video decoder (510), already described in detail above in connection with Figure 4. However, with further brief reference to Figure 5, because symbols are available and the encoding / decoding of symbols into the coded video sequence by the entropy coder (645) and analyzer (520) can be lossless, the entropy decoding portion of the video decoder (510), including the buffer memory (515) and analyzer (520), may not be performed entirely in the local decoder (633).
[0064] At this point, it is observed that any decoder technique other than analysis / entropy decoding present in the decoder must necessarily be present in a corresponding encoder in substantially identical functional form. For this reason, the disclosed subject matter focuses on decoder operation. A description of the encoder technique can be omitted, since it is the reverse of the decoder technique described generically. Only in certain areas is a more detailed description necessary, which is provided below.
[0065] During operation, in some embodiments, the source coder (630) can perform motion-compensated predictive coding, which predictively codes an input image with reference to one or more previously coded images from a video sequence designated as “reference images.” In this manner, the coding engine (632) codes differences between pixel blocks of the input image and pixel blocks of reference images that can be selected as predictive references for the input image.
[0066] The local video decoder (633) can decode the coded video data of an image that can be designated as a reference image based on the symbols generated by the source coder (630). The operation of the coding engine (632) can advantageously be a lossy process. When the coded video data is decoded by a video decoder (not shown in FIG. 6), the reconstructed video sequence can be a replica of the source video sequence, typically with some errors. The local video decoder (633) can copy the decoding process that can be performed by the video decoder on the reference image and store the reconstructed reference image in a reference image cache (634). In this way, the video encoder (603) can locally store copies of reconstructed reference images that have common content with reconstructed reference images obtained by the far-end video decoder (in the absence of transmission errors).
[0067] The predictor (635) can perform a prediction search for the coding engine (632). That is, for a new image to be coded, the predictor (635) can search the reference image memory (634) for sample data (as candidate reference pixel blocks) or specific metadata, such as reference image motion vectors, block shapes, etc., that serve as suitable prediction references for the new image. The predictor (635) can operate on a pixel block-by-pixel block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor (635), the input image can have prediction references drawn from multiple reference images stored in the reference image memory (634).
[0068] The controller (650) can manage the coding operations of the source coder (630), including, for example, setting the parameters and subgroup parameters used to encode the video data.
[0069] The output of all of the above functional units can be entropy coded by an entropy coder (645), which converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques such as Huffman coding, variable length coding, arithmetic coding, etc.
[0070] The transmitter (640) can buffer the coded video sequence produced by the entropy coder (645) for transmission over a communication channel (660), which can be a hardware / software link to a storage device that stores the coded video data. The transmitter (640) can merge the coded video data from the video coder (603) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0071] A controller (650) can manage the operation of the video encoder (603). During coding, the controller (650) can assign a particular coded picture type to each coded picture, which can affect the coding technique that can be applied to each picture. For example, pictures are often assigned as one of the following picture types: An intraframe picture (I-picture) may be one that can be coded and decoded without using any other picture in the sequence as a source of prediction. Some video codecs allow different types of intraframe pictures, such as Independent Decoder Refresh ("IDR") pictures. Those skilled in the art understand the variants of I-pictures and their applications and functions.
[0072] A predicted image (P-image) may be one that can be coded and decoded using intra-frame or inter-frame prediction, which predicts the sample values of each block using at most one motion vector and reference index.
[0073] Bidirectionally predicted images (B-images) may be encoded and decoded using intra-frame or inter-frame prediction, which uses at most two motion vectors and reference indices to predict the sample values of each block. Similarly, multiple predicted images may use more than one reference image and associated metadata to reconstruct a single block.
[0074] A source image is typically spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and can be coded block by block. These blocks can be predictively coded with reference to other (already coded) blocks, as determined by the coding assignment applied to each image of the block. For example, blocks of an I image can be non-predictively coded, or they can be predictively coded with reference to already coded blocks of the same image (spatial prediction or intraframe prediction). Pixel blocks of a P image can be predictively coded via spatial prediction or temporal prediction with reference to a reference image coded one or two images earlier. Blocks of a B image can be predictively coded via spatial prediction or temporal prediction with reference to a reference image coded one or two images earlier.
[0075] The video encoder (603) may perform coding operations in accordance with a predetermined video coding technique or standard, such as ITU-T H.265. In doing so, the video encoder (603) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard used.
[0076] In one embodiment, the transmitter (640) can transmit additional data along with the coded video. The source coder (630) can include such data as part of the coded video sequence. The additional data can include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures or slices, SEI messages, VUI parameter set fragments, etc.
[0077] Video can be captured as multiple source images (video images) in a time sequence. Intraframe image prediction (often abbreviated as intraframe prediction) exploits spatial correlation in a given image, while interframe image prediction exploits correlation (temporal or otherwise) between images. In one example, a particular image being encoded / decoded, called the current image, is partitioned into blocks. If a block of the current image is similar to a reference block in a previously coded and still buffered reference image in the video, the block of the current image can be coded by a vector called a motion vector. The motion vector points to a reference block in the reference image and may have a third dimension that identifies the reference image if multiple reference images are used.
[0078] In some embodiments, bidirectional prediction techniques can be used for inter-frame image prediction. Bidirectional prediction techniques use two reference images, such as a first reference image and a second reference image, both of which precede the current image in video in decoding order (but may be past and future, respectively, in display order). A block in the current image can be coded with a first motion vector pointing to a first reference block in the first reference image and a second motion vector pointing to a second reference block in the second reference image. A block can be predicted by a combination of the first and second reference blocks.
[0079] Furthermore, to improve coding efficiency, merge mode techniques can be used in inter-frame image prediction.
[0080] According to some embodiments of the present disclosure, prediction, such as inter-frame image prediction or intra-frame image prediction, is performed in units of blocks. For example, according to the HEVC standard, images in a sequence of video images are partitioned into coding tree units (CTUs) for compression, and the CTUs in an image have the same size, for example, 64x64 pixels, 32x32 pixels, or 16x16 pixels. Typically, a CTU includes three coding tree blocks (CTBs), one luma CTB and two chroma CTBs. Each CTU may be recursively divided into one or more coding units (CUs) in a quadtree. For example, a 64x64 pixel CTU can be divided into one 64x64 pixel CU, four 32x32 pixel CUs, or sixteen 16x16 pixel CUs. In one example, each CU is analyzed to determine a prediction type for the CU, such as an inter-frame prediction type or an intra-frame prediction type. A CU is divided into one or more prediction units (PUs) according to temporal and / or spatial predictability. Typically, each PU includes a luma prediction block (PB) and two chroma PBs. In one embodiment, prediction operations in coding (encoding / decoding) are performed in units of prediction blocks. Using a luma prediction block as an example of a prediction block, the prediction block includes a matrix of pixel values (e.g., luma values), such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.
[0081] 7 shows a diagram of a video encoder (703) according to another embodiment of the present disclosure. The video encoder (703) is configured to receive a processed block of sample values (e.g., a predictive block) in a current video image in a video image sequence and to encode the processed block into a coded image that is part of the coded video sequence. In one example, the video encoder (703) is used in place of the video encoder (403) in the example of FIG. 4.
[0082] In an HEVC example, the video encoder (703) receives a matrix of sample values for a processing block, such as a predictive block of 8x8 samples. The video encoder (703) determines, for example, using rate-distortion optimization, whether to code the processing block using intra-frame mode, inter-frame mode, or bidirectional prediction mode. If the processing block is coded in intra-frame mode, the video encoder (703) can encode the processing block into a coded image using intra-frame prediction techniques. If the processing block is coded in inter-frame mode or bidirectional prediction mode, the video encoder (703) can encode the processing block into a coded image using inter-frame prediction or bidirectional prediction techniques, respectively. In certain video coding techniques, the merge mode can be an inter-frame image prediction submode in which a motion vector is derived from one or more motion vector predictors without taking advantage of coded motion vector components other than the predictors. In certain other video coding techniques, there may be motion vector components applicable to the subject block. In one example, the video encoder (703) includes other components, such as a mode decision module (not shown) for determining the mode of the processing block.
[0083] In the example of Figure 7, the video encoder (703) includes an inter-frame encoder (730), an intra-frame encoder (722), a residual calculator (723), a switch (726), a residual encoder (724), a general controller (721), and an entropy encoder (725), coupled together as shown in Figure 7.
[0084] The inter-frame encoder (730) is configured to receive samples of a current block (e.g., a processing block), compare the block to one or more reference blocks in reference images (e.g., blocks in previous and subsequent images), generate inter-frame prediction information (e.g., redundant information descriptions from inter-frame coding techniques, motion vectors, merge mode information), and calculate inter-frame prediction results (e.g., predicted blocks) based on the inter-frame prediction information using any suitable technique. In some examples, the reference image is a decoded reference image that is decoded based on the coded video information.
[0085] The intra-frame encoder (722) is configured to receive samples of a current block (e.g., a processing block), in some cases compare the block with previously coded blocks in the same image, generate transformed and quantized coefficients, and in some cases generate intra-frame prediction information (e.g., intra-frame prediction direction information according to one or more intra-frame coding techniques). In one example, the intra-frame encoder (722) also calculates intra-frame prediction results (e.g., predicted blocks) based on the intra-frame prediction information and reference blocks in the same image.
[0086] The general-purpose controller (721) is configured to determine general-purpose control data and control other components of the video encoder (703) based on the general-purpose control data. In one example, the general-purpose controller (721) determines the mode of the block and provides a control signal to the switch (726) based on the mode. For example, if the mode is intra-frame mode, the general-purpose controller (721) controls the switch (726) to select the intra-frame mode result to be used by the residual calculator (723) and controls the entropy encoder (725) to select intra-frame prediction information and include the intra-frame prediction information in the codestream. Also, if the mode is inter-frame mode, the general-purpose controller (721) controls the switch (726) to select the inter-frame prediction result to be used by the residual calculator (723) and controls the entropy encoder (725) to select inter-frame prediction information and include the inter-frame prediction information in the codestream.
[0087] The residual calculator (723) is configured to calculate the difference (residual data) between the received block and a prediction result selected from the intra-frame encoder (722) or the inter-frame encoder (730). The residual encoder (724) is configured to operate on the residual data and encode the residual data to generate transform coefficients. In one example, the residual encoder (724) is configured to transform the residual data from the spatial domain to the frequency domain to generate transform coefficients. The transform coefficients then undergo a quantization process to obtain quantized transform coefficients. In various embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is configured to perform an inverse transform and generate decoded residual data. The decoded residual data can be used by the intra-frame encoder (722) and the inter-frame encoder (730) as appropriate. For example, the inter-frame encoder (730) can generate decoded blocks based on the decoded residual data and inter-frame prediction information, and the intra-frame encoder (722) can generate decoded blocks based on the decoded residual data and intra-frame prediction information. The decoded blocks are processed appropriately to generate a decoded image, and in some examples, the decoded image can be buffered in a memory circuit (not shown) and used as a reference image.
[0088] The entropy encoder (725) is configured to format a bitstream to include the encoded blocks. The entropy encoder (725) is configured to include various information in the bitstream according to an appropriate standard, such as the HEVC standard. In one example, the entropy encoder (725) is configured to include general control data, selected prediction information (e.g., intra-frame prediction information or inter-frame prediction information), residual information, and other appropriate information in the bitstream. Note that, according to the disclosed subject matter, there is no residual information when coding a block in an inter-frame mode or a merged sub-mode of a bi-predictive mode.
[0089] 8 shows a diagram of a video decoder (810) according to another embodiment of the present disclosure. The video decoder (810) is configured to receive coded images that are part of a coded video sequence and decode the coded images to generate reconstructed images. In one example, the video decoder (810) is used in place of the video decoder (410) in the example of FIG. 4.
[0090] In the example of Figure 8, the video decoder (810) includes an entropy decoder (871), an inter-frame decoder (880), a residual decoder (873), a reconstruction module (874), and an intra-frame decoder (872), coupled together as shown in Figure 8.
[0091] The entropy decoder (871) can be configured to reconstruct, from the coded image, specific symbols representing syntax elements that make up the coded image. Such symbols include, for example, a mode for coding the block (e.g., intra mode, inter mode, bidirectional prediction mode, a merged submode of the latter two, or another submode), prediction information (e.g., intra prediction information or inter prediction information) that can identify specific samples or metadata used for prediction by the intra decoder (872) or the inter decoder (880), respectively, and residual information, for example, in the form of quantized transform coefficients. In one example, if the prediction mode is an inter prediction mode or a bidirectional prediction mode, the inter prediction information is provided to the inter decoder (880). And, if the prediction type is an intra prediction type, the intra prediction information is provided to the intra decoder (872). The residual information can undergo inverse quantization and be provided to the residual decoder (873).
[0092] The inter-frame decoder (880) is configured to receive the inter-frame prediction information and to generate an inter-frame prediction result based on the inter-frame prediction information.
[0093] The intraframe decoder (872) is configured to receive intraframe prediction information and generate a prediction result based on the intraframe prediction information.
[0094] The residual decoder (873) is configured to perform inverse quantization to extract dequantized transform coefficients and process the dequantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require certain control information (to include quantizer parameters (QP)), which may be provided by the entropy decoder (871) (data path not shown as this is only low volume control information).
[0095] The reconstruction module (874) is configured to combine, in the spatial domain, the residual as output by the residual decoder (873) and the prediction result (as output by an inter-frame prediction module or an intra-frame prediction module, as the case may be), to form a reconstructed block, which may be part of a reconstructed image, which may then be part of the reconstructed video. It should be noted that it may perform other appropriate operations, such as a deblocking operation, to improve visual quality.
[0096] It should be noted that the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be realized using any suitable technology. In one embodiment, the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be realized using one or more integrated circuits. In another embodiment, the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be implemented using one or more processors executing software instructions.
[0097] Video coding techniques related to super-resolution-based coding, e.g., an adaptation method for super-resolution-based coding, are disclosed. The video coding format may include any suitable video coding format, e.g., an open video coding format designed for video transmission over the Internet, such as Alliance for Open Media (AOMedia) Video 1 (AV1) or a next-generation AOMedia video format beyond AV1. The video coding standard may include the High Efficiency Video Coding (HEVC) standard, a next-generation video coding beyond HEVC (e.g., Versatile Video Coding (VVC)), etc.
[0098] In general, an image or frame is partitioned into blocks, which may be units for various processing such as partitioning, prediction, transformation, etc. Various block partition techniques may be used.
[0099] Figure 9 shows an example of a partitioning technique used in the video coding format VP9 by AOMedia. For example, an image (910) is partitioned into multiple blocks (920) of size 64x64 (e.g., 64 samples x 64 samples). Furthermore, a four-way partition tree can start at the 64x64 level and continue down to smaller blocks, with the lowest level being a 4x4 level (e.g., a block size of 4 samples x 4 samples). In some examples, additional restrictions may apply to blocks 8x8 and below. In the example of Figure 9, the 64x64 block (920) may be partitioned into smaller blocks using one of a first way (921), a second way (922), a third way (923), and a fourth way (924). A partition designated as R (shown in the fourth way (924)) is called a recursive partition, where the same partition tree may be repeated at a lower scale until the lowest 4x4 level is reached.
[0100] Figure 10 shows an example of the partitioning technique used in AV1, designed for video transmission over the Internet. AV1 was developed as a successor to VP9. For example, an image (1010) is partitioned into multiple blocks (1020) of size 128x128 (e.g., 128 samples x 128 samples). Furthermore, a 10-way partition structure can begin with 128x128 and continue down to smaller blocks. In the example of Figure 10, the 128x128 block can be partitioned into smaller blocks using one of the 10 ways (1021) through (1030). AV1 not only extends the partition tree to a 10-way structure, but also increases the maximum size (called a superblock in VP9 / AV1) to start at 128x128. A partition designated R (shown in way (1029)) is called a recursive partition, where the same partition tree can be repeated at a lower scale. The 10-way structure can include 4:1 and 1:4 rectangular partitions, such as those shown by (1021) and (1028). In one example, none of these rectangular partitions can be further subdivided. Furthermore, AV1 adds flexibility to use partitions below the 8x8 level. For example, in certain cases, 2x2 chrominance inter-frame prediction is possible.
[0101] In some examples, the block partitioning structure is called a coding tree. In one example (e.g., HEVC), the coding tree may have a quadtree structure in which each division divides a large square block into four small square blocks. In some examples, an image is divided into coding tree units (CTUs), and then the CTUs are divided into smaller blocks using a quadtree structure. According to the quadtree structure, the coding tree units (CTUs) are divided into coding units (CUs) to adapt to various local features. The decision on whether to code a screen region using inter-frame image prediction (or inter-frame prediction) (temporal) or intra-frame image prediction (or intra-frame prediction) (spatial) may be performed at the CU level. Each CU may be further divided into one, two, or four prediction units (PUs) depending on the PU division type. Within one PU, the same prediction process is applied, and related information (e.g., prediction information) is transmitted to the decoder on a PU-by-PU basis.
[0102] After the residual block is obtained by applying a prediction process based on the PU partition type, the CU may be partitioned into transform units (TUs) according to another quadtree structure. In the example of HEVC, there is a concept of multi-partitions including CUs, PUs, and TUs. In some embodiments, a CU or TU only has a square shape, while a PU can have a square or rectangular shape. In some embodiments, one coding block may be further divided into four square sub-blocks, and a transform may be performed on each sub-block, such as a TU. Each TU may be further recursively divided into smaller TUs using a quadtree structure called a residual quadtree (RQT).
[0103] At image boundaries, in some examples (e.g., HEVC), an implicit quadtree partitioning is employed, whereby a block retains the quadtree partitioning until its size fits into the image boundary.
[0104] In some examples (e.g., VVC), the block partitioning structure may use a quad tree plus binary tree (QTBT) block partitioning structure. The QTBT structure eliminates the concept of multiple partition types (CU, PU, and TU concepts) and may support more flexibility for CU partition shapes. In the QTBT block partitioning structure, CUs can have either square or rectangular shapes.
[0105] FIG. 11A shows a CTU (1110) partitioned using the QTBT block partitioning structure (1120) shown in FIG. 11B. The CTU (1110) is first partitioned using a quadtree structure. The leaf nodes of the quadtree are further partitioned using a binary tree structure or a quadtree structure. In binary tree partitioning, there can be two types of partitioning: symmetric horizontal partitioning (e.g., labeled as "0" in the QTBT block partitioning structure (1120)) and symmetric vertical partitioning (e.g., labeled as "1" in the QTBT block partitioning structure (1120)). Leaf nodes that are not further partitioned are called CUs and can be used in prediction and transformation processes without requiring further partitioning. Therefore, in the QTBT block partitioning structure, CUs, PUs, and TUs have the same block size.
[0106] In some examples (e.g., JEM), a CU can include coding blocks of different color components. For example, in the case of P slices and B slices in 4:2:0 chrominance format, one CU includes one luma CB and two chroma CBs. A CU can include a CB of a single color component. For example, in the case of an I slice, one CU includes only one luma CB or only two chroma CBs.
[0107] In some embodiments, the following parameters are defined for the QTBT block partitioning scheme: - CTU size: The root node size of the quadtree, e.g., the same concept as in HEVC. - MinQTSize: The minimum allowed size of a quadtree leaf node. - MaxBTSize: Maximum allowed size of the root node of a binary tree - MaxBTDepth: Maximum allowed depth of a binary tree - MinBTSize: The minimum allowed size of a leaf node in a binary tree.
[0108] In one example of a QTBT block partitioning structure, the CTU size is set as 128x128 luma samples with two corresponding 64x64 blocks of chroma samples, MinQTSize is set as 16x16, MaxBTSize is set as 64x64, MinBTSize (both width and height) is set as 4x4, and MaxBTDepth is set as 4. Quad-tree partitioning is first applied to the CTU to generate quad-tree leaf nodes. The quad-tree leaf nodes can have sizes from 16x16 (i.e., MinQTSize) to 128x128 (i.e., CTU size). If the quad-tree leaf node is 128x128, the quad-tree leaf node is not further partitioned by the binary tree because its size exceeds MaxBTSize (i.e., 64x64). Otherwise, the quad-tree leaf node is further partitioned by the binary tree. Thus, the leaf nodes of the quadtree are also the root nodes of the binary tree and have a binary tree depth of 0.
[0109] If the binary tree depth reaches MaxBTDepth (i.e., 4), no further splits are considered. If the width of a binary tree node is equal to MinBTSize (i.e., 4), no further horizontal splits are considered. Similarly, if the height of a binary tree node is equal to MinBTSize, no further vertical splits are considered. Leaf nodes of the binary tree are further processed by the prediction and transformation processes without requiring further partitioning. In one embodiment, the maximum CTU size is 256x256 luma samples.
[0110] 11A and 11B, solid lines indicate quadtree splits, and dotted lines indicate binary tree splits. At each split (i.e., non-leaf) node of the binary tree, a flag is signaled to indicate which split type (i.e., horizontal or vertical) is used. For example, 0 indicates a horizontal split, and 1 indicates a vertical split. In the case of quadtree splits, there is no need to indicate the split type because the quadtree split can split a block both horizontally and vertically to generate four sub-blocks of the same size.
[0111] In some embodiments, the QTBT block partitioning scheme supports the flexibility of having separate QTBT block partitioning structures for luma and chroma. For example, in the case of P slices and B slices, the luma-chroma and chroma blocks in one CTU share the same QTBT block partitioning structure. However, in the case of an I slice, the luma CTU is partitioned into CUs by a QTBT block partitioning structure, and the chroma blocks are partitioned into chroma CUs by another QTBT block partitioning structure. Thus, a CU in an I slice consists of a coding block for the luma component or coding blocks for two chroma components, and a CU in a P slice or B slice consists of coding blocks for all three chroma components.
[0112] In some examples (e.g., HEVC), inter-frame prediction for small blocks is limited to reduce memory access for motion compensation, e.g., bidirectional prediction is not supported for 4x8 and 8x4 blocks, and inter-frame prediction is not supported for 4x4 blocks.
[0113] Furthermore, in some examples (e.g., VCC), a multi-type tree (MTT) block partitioning structure is used. In some examples, the MTT block partitioning structure is a more flexible tree structure than the QTBT block partitioning structure. In addition to quad-tree partitioning and binary tree partitioning, ternary tree (TT) partitioning may be used in MTT. TT can include horizontal center-side triple-tree partitioning and vertical center-side triple-tree partitioning.
[0114] FIG. 12A shows an example of vertical center-side triple tree partitioning, and FIG. 12B shows an example of horizontal center-side triple tree partitioning. TT partitioning can complement quad-tree partitioning and binary tree partitioning. For example, triple-tree partitioning can capture objects located in the center of a block, while quad-tree and binary trees split across the center of the block. In one example, the width and height of triple-tree partitions are powers of two, so no additional transformation partitions are required.
[0115] Block partitioning designs such as two-level trees are primarily motivated by reducing complexity. The complexity of traversing a tree is T D where T denotes the number of split types and D is the depth of the tree.
[0116] In this disclosure, the terms "resolution" and "spatial resolution" may be used interchangeably.
[0117] The super-resolution coding mode may be used in video coding formats, such as AV1. Figure 13 shows an example loop filtering pipeline (1300) including a frame-level (or picture-level) super-resolution coding mode according to one embodiment of this disclosure.
[0118] A frame-level (or image-level) super-resolution coding mode can include downsampling (also called downscaling) a source image to be coded into a downsampled image, and coding the downsampled image at the encoder side with a lower spatial resolution (also called reduced spatial resolution or downsampled spatial resolution). The source image has a full spatial resolution (also called high spatial resolution or original spatial resolution) that is higher than the low spatial resolution. The coded downsampled image with the low spatial resolution can be transmitted to a decoder and decoded at the decoder side with the lower spatial resolution. Subsequently, the decoded downsampled image can be upsampled (or scaled up) to a decoded image with a higher spatial resolution.
[0119] Referring to FIG. 13, at the encoder side, a source frame (also called a source image) has a source image size (e.g., 4K×2K or 4000 samples×2000 samples) corresponding to a high spatial resolution (e.g., 4K×2K). The source frame is first downscaled (or downsampled) by a downscaler (also called a downsampler) (1311) in a non-prescriptive manner and thus may be encoded at a lower spatial resolution (e.g., 2k×2k). After downsampling, the downsampled image has a downscaled image size corresponding to the lower spatial resolution, such as 2K×2K or 2000 samples×2000 samples. The downsampled image is encoded using an encoding tool (1312), which may include intra-frame or inter-frame prediction, transform, quantization, entropy coding, etc. The encoded downsampled image may be filtered by a filter tool (1313) including one or more filters, such as a deblocking filter and a constrained directional enhancement filter (CDEF). The filtered downsampled image may be upscaled (or upsampled) by an upscaler (1314) to generate an upscaled (or upsampled) image with high spatial resolution (e.g., 4K x 2K). The upscaled image may be used as a reference image with high spatial resolution (e.g., 4K x 2K), for example, to predict another image. The upscaler (1314) may be a linear upscaler (also called a linear upscaling filter) in a standard manner. In some examples, a loop restoration tool (1315) is applied to the upscaled image at high spatial resolution to restore high-frequency details lost during downsampling and quantization.
[0120] When a super-resolution coding mode or a frame-based super-resolution coding mode is applied, the filtered downsampled image having a low spatial resolution may be transmitted to the decoder in a video bitstream. On the decoder side, a decoding tool (1322) is used to decode the filtered downsampled image received by the decoder. The decoded downsampled image may be further filtered by a filter tool (1323) including one or more filters, such as a deblocking filter and CDEF. The deblocking filter and CDEF may be applied to remove coding artifacts while preserving edges at the low resolution. Next, for example, an upscaler (132) is applied, for example, only along the horizontal direction to obtain a full spatial resolution reconstruction (e.g., an upscaled reconstructed image) having a high spatial resolution. The upscaler (1324) may be a linear upscaling filter in a standard manner. A loop restoration tool (or loop restoration filter) (1325) is optionally applied to the upscaled reconstructed image at a high spatial resolution to restore high-frequency details lost during downsampling and quantization.
[0121] The frame-level super-resolution coding mode may be applied horizontally and / or vertically. In one example, the frame-level super-resolution coding mode is applied horizontally, where the spatial resolution of the image along the horizontal direction is changed and the spatial resolution along the vertical direction remains the same throughout the coding process, and is therefore referred to as a horizontal-only frame-level super-resolution coding mode.
[0122] In some examples (e.g., AV1), the super-resolution coding mode is a special mode signaled at the frame level (also called the picture level). Each coded frame can use a horizontal-only super-resolution coding mode with a selected resolution within a ratio constraint. The signaled information can indicate whether linear upsampling is applied after decoding the frame and the scaling ratio used.
[0123] When the super-resolution coding mode is applied in only one direction (e.g., horizontal or vertical), the scaling ratio can refer to an upsampling ratio or a corresponding downsampling ratio. The upsampling ratio can have nine possible values, given as d / 8. In one example, d is an integer in the range of 8 to 16, so d is 8, 9, ..., or 16. The corresponding downsampling ratio before encoding may be a ratio of 1 to the upsampling ratio (e.g., 8 / d), so may be in the range of 1 / 2 to 1. Referring to FIG. 13, when the super-resolution coding mode is applied in only the horizontal direction, the downsampling ratio is 1 / 2, and the upsampling ratio is 2, corresponding to d=16.
[0124] Given an output frame dimension W × H (corresponding to a high spatial resolution) and an upsampling ratio d / 8, the encoder and decoder can calculate the low-resolution coded frame dimension as w × H, where the reduced (or downsampled) width w is (8w + d / 2) / d. The input to the linear upscaling process performed by the upscaler (e.g., (1314) or (1324)) is a reduced frame with low spatial resolution w × H, and the output from the linear upscaling process performed by the upscaler (e.g., (1314) or (1324)) is a frame with high spatial resolution W × H, specified in the frame head (also called the image head). A typical horizontal linear upscaler in AV1 (e.g., (1314) or (1324)) can use a 1 / 16-phase linear 8-tap filter for the interpolation of each row.
[0125] When the super-resolution coding mode is applied in the horizontal and vertical directions, the scaling ratio may include a horizontal scaling ratio and a vertical scaling ratio. The horizontal scaling ratio refers to the horizontal upsampling ratio or the corresponding horizontal downsampling ratio as described above. The vertical scaling ratio refers to the vertical upsampling ratio or the corresponding vertical downsampling ratio, and the above description may also apply to the vertical scaling ratio.
[0126] Residual values (also called residual data) in a residual block may be transformed (or forward transformed) into transform coefficients in a coefficient block. The transform coefficients in a coefficient block may be transformed (or inverse transformed) into residual values in a residual block. An example of transform coding, e.g., in AV1, may be described below.
[0127] To support expanded coding block partitions, multiple transform sizes (ranging from 4-point to 64-point for each dimension) and transform shapes (e.g., square, rectangular shapes with width / height ratios of 2:1, 1:2, 4:1, or 1:4) may be used for the primary transforms, for example, in AV1. The 2D transform process may use hybrid transform kernels (e.g., including a different 1D transform for each dimension of the coded residual block). Primary 1D transforms may include a) 4-point, 8-point, 16-point, 32-point, and 64-point DCT-2; b) 4-point, 8-point, and 16-point asymmetric DSTs (e.g., DST-4, DST-7) and corresponding flipped versions; and c) 4-point, 8-point, 16-point, and 32-point identity transforms.
[0128] The availability of hybrid transform kernels can be based on the transform block size and prediction mode. For chroma components, the selection of the transform type can be performed in an implicit manner. For intra-frame prediction residuals, the transform type can be selected according to the intra-frame prediction mode. For inter-frame prediction residuals, the transform type can be selected according to the transform type selection of the co-located luma block. Therefore, for chroma components, there is no transform type signaling in the bitstream.
[0129] Residual coding can refer to the coding of transform coefficients. In some examples, such as AV1, for each transform unit (TU), the coefficient coder starts with coding a skip symbol, followed by coding a transform kernel type and coding the end-of-block (EOB) position of all non-zero coefficients if transform coding is not skipped. The skip symbol can indicate whether transform coding is skipped. Each coefficient value can then be mapped to multiple level maps (e.g., three level planes) and symbol maps (or symbol planes). The symbol plane can cover the symbol of the coefficient, and the three level planes can correspond to different ranges of coefficient magnitudes, including a low-level plane, a mid-level plane, and a high-level plane. The low-level plane can correspond to a range of 0 to 2, the mid-level plane can correspond to a range of 3 to 14, and the high-level plane can cover a range of 15 or greater.
[0130] After the EOB position is coded, the low-level plane and the mid-level plane may be coded together in reverse scan order. The low-level plane may indicate whether the coefficient magnitude is between 0 and 2, and the mid-level plane may indicate whether this range is between 3 and 14. The symbol plane and the high-level plane may then be coded together in forward scan order, with the high-level plane indicating residual values with magnitudes greater than 14, and the remainder being entropy coded using an Exp-Golomb code. A conventional zigzag scan order may be used, such as in AV1.
[0131] Such separation (e.g., coefficient values mapped to three level planes and one symbol plane) allows a rich context model to be assigned to the low-level plane, which improves compression efficiency with a moderate context model size by considering transform directions (e.g., bidirectional, horizontal, and vertical), transform sizes, and up to five neighboring coefficients. The mid-level plane can use a context model similar to that of the low-level plane, with the number of context neighboring coefficients reduced from five to two. The high-level plane can be coded with an Exp-Golomb code without using a context model. In the symbol plane, the DC symbol is coded using the DC symbols of the TU's neighboring transform units as context information, and other symbol bits are coded directly without using a context model.
[0132] In some examples (e.g., AV1), super-resolution coding modes are performed at the frame level and therefore apply a fixed scaling ratio to all regions in the image. Signal statistics in different regions within an image can vary significantly, and therefore, in some examples, applying downsampling and / or upsampling to all regions may not be a good rate-distortion tradeoff.
[0133] In some examples (e.g., AV1), the maximum CU size is 128x128 (e.g., 128 samples x 128 samples), but the maximum transform size is only 64x64 (e.g., 64 samples x 64 samples). To benefit from the use of large CUs, a correspondingly large transform kernel (e.g., 128x128) can be used. Alternatively, other methods can be used that can achieve energy compaction similar to that achieved by large transform kernels.
[0134] According to various aspects of the present disclosure, whether a super-resolution coding mode is applied may be adaptively determined for a portion of a frame (or image) at a sub-picture level (or sub-frame level). The portion may include a subset of blocks or a single block within a frame. In one embodiment, the portion of a frame is a block, and whether a super-resolution coding mode is applied may be adaptively determined for the block. The block may refer to a coding block (CB), a coding unit (CU), a prediction block (PB), a transform block (TB), etc. The block may correspond to the luma component, the chroma component, or any other component (e.g., one of RGB signals) of a multi-channel signal. In one example, the block is a luma block or a chroma block. The block may be intra-frame coded or inter-frame coded. If it is determined that a super-resolution coding mode is applied to the block, the super-resolution coding mode is applied to the block and is referred to as a block-level super-resolution coding mode. In a block-level super-resolution coding mode, whether a super-resolution coding mode is applied to a block in an image may be determined individually for each block. In some examples, a first subset of blocks in an image is coded using a super-resolution coding mode, and a second subset of blocks in the image is coded without using the super-resolution coding mode. The first subset of blocks in the image coded using the super-resolution coding mode can have the same scaling ratio or different scaling ratios. In one example, whether the super-resolution coding mode is applied can be adaptively determined for each block in the image.
[0135] In this disclosure, the term "source block" may refer to a block that is coded by an encoder and may be an input signal to the encoder. The term "reconstructed block" may refer to a block that is reconstructed by a decoder and may be an output signal from the decoder. The reconstructed block may correspond to a source block, and the reconstructed block and the source block may have high or full spatial resolution.
[0136] If it is determined that a super-resolution coding mode is applied to a block (e.g., a source block) having a high spatial resolution, the downsampling process may be performed at the block level by the encoder. Transforms such as forward and inverse transforms may be performed at the low spatial resolution. Upsampling may be performed at the block level by the decoder.
[0137] 14 illustrates a process for coding a block using a super-resolution coding mode according to one embodiment of the present disclosure. At the encoder side, downsampled versions of the source signal and the reference signal (also called the prediction signal) may be used to generate a reduced-resolution residual signal (or a downsampled residual signal). The reduced-resolution residual signal may then be transformed and coded.
[0138] When decoding an image at the decoder side, a downsampled prediction signal may be generated first, and then the decoded reduced-resolution residual signal may be added to generate a downsampled reconstructed block. Finally, the reduced-resolution reconstructed block may be upsampled to a reconstructed block with the original resolution.
[0139] More specifically, referring to FIG. 14, at the encoder side, a source signal such as a source block (1401) is downsampled by a downsampler (1402), thus generating a downsampled signal (e.g., a downsampled source block (1403)). A reference signal such as a reference block (1405) is downsampled by a downsampler (1406), thus generating a downsampled signal (e.g., a downsampled reference block (1407)). Subsequently, a downsampled residual block (1404) is generated using a residual calculator (1418). The residual calculator (1418) may be configured to calculate the difference (residual data or residual values) between the downsampled source block (1403) and the downsampled reference block (1407). This difference is referred to as the downsampled residual block (1404). This downsampled residual block (1404) may be transformed, quantized, and entropy coded by a tool (1408) to generate a downsampled coefficient block (1409), which may include transform coefficients in the spatial frequency domain. This downsampled coefficient block (1409) may be transmitted from the encoder to a decoder.
[0140] Referring again to FIG. 14 , at the decoder side, a downsampled coefficient block (1409) is received by the decoder. In some examples, the received downsampled coefficient block differs from the downsampled coefficient block (1409) due to transmission loss, distortion, etc. For simplicity, the downsampled coefficient block (1409) is used as an input signal to a tool (1410) at the decoder. Entropy decoding, inverse quantization, and an inverse transform (Inv-Transform) may be performed on the downsampled coefficient block (1409) to generate a downsampled residual block (1411). The reference block (1412) may be downsampled by a downsampler (1413) to generate a downsampled reference block (1414). Subsequently, an aggregator (1419) may generate a downsampled reconstructed block (1415) based on the downsampled residual block (1411) and the downsampled reference block (1414). In one example, the downsampled residual block (1411) and the downsampled reference block (1414) are added to generate a downsampled reconstructed block (1415). Finally, the downsampled reconstructed block (1415) may be upsampled by an upsampler (1416) to generate a reconstructed block (1417). The downsampled reconstructed block (1415) and the reconstructed block (1417) may include sample values in the spatial domain, such as luma sample values, chroma sample values, RGB signal sample values, etc.
[0141] Referring to Figure 14, the source block (1401), the corresponding reconstructed block (1417), and the reference blocks (1405) and (1412) have high spatial resolution. The remaining blocks in Figure 14 have low spatial resolution, and therefore, both the encoding process at the encoder side and the decoding process at the decoder side can achieve high coding efficiency by reducing the number of samples to process.
[0142] 14 are similar to or equivalent to those not using the super-resolution coding mode, except for the processes performed by the downsamplers (1402), (1406), (1413) and the upsampler (1416). In one example, the downsampler (1406) is the same as the downsampler (1413), the reference block (1405) is the same as the reference block (1412), and therefore the downsampled reference block (1407) is the same as the downsampled reference block (1414). The downsampler (1402) may be the same as or different from the downsampler (1406).
[0143] In one embodiment, the set of downsampling filter coefficients used by the downsampler (1413) to downsample the reference block before reduced-resolution reconstruction may be signaled directly, or an index indicating the set of downsampling filter coefficients may be signaled. The index may indicate a set of downsampled filter coefficients from a first set of predefined coefficients. An identity filter (e.g., no filtering) may be included in the first set of predefined coefficients.
[0144] The block-based super-resolution coding mode may be appropriately adapted. According to aspects of the present disclosure, at the encoder side, a reference signal at the original spatial resolution may be subtracted from a source signal at the original spatial resolution to generate a difference signal (or residual signal) at the original spatial resolution. This difference signal may be downsampled to generate a residual signal at a reduced resolution. When decoding a block at the decoder side, the reduced-resolution residual signal may be upsampled and added to the reference signal at the original resolution to generate a reconstructed block. Figure 15A illustrates a process for coding a block using an alternative embodiment of the block-based super-resolution coding mode according to an embodiment of the present disclosure.
[0145] Referring to Figure 15A, at the encoder side, a residual block (1504) may be generated using a residual calculator (1503) based on a source signal, such as a source block (1501), and a reference signal, such as a reference block (1502). The residual calculator (1503) may be configured to calculate the difference (residual data or values) between the source block (1501) and the reference block (1502). The residual block (1504) may be downsampled by a downsampler (1505) to generate a downsampled residual block (1506). The downsampled residual block (1506) may then be transformed, quantized, and entropy coded by a tool (1507) to generate a downsampled coefficient block (1508). The downsampled coefficient block (1508) may be transmitted from the encoder to a decoder.
[0146] Referring again to FIG. 15A , at the decoder side, a downsampled coefficient block (1508) is received by the decoder. In some examples, the received downsampled coefficient block differs from the downsampled coefficient block (1508) due to transmission loss, distortion, etc. For simplicity, the downsampled coefficient block (1508) is used as an input signal to a tool (1509) at the decoder. Entropy decoding, inverse quantization, and an inverse transform (Inv-Transform) may be performed on the downsampled coefficient block (1508) to generate a downsampled residual block (1510). The downsampled residual block (1510) may be upsampled by an upsampler (1511) to generate a residual block (1512). Subsequently, an aggregator (1514) may generate a reconstructed block (1515) based on the residual block (1512) and the reference block (1513). In one example, the residual block (1512) and the reference block (1513) are added together to generate a reconstructed block (1515).
[0147] Referring to Figure 15A, the source block (1501), the corresponding reconstructed block (1515), the reference blocks (1502), (1513), and the residual blocks (1504), (1512) have high spatial resolution. The remaining blocks in Figure 15A have low spatial resolution, so that both the encoding process at the encoder side and the decoding process at the decoder side can achieve high coding efficiency by reducing the number of samples to be processed.
[0148] In some examples, the encoding and decoding processes shown in FIG. 15A are similar or equivalent to those that do not use the super-resolution coding mode, except for the processes performed by the downsampler (1505) and upsampler (1511).
[0149] The block-based super-resolution coding modes described in Figures 14 and 15A may be adapted appropriately. In one embodiment, whether a block-level super-resolution coding mode is applied is determined for a block, such as a TB, on which a transform is performed. Meanwhile, a prediction process, such as inter-frame prediction or intra-frame prediction, is performed for another block (e.g., a CB) having a size different from that of the TB. In one example, one CB includes multiple transform blocks (TBs). Prediction is performed on this CB. The block-level super-resolution coding mode is individually enabled or disabled for each TB in this CB. For example, one CB includes four TBs, and the block-level super-resolution coding mode is enabled for one of the four TBs and disabled for the remaining three of the four TBs.
[0150] FIG. 15B illustrates a process for coding a block using a block-based super-resolution coding mode according to one embodiment of the present disclosure. On the encoder side, a source block (1501B) is a CB (1501B). In the example shown in FIG. 15B, the source CB (1501B) includes four source TBs. A residual CB (1504B) may be generated using a residual calculator (1503) based on a source signal, such as the source CB (1501B), and a reference signal, such as the reference CB (1502B). The residual calculator (1503) may be configured to calculate a difference (residual data or residual values) between the source CB (1501B) and the reference CB (1502B).
[0151] Referring to FIG. 15B, the residual CB (1504B) includes residual TBs (e.g., TB1-TB4) corresponding to four source TBs, respectively. The block-level super-resolution coding mode is enabled or disabled for each TB individually. In the example of FIG. 15B, the block-level super-resolution coding mode is enabled for TB1 and disabled for TB2-TB4. Thus, TB1 may be downsampled by the downsampler (1505) to generate a downsampled residual TB (1506B). Subsequently, the downsampled residual TB (1506B) may be transformed, quantized, and entropy coded by the tool (1507) to generate a downsampled coefficient TB (1508B). The downsampled coefficient TB (1508B) may be transmitted from the encoder to the decoder. The remaining TBs (e.g., TB2 to TB4) in the residual CB (1504B) are further coded, for example by a tool (1507), to generate coefficients TB (e.g., coefficients TB2 to TB4), which can then be transmitted from the encoder to the decoder.
[0152] Referring again to FIG. 15B, at the decoder side, the downsampled coefficients TB (1508B) are received by the decoder. In some examples, the received downsampled coefficients TB differ from the downsampled coefficients TB (1508B) due to transmission loss, distortion, etc. For simplicity, the downsampled coefficients TB (1508B) are used as input signals to the tool (1509) at the decoder. Entropy decoding, inverse quantization, and an inverse transform (Inv-Transform) may be performed on the downsampled coefficients TB (1508B) to generate a downsampled residual TB (1510B). The downsampled residual TB (1510B) may be upsampled by an upsampler (1511) to generate a residual TB1′. Furthermore, the received coefficients TB (e.g., coefficients TB2 to TB4) corresponding to TB2 to TB4 may be decoded, for example, by tool (1509), to generate residuals TB (e.g., TB2' to TB4') corresponding to TB2 to TB4, respectively.
[0153] The residual TB1' and the residual TB (e.g., TB2'-TB4') may be combined to form the residual CB (1512B). The aggregator (1514) may then generate a reconstructed CB (1515B) based on the residual CB (1512B) and the reference CB (1513B). In one example, the residual CB (1512B) and the reference CB (1513B) may be added to generate the reconstructed CB (1515B).
[0154] Referring to FIG. 15B, the source CB (1501B), the corresponding reconstructed CB (1515B), the reference CB (1502B), (1513B), and the residual CB (1504B), (1512B) have high spatial resolution. Also, TB1-TB4, coefficients TB2-TB4, and TB1'-TB4' have high spatial resolution. The downsampled residual TB (1506B), downsampled coefficient TB (1508B), and downsampled residual TB (1510B) have low spatial resolution.
[0155] In some examples, the encoding and decoding processes shown in FIG. 15B are similar or equivalent to those that do not use the super-resolution coding mode, except for the processes performed by the downsampler (1505) and upsampler (1511).
[0156] According to aspects of the present disclosure, a block-based super-resolution coding mode, such as that described with reference to FIGS. 14 and 15A, may be applied to a source block having an original spatial resolution of M×N (also referred to as an M×N block), and may be applied to a block of size (M / D X )×(N / D Y ) (e.g., downsampled coefficient block (1409) or (1508)) may be coded. X and D Y refers to the downsampling factor along the horizontal and vertical directions, respectively. In one example, the parameter D X and parameter D Y correspond to the horizontal and vertical upsampling ratios, respectively. Exemplary values of M and N can include, but are not limited to, 256, 128, 64, 32, 16, and 8, and the parameter D X or D Y may be a positive integer, including but not limited to 2, 4, 8, etc.
[0157] In one example, for example, in AV1 and H.266 / VVC, the CU size may be 128x128, and large transform kernels of the same size as the CU (e.g., 128x128) are avoided. Instead, a 64x64 transform is applied to each of the four quadrants of the 128x128 CU. A quadrant is one of four evenly divided regions within the 128x128 CU. According to aspects of the present disclosure, a block-level super-resolution coding mode may be applied to code a 128x128 CU as follows, as shown in Figure 16.
[0158] Figure 16 shows an example of a block-level super-resolution coding mode according to one embodiment of the present disclosure. Referring to Figure 16, the source block (1401), the reference blocks (1405), (1413), and the reconstructed block (1417) correspond to a CU (or CB) with a size of 128x128. Therefore, the original spatial resolution is 128x128. The downsampling factor D of the downsamplers (1402) and (1406) is X and D Y is 2. Therefore, the low spatial resolution is 64x64. Therefore, the downsampled source block (1403), the downsampled reference block (1407), the downsampled residual block (1404), the downsampled coefficient block (1409), the downsampled residual block (1411), the downsampled reconstructed block (1415), and the downsampled reference block (1414) have a size of 64x64. The detailed description of Figure 16 is similar to or equivalent to the description of Figure 14, except for the processes associated with blocks (1600) and (1610), and therefore the differences between Figure 14 and Figure 16 (associated with blocks (1600) and (1610)) will be explained below.
[0159] Block (1600) is a residual block (1600) corresponding to a CU having a size of 128x128. Specifically, one of the four quadrants (1601)-(1604) of the residual block (1600) is replaced with a downsampled 64x64 version (e.g., downsampled residual block (1404)), and the remaining three quadrants (1602)-(1604) may be zeroed. For example, the remaining three quadrants (1602)-(1604) are transform-skipped. Thus, only one 64x64 transform (as opposed to four 64x64 transforms) is applied to the 128x128 CU, and energy compaction is facilitated by the downsampling and upsampling processes in FIG. 16. In some examples (e.g., AV1), transform subdivision is allowed within a CU, and the remaining three 64x64 quadrants (1602)-(1604) have no residual, so a transform skip may be selected for the remaining three 64x64 quadrants (1602)-(1604). Referring to Figure 16, the three 64x64 quadrants (1602)-(1604) are zero blocks, where the residual values are zero. The transform skip does not need to be signaled because it could be estimated if the CU was coded using a block-level super-resolution coding mode.
[0160] On the decoder side, block (1610) includes quadrant (1611), which is the downsampled reconstructed block (1415), and three quadrants (1612) through (1614). Each of the three quadrants (1612) through (1614) is a zero block, where the residual value is zero. Quadrant (1611) is then upsampled to obtain reconstructed block (1417).
[0161] Alternatively, a downsampled 64x64 version of a 128x128 residual block corresponding to a 128x128 CU may be encoded and / or decoded. An upsampled version of the downsampled reconstructed block may be used at a decoder to fill a 128x128 reconstructed block corresponding to a 128x128 CU without using a process involving quadrant or transform skipping if the CU was coded using the method in Figure 16.
[0162] In some examples, as shown in the tool (1408), when a 64x64 transform is applied to a downsampled residual block, zeroing of high-frequency transform coefficients (e.g., as normatively specified in AV1) may be disabled to avoid discarding too much information.
[0163] The block-level super-resolution coding mode in FIG. 15A may be similarly adapted as shown in FIG. 17. The detailed description of FIG. 17 is similar to or equivalent to that of FIG. 15A, except for the processes associated with blocks (1600) and (1610), and therefore, the differences between FIG. 15A and FIG. 17 (associated with blocks (1600) and (1610)) are explained below. Furthermore, the detailed description of blocks (1600) and (1610) is similar to or equivalent to that of FIG. 16 and is omitted for brevity. Specifically, one of the four quadrants (1601)-(1604) of the residual block (1600) (e.g., (1601)) may be replaced with a downsampled 64x64 version (e.g., downsampled residual block (1506)), and the remaining three quadrants (1602)-(1604) may be zeroed in the same manner as described in FIG. 16.
[0164] On the decoder side, the block (1610) is a residual block (1610) that includes quadrant (1611), which is the downsampled residual block (1510), and three quadrants (1612) to (1614). Each of the three quadrants (1612) to (1614) is a zero block, where the residual value is zero. Quadrant (1611) is then upsampled to obtain the residual block (1512).
[0165] According to aspects of the present disclosure, an upsampler (e.g., upsampler (1416) in FIGS. 14 and 16 for upsampling a reduced-resolution reconstructed block, or upsampler (1511) in FIGS. 15A, 15B, and 17 for upsampling a reduced-resolution residual block) can be an upsampling filter indicated by a set of upsampling filter coefficients. The set of upsampling filter coefficients may be signaled directly, or an index indicating the set of upsampling filter coefficients may be signaled. The index can indicate a set of upsampling filter coefficients from a predefined set of coefficients, including, for example, an identity filter (e.g., no filtering).
[0166] According to aspects of the present disclosure, whether a block-level super-resolution coding mode (e.g., those described with reference to Figures 14, 15A, 15B, 16, and 17) is applied may depend on the CU size. The CU size may refer to any size information such as a CU width, a CU height, or a CU area (e.g., CU width x CU height). The decision regarding which CU size the block-level super-resolution coding mode is applied to may be signaled. For example, in a higher level syntax (e.g., a level above the CU level, such as a sub-picture level, a picture header, a picture parameter set, or a sequence parameter set), the CU size to which the block-level super-resolution coding mode is applied may be signaled.
[0167] According to aspects of the present disclosure, a block-level super-resolution coding mode (e.g., those described with reference to Figures 14, 15A, 15B, 16, and 17) may be adaptively enabled or disabled at any appropriate level for one or more blocks within that level. The level may correspond to a sub-image region including multiple blocks, a block, an image, or multiple images. According to aspects of the present disclosure, the block-level super-resolution coding mode may be enabled or disabled per CU at the CU level, per superblock at the superblock level, per PB at the PB level, per TB at the TB level, per tile at the tile level, per coded segment at the segment level, per frame (or image) at the frame (or image) level, per sequence at the sequence level, etc. Whether the block-level super-resolution coding mode is enabled or disabled for one or more blocks within that level may be signaled or inferred.
[0168] In one example, this level is the tile level, and the tile includes multiple CBs. One or more blocks are multiple CBs. Whether a block-level super-resolution coding mode is enabled for multiple CBs may be signaled for this tile. If it is determined that a block-level super-resolution coding mode is enabled for multiple CBs, each CB in the tie may be coded and / or decoded in a super-resolution coding mode, as shown in Figures 14, 15A, 16, and 17.
[0169] In one example, one CB includes multiple TBs, and the level is the TB level. One or more blocks may be TBs. Whether the block-level super-resolution coding mode is enabled for a TB may be signaled at the TB level. Therefore, the block-level super-resolution coding mode is individually enabled or disabled for each TB in the CB, as shown in Figure 15B.
[0170] According to aspects of the present disclosure, when a block-level super-resolution coding mode (e.g., such as those described with reference to Figures 14, 15A, 16, and 17) is enabled, (i) the type of downsampler and / or upsampler and / or (ii) the scaling ratio used in the block-level super-resolution coding mode may be determined based on some characteristics of the image, such as a CU, a tile, or a coded segment. The downsampler and upsampler are also referred to as downsampling filters and upsampling filters, respectively. The characteristics may be indicated by feature indicators, such as, for example, the directionality or signal statistics (e.g., signal variance) of the CU, tile, or coded segment. The feature indicators may be signaled or derived at the encoder and decoder. In one example, different downsampling filters, upsampling filters, and / or scaling ratios may be used based on the feature indicators.
[0171] In one example, for each CU of size N×N (e.g., N samples×N samples, where N is a positive integer) with top-left sample position r, horizontal and vertical 1-D Laplacian activities (H NXN and V NXN ) may be computed using prediction samples at the encoder and decoder using only (N-2) x (N-2) interior samples, as shown below:
[0172]
number
number
[0173] Here, hor(r,i,j) and ver(r,i,j) are defined as follows:
[0174]
number
number
[0175] Here, I(x,y) represents the pixel intensity value (also called sample value) at the sample position (x,y).
[0176] 2D Laplacian activity is V NXN and H NXN to obtain a sum value and then quantizing the sum value into multiple activity level classes (e.g., 0, 1, 2, 3, 4, 5). The multiple activity level classes indicating 2D Laplacian activity may be used as feature indicators by the encoder and / or decoder.
[0177] In one example, the direction (called a directionality indicator) associated with the super-resolution coding mode may be determined as follows: H NXN >2V NXN , the directionality indicator indicates a first direction (e.g., horizontal), and therefore the down / up sampling filter and / or sampling ratio is adjusted to the first direction (e.g., H NXN is 2V NXN V NXN >2H NXN , the directionality indicator indicates a second direction (e.g., vertical), and therefore the down / up sampling filter and / or sampling ratio is adjusted to correspond to the second direction (e.g., V NXN is 2H NXN otherwise, for example, H NXN is 2V NXN Below and V NXN is 2H NXNIf it is less than or equal to, the directionality indicator indicates a third directionality (e.g., no directionality), and therefore the down / upsampling filter and / or upsampling ratio may be selected accordingly. In one example, if the directionality indicator indicates a third directionality, upsampling / downsampling is performed in both the horizontal and vertical directions. The above-mentioned directionality may be used as a feature indicator by the encoder and / or decoder.
[0178] FIG. 18 shows a flowchart outlining a process (1800) according to one embodiment of the present disclosure. The process (1800) may be used in the reconstruction of blocks such as CB, CU, PB, TB, TU, luma blocks (e.g., luma CB or luma TB), and chroma blocks (e.g., chroma CB or chroma TB). In various embodiments, the process (1800) is performed by a processing circuit in a terminal device (310), (330), or (340), a processing circuit performing the functions of a video encoder (403), a processing circuit performing the functions of a video decoder (410), a processing circuit performing the functions of a video decoder (510), or a processing circuit performing the functions of a video encoder (603). In some embodiments, the process (1800) is implemented by software instructions, and thus, the processing circuit performs the process (1800) when the processing circuit executes the software instructions. The process starts at (S1801) and proceeds to (S1810).
[0179] At (S1810), coded information for one or more blocks may be decoded from the coded video bitstream. The coded information may indicate whether a super-resolution coding mode (or a block-based super-resolution coding mode) is applied to one or more blocks. In some examples, the super-resolution coding mode is applied in response to one or more blocks being downsampled by the encoder from a higher spatial resolution to a lower spatial resolution. In one example, a flag is signaled in the coded information to indicate whether the super-resolution coding mode is applied to one or more blocks. Alternatively, whether the super-resolution coding mode is applied to one or more blocks may be inferred from the coded information.
[0180] In one embodiment, the one or more blocks are coding blocks (CB), coding units (CU), predictive blocks (PB), or transform blocks (TB). The coded information may indicate whether a super-resolution coding mode applies to each of the one or more blocks.
[0181] In one embodiment, the coded information may indicate whether the super-resolution coding mode applies to a CU, CB, superblock, PB, TB, tile, coded segment, frame, or sequence containing one or more blocks.
[0182] At (S1820), based on coded information indicating that the super-resolution coding mode is applied to one or more blocks, a reconstructed block may be generated based on a first block in the one or more blocks using the super-resolution coding mode. In some examples, the reconstructed block may be generated using the super-resolution coding mode by upsampling information of the first block in the one or more blocks. The information of the first block may include a downsampled residual block associated with the first block or a downsampled reconstructed block associated with the first block. The first block may have a low spatial resolution, and the reconstructed block may have a high spatial resolution that is higher than the low spatial resolution. The one or more blocks may include transform coefficients in the spatial frequency domain (also referred to as the frequency domain), and the reconstructed block may include sample values in the spatial domain, such as luma sample values and / or chroma sample values. In one example, each reconstructed block is generated based on each of the one or more blocks using a block-level super-resolution coding mode.
[0183] In one embodiment, the first block is inversely transformed into a downsampled residual block having a lower spatial resolution, for example, by tool (1410) in Figures 14 and 16 and tool (1509) in Figures 15A, 15B, and 17. With reference to Figures 14, 15A, 15B, 16, and 17, the first block may refer to the downsampled coefficient block (1409), (1508), or (1508B), and the downsampled residual block may refer to the downsampled residual block (1411), (1510), or (1510B).
[0184] After the first block is inverse transformed into a downsampled residual block, different methods can be used to obtain the reconstructed block.
[0185] In one example, the downsampled reference block is obtained by downsampling the reference block for the first block. The reference block and the downsampled reference block may have high and low spatial resolutions, respectively. Referring to FIG. 14 or FIG. 16, the downsampled reference block (1414) is obtained by downsampling the reference block (1412) for the first block. A downsampled reconstructed block (e.g., 1415) may be generated based on the downsampled residual block (e.g., 1411) and the downsampled reference block (e.g., 1414), where the downsampled reconstructed block has low spatial resolution. Furthermore, a reconstructed block (e.g., 1417) may be generated by upsampling the downsampled reconstructed block (e.g., 1415).
[0186] In another example, as shown in Figure 15A or 17, a residual block (e.g., (1512)) is obtained by upsampling a downsampled residual block (e.g., (1510)), where the residual block has high spatial resolution. Subsequently, a reconstructed block (e.g., (1515)) may be generated based on the obtained residual block (e.g., (1512)) and a reference block (e.g., (1513)) for the first block.
[0187] The process (1800) proceeds to (S1899) and ends.
[0188] The process (1800) may be adapted as appropriate. Steps in the process (1800) may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used. In one example, the one or more blocks are a subset of blocks in the current image to be reconstructed, and the super-resolution coding mode is not applied to blocks in the current image that are different from the one or more blocks.
[0189] In one example, a tile in a current image includes multiple CBs. One or more blocks are the multiple CBs. In (S1810), the coded information indicates at the tile level that a super-resolution coding mode (block-level super-resolution coding mode) is applied to the tile. Thus, the coded information indicates at the tile level that the super-resolution coding mode is applied to the multiple CBs in the tile. In (S1820), the super-resolution coding mode is used to generate a reconstructed block (e.g., a reconstructed CB) based on a first block in the multiple CBs, such as the blocks described with reference to Figures 14, 15A, 16, and 17. The first block is one CB of the multiple CBs and has low spatial resolution. The reconstructed block has high spatial resolution. Step (S1820) may be applied to each of the multiple CBs in the tile to reconstruct an individual reconstructed block.
[0190] FIG. 19 shows a flowchart outlining a process (1900) according to one embodiment of the present disclosure. The process (1900) may be used to encode blocks such as CB, CU, PB, TB, TU, luma blocks (e.g., luma CB or luma TB), and chroma blocks (e.g., chroma CB or chroma TB). In various embodiments, the process (1900) is performed by a processing circuit, such as a processing circuit in a terminal device (310), (320), (330), or (340), a processing circuit performing the functions of a video encoder (403), or a processing circuit performing the functions of a video encoder (603). In some embodiments, the process (1900) is implemented by software instructions, and thus, the processing circuit performs the process (1900) when the processing circuit executes the software instructions. The process starts at (S1901) and proceeds to (S1910).
[0191] At (S1910), it can be determined whether a super-resolution coding mode is applied to a first block in the video. The first block can include sample values in the spatial domain, such as luma sample values and / or chroma sample values, and can have high spatial resolution.
[0192] In one embodiment, the first block is CB, CU, PB, or TB.
[0193] At (S1920), based on determining that the super-resolution coding mode is applied to the first block, a downsampled coefficient block may be generated based on the first block using the super-resolution coding mode. The downsampled coefficient block may include transform coefficients and may have a low spatial resolution that is lower than the high spatial resolution.
[0194] In one embodiment, a downsampled residual block may be generated based on a first block and a reference block for the first block having a high spatial resolution. The downsampled residual block includes residual values and may have a low spatial resolution. The downsampled residual block is transformed to obtain a downsampled coefficient block.
[0195] Different methods can be used to generate a downsampled residual block. For example, as shown in Figures 14 and 16, a first block is downsampled to obtain a downsampled block with low spatial resolution. A reference block is downsampled to obtain a downsampled reference block with low spatial resolution. Subsequently, a downsampled residual block can be generated based on the downsampled block and the downsampled reference block.
[0196] In another example, the residual block may be generated based on the first block and the reference block. The residual block may have high spatial resolution. The residual block may be downsampled to obtain a downsampled residual block.
[0197] At (S1930), information for the first block may be coded in the video bitstream. The coded information may indicate whether a super-resolution coding mode is applied to the first block. Based on determining that the super-resolution coding mode is applied to the first block, the coded information may indicate that the super-resolution coding mode is applied to the first block. In one example, a flag is signaled in the coded information to indicate whether the super-resolution coding mode is applied to the first block. Alternatively, whether the super-resolution coding mode is applied to the first block may be inferred from the coded information.
[0198] In one embodiment, the encoded information indicates whether the super-resolution coding mode is applied to a CU, CB, superblock, PB, TB, tile, coded segment, frame, or sequence including the first block. Based on determining that the super-resolution coding mode is applied to the first block, the encoded information may indicate that the super-resolution coding mode is applied to a CU, CB, superblock, PB, TB, tile, coded segment, frame, or sequence including the first block.
[0199] The process (1900) proceeds to (S1999) and ends.
[0200] The process (1900) may be adapted as appropriate. Steps in the process (1900) may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used. In one example, it is determined that a super-resolution coding mode is not applied to the first block. Therefore, in (S1920), a coefficient block having high spatial resolution is generated based on the first block without the super-resolution coding mode. In (S1930), the coded information indicates that the super-resolution coding mode is not applied to the first block.
[0201] The embodiments of the present disclosure may be used alone or in combination in any order. Furthermore, each of the method (or embodiment), encoder, and decoder may be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored on a non-transitory computer-readable medium. The embodiments of the present disclosure may be applied to a luma block or a chroma block.
[0202] The techniques described above may be implemented as computer software using computer-readable instructions and may be physically stored on one or more computer-readable media. For example, Figure 20 illustrates a computer system (2000) suitable for implementing certain embodiments of the disclosed subject matter.
[0203] Computer software may be coded using any suitable machine code or computer language and may undergo assembly, compilation, linking, or similar mechanisms to create code comprising instructions, which may be executed directly by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or may be executed via code interpretation, microcode execution, etc.
[0204] The instructions may be executed by various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, internet of things devices, and the like.
[0205] The components of the computer system (2000) illustrated in Figure 20 are exemplary in nature and are not intended to suggest any limitation on the scope of use or functionality of the computer software implementing the embodiments of the present disclosure. The arrangement of components should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary embodiment of the computer system (2000).
[0206] The computer system (2000) may include several human interface input devices. Such human interface input devices may respond to input by one or more users via tactile input (e.g., keystrokes, swipes, data glove movements, etc.), audio input (e.g., voice, clapping, etc.), visual input (e.g., gestures, etc.), and olfactory input (not shown). Human interface devices may also be used to capture certain media not necessarily directly associated with conscious human input, such as audio (e.g., voice, music, ambient sounds, etc.), images (e.g., scanned images, photographic images obtained from a still image camera, etc.), and video (e.g., two-dimensional video, three-dimensional video including stereoscopic vision, etc.).
[0207] The human interface input devices may include one or more of a keyboard (2001), a mouse (2002), a trackpad (2003), a touchscreen (2010), a data glove (not shown), a joystick (2005), a microphone (2006), a scanner (2007) and a camera (2008) (only one of each shown).
[0208] The computer system (2000) may also include several human interface output devices that may stimulate one or more of the user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may be haptic output devices (e.g., haptic feedback via a touchscreen (2010), data gloves (not shown), or joystick (2005), but may also be haptic feedback devices that do not act as input devices), audio output devices (e.g., speakers (2009), headphones (not shown)), visual output devices (e.g., screens (2010), including CRT screens, LCD screens, plasma screens, and OLED screens, each of which may or may not have touchscreen input capabilities, each of which may or may not have haptic feedback capabilities, some of which may output two-dimensional visual output or three or more dimensional visual output, for example, via stereographic output, virtual reality glasses (not shown), holographic displays and smoke tanks (not shown), and printers (not shown).
[0209] The computer system (2000) may include human-accessible storage devices and their associated media, such as optical media or similar media (2021), including CD / DVD ROM / RW (2020) with CD / DVD, thumb drives (2022), removable hard drives or solid state drives (2023), legacy magnetic media such as tape and floppy disks (not shown), specialized ROM / ASIC / PLD-based devices such as security dongles (not shown), and the like.
[0210] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not encompass transmission media, carrier waves, or other transitory signals.
[0211] The computer system (2000) may also include a network interface (2054) to one or more communication networks (2055). The communication network may be, for example, wireless, wired, or optical. The network may further include a local network, a wide area network, a metropolitan area network, a vehicular network, an industrial network, a real-time network, a delay-tolerant network, etc. Examples of networks include LANs such as Ethernet, wireless LANs, cellular networks (GSM, 3G, 4G, 5G, LTE, etc.), television cable or wireless wide area digital networks (including cable television, satellite television, and terrestrial broadcast television), vehicular and industrial networks (including CAN buses), etc. Some networks generally require an external network interface adapter connected to some general-purpose data port or peripheral bus (2049) (e.g., a USB port on the computer system (2000)), while other systems are typically integrated into the core of the computer system (2000) by connecting to a system bus (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system), as described below. Using any of these networks, the computer system (2000) can communicate with other entities. Such communication may be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., from the Canbus to a specific Canbus device), or two-way, e.g., to other computer systems using local or wide-area digital networks. As noted above, specific protocols and protocol stacks may be used with each of these networks and network interfaces.
[0212] The above human-machine interface devices, human-accessible storage devices, and network interfaces can be connected to the core (2040) of the computer system (2000).
[0213] The core (2040) may include one or more central processing units (CPUs) (2041), graphics processing units (GPUs) (2042), dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) (2043), hardware accelerators for specific tasks (2044), graphics adapters (2050), etc. These devices may be connected via a system bus (2048), along with read-only memory (ROM) (2045), random access memory (2046), internal mass storage (2047), such as an internal non-user-accessible hard disk drive or SSD, etc. In some computer systems, the system bus (2048) may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus (2048) or via a peripheral bus (2049). In one example, a screen (2010) may be connected to the graphics adapter (2050). Peripheral bus architectures include Peripheral Controller Interface (PCI), Universal Serial Bus (USB), and the like.
[0214] The CPU (2041), GPU (2042), FPGA (2043), and accelerator (2044) can execute several instructions, which can be combined to form the above-mentioned computer code. The computer code can be stored in ROM (2045) or RAM (2046). Temporary data can be stored in RAM (2046), while permanent data can be stored in, for example, internal mass storage (2047). The use of cache memory, which can be closely associated with one or more CPUs (2041), GPUs (2042), mass storage (2047), ROM (2045), RAM (2046), etc., enables high-speed storage and retrieval of data from any memory device.
[0215] The computer-readable medium can have computer code thereon for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be any medium and code known and available to those skilled in the computer software arts.
[0216] By way of example and not limitation, a computer system having the architecture (2000), and in particular the core (2040), can provide functionality as a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible, computer-readable media. Such computer-readable media may be media related to the user-accessible mass storage discussed above, and may be specific storage with the core (2040), such as the core's internal mass storage (2047) or ROM (2045), which may be non-volatile. Software implementing various embodiments of the present disclosure may be stored in such devices and executed by the core (2040). The computer-readable media may include one or more memory devices or chips, depending on particular needs. This software may cause the core (2040), and in particular the processor (including a CPU, GPU, FPGA, etc.) therein, to perform particular processes or particular portions of particular processes described herein, including defining data structures stored in RAM (2046) and modifying such data structures according to software-defined processes. Additionally or alternatively, a computer system may provide functionality due to logic hardwired or otherwise incorporated into circuitry (e.g., accelerators (2044)) that may operate in place of or together with software to perform particular processes or portions of particular processes described herein. Where appropriate, references to software may include logic, and vice versa. Where appropriate, references to computer-readable media may include circuitry (such as integrated circuits (ICs)) that stores software to be executed, circuitry embodying the logic to be executed, or both. The present disclosure encompasses any appropriate combination of hardware and software.
[0217] While this disclosure has described several exemplary embodiments, there are modifications, arrangements, and various equivalent substitutions that fall within the scope of this disclosure. It should therefore be understood that those skilled in the art will be able to design various systems and methods that, although not explicitly shown or described herein, embody the principles of this disclosure and are therefore within the spirit and scope of this disclosure.
[0218] Appendix A: Abbreviations JEM: Joint exploration model VVC: versatile video coding BMS:benchmark set MV: Motion Vector HEVC: High Efficiency Video Coding SEI: Supplementary Enhancement Information VUI: Visual Usability Information GOP: Groups of Pictures TU: Transform Units PU: Prediction Units CTU: Coding Tree Units CTB: Coding Tree Blocks PB: Prediction Blocks HRD: Hypothetical Reference Decoder SNR: Signal Noise Ratio CPU: Central Processing Units GPU: Graphics Processing Units CRT:Cathode Ray Tube LCD: Liquid-Crystal Display OLED: Organic Light-Emitting Diode CD: Compact Disc DVD: Digital Video Disc ROM: Read-Only Memory RAM: Random Access Memory ASIC: Application-Specific Integrated Circuit PLD: Programmable Logic Device LAN: Local Area Network GSM: Global System for Mobile communications LTE:Long-Term Evolution, long-term evolution CANBus: Controller Area Network Bus USB: Universal Serial Bus PCI: Peripheral Component Interconnect, external controller interface FPGA: Field Programmable Gate Areas SSD: solid-state drive IC: Integrated Circuit CU: Coding Unit
Claims
1. 1. A method of decoding video in a decoder, comprising: decoding coded information for one or more blocks from a coded video bitstream, the coded information indicating whether a super-resolution coding mode is to be applied to the one or more blocks, and wherein the super-resolution coding mode is applied in response to the one or more blocks being downsampled by an encoder from a higher spatial resolution to a lower spatial resolution; generating a reconstructed block by upsampling information of a first block in the one or more blocks using the super-resolution coding mode based on the coded information indicating that the super-resolution coding mode has been applied to the one or more blocks, the first block having the low spatial resolution, the reconstructed block having a high spatial resolution higher than the low spatial resolution, the one or more blocks including transform coefficients, and the reconstructed block including sample values in a spatial domain; If the one or more blocks are coding blocks (CBs), signaling a transform skip, the transform skip signal indicating whether super-resolution coding is skipped when the super-resolution coding mode is applied to all of the transform blocks (TBs) included in the CB; skipping the transform skip signaling when the super-resolution coding mode is applied to one or more TBs among the plurality of TBs and the one or more TBs among the remaining TBs, and the super-resolution coding mode is disabled for the remaining TBs; Contains A method characterized by:
2. the one or more blocks are coding blocks (CBs), coding units (CUs), predictive blocks (PBs), or transform blocks (TBs); the coded information indicating whether the super-resolution coding mode is applied to each of the one or more blocks.
2. The method of claim 1 .
3. The coded information indicates whether the super-resolution coding mode applies to a coding unit (CU), a coding block (CB), a superblock, a predictive block (PB), a transform block (TB), a tile, a coded segment, a frame, or a sequence including the one or more blocks.
2. The method of claim 1 .
4. The method further comprises: inverse transforming the first block into a downsampled residual block having the lower spatial resolution; 2. The method of claim 1 .
5. The method further comprises: obtaining a downsampled reference block by downsampling a reference block for the first block, the reference block and the downsampled reference block having the high spatial resolution and the low spatial resolution, respectively; generating a downsampled reconstructed block based on the downsampled residual block and the downsampled reference block, wherein the downsampled reconstructed block has the low spatial resolution; generating the reconstructed block includes upsampling the downsampled reconstructed block.
5. The method of claim 4.
6. The generating step further comprises: obtaining a residual block by upsampling the downsampled residual block, the residual block having the high spatial resolution; generating the reconstructed block based on the obtained residual block and a reference block for the first block, the reference block having the high spatial resolution; 5. The method of claim 4.
7. the one or more blocks are a subset of blocks in a current image to be reconstructed, and the super-resolution coding mode is not applied to blocks in the current image that are different from the one or more blocks.
2. The method of claim 1 .
8. 1. A method of encoding video in an encoder, comprising: determining whether a super-resolution coding mode is to be applied to a first block included in one or more blocks in the video, the first block including sample values in the spatial domain and having a high spatial resolution; Based on determining that the super-resolution coding mode is to be applied to the first block, generating a downsampled coefficient block based on the first block using the super-resolution coding mode, the downsampled coefficient block including transform coefficients and having a lower spatial resolution than the high spatial resolution; encoding information for the first block in a video bitstream, the encoded information indicating that the super-resolution coding mode was applied to the first block; If the one or more blocks are coding blocks (CBs), signaling a transform skip, the transform skip signal indicating whether super-resolution coding is skipped when the super-resolution coding mode is applied to all of the transform blocks (TBs) included in the CB; skipping the transform skip signaling when the super-resolution coding mode is applied to one or more TBs among the plurality of TBs and the one or more TBs among the remaining TBs, and the super-resolution coding mode is disabled for the remaining TBs; A method comprising:
9. The first block is a coding block (CB), a coding unit (CU), a prediction block (PB), or a transform block (TB).
9. The method of claim 8.
10. the encoded information indicates that the super-resolution coding mode is applied to a coding unit (CU), a coding block (CB), a superblock, a prediction block (PB), a transform block (TB), a tile, a coded segment, a frame, or a sequence including the first block; 9. The method of claim 8.
11. The generating step further comprises: generating a downsampled residual block based on the first block and a reference block for the first block, the reference block having the high spatial resolution, and the downsampled residual block containing residual values having the low spatial resolution; transforming the downsampled residual block to obtain the downsampled coefficient block.
9. The method of claim 8.
12. The step of generating the downsampled residual block comprises: downsampling the first block to obtain a downsampled block having the lower spatial resolution; downsampling the reference block to obtain a downsampled reference block having the lower spatial resolution; generating the downsampled residual block based on the downsampled block and the downsampled reference block; 12. The method of claim 11 .
13. The step of generating the downsampled residual block comprises: generating a residual block based on the first block and the reference block, the residual block having the high spatial resolution; and downsampling the residual block to obtain the downsampled residual block.
12. The method of claim 11 .
14. 1. A video decoding device including a processing circuit, The processing circuitry decoding coded information for one or more blocks from a coded video bitstream, the coded information indicating whether a super-resolution coding mode is to be applied to the one or more blocks, and wherein the super-resolution coding mode is applied in response to the one or more blocks being downsampled by an encoder from a higher spatial resolution to a lower spatial resolution; generating a reconstructed block by upsampling information of a first block in the one or more blocks using the super-resolution coding mode based on the coded information indicating that the super-resolution coding mode has been applied to the one or more blocks, the first block having the low spatial resolution, the reconstructed block having a high spatial resolution higher than the low spatial resolution, the one or more blocks including transform coefficients, and the reconstructed block including sample values in a spatial domain; If the one or more blocks are coding blocks (CBs), signaling a transform skip, the transform skip signal indicating whether super-resolution coding is skipped when the super-resolution coding mode is applied to all of the plurality of transform blocks (TBs) included in the CB; skipping the transform skip signaling when the super-resolution coding mode is applied to one or more TBs among the plurality of TBs and the one or more TBs among the remaining TBs, and the super-resolution coding mode is disabled for the remaining TBs; Steps to perform A video decoding device comprising:
15. the one or more blocks are coding blocks (CBs), coding units (CUs), predictive blocks (PBs), or transform blocks (TBs); the coded information indicating whether the super-resolution coding mode is applied to each of the one or more blocks.
15. The device of claim 14.
16. The coded information indicates whether the super-resolution coding mode applies to a coding unit (CU), a coding block (CB), a superblock, a predictive block (PB), a transform block (TB), a tile, a coded segment, a frame, or a sequence including the one or more blocks.
15. The device of claim 14.
17. The processing circuitry inverse transforming the first block into a downsampled residual block having the lower spatial resolution.
15. The device of claim 14.
18. The processing circuitry obtaining a downsampled reference block by downsampling a reference block for the first block, the reference block and the downsampled reference block having the high spatial resolution and the low spatial resolution, respectively; generating a downsampled reconstructed block based on the downsampled residual block and the downsampled reference block, the downsampled reconstructed block having the low spatial resolution; and upsampling the downsampled reconstructed block to generate the reconstructed block.
18. The device of claim 17.
19. The processing circuitry obtaining a residual block by upsampling the downsampled residual block, the residual block having the high spatial resolution; generating the reconstructed block based on the obtained residual block and a reference block for the first block, the reference block having the high spatial resolution.
18. The device of claim 17.
20. the one or more blocks are a subset of blocks in a current image to be reconstructed, and the super-resolution coding mode is not applied to blocks in the current image that are different from the one or more blocks.
15. The device of claim 14.
Citation Information
Patent Citations
Video decoding using block-based mixed-resolution data pruning
JP2013541276A
Image processing method, device, and system
JP2020528246A