Method and apparatus for video encoding
The video decoding apparatus addresses the challenge of reducing redundancy in video signals by selectively applying secondary transforms based on encoding information, thereby optimizing bit-rate and storage efficiency.
Patent Information
- Application Number
- JP2024008823
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-04-02
- Filing Date
- 2024-01-24
- Publication Date
- 2025-05-27
- Estimated Expiration
- 2040-04-03
AI Technical Summary
Existing video coding technologies face challenges in efficiently reducing redundancy in video signals, particularly in managing the bit-rate requirements and storage needs of high-resolution video.
The proposed solution involves an apparatus for video decoding that determines whether to perform a secondary transform on a coded block based on signaling in the encoding information, using thresholds for the horizontal and vertical components of the last position of non-zero transform coefficients.
This approach allows for efficient reconstruction of coded blocks, optimizing bit-stream representation and reducing storage requirements by selectively applying secondary transforms.
Smart Images

Figure 0007684451000015 
Figure 0007684451000016 
Figure 0007684451000017
Abstract
Description
Technical Field
[0001] Cross - Reference to Related Applications This application claims the benefit of priority to U.S. Provisional Application No. 62 / 829,435, filed Apr. 4, 2019, entitled “Modifications on the Secondary Transform,” and to U.S. Patent Application No. 16 / 838,755, filed Apr. 2, 2020, entitled “Method and Apparatus for Video Coding.” The entire disclosure of the prior applications is incorporated herein by reference in its entirety.
[0002] This disclosure describes embodiments generally related to video coding.
Background Art
[0003] The description of the background art provided herein is for the purpose of generally presenting the context of the disclosure. The inventors' research, to the extent it is described in this background art section, and aspects of the description that may not be regarded as prior art at the time of filing, are not admitted as prior art to this disclosure, either expressly or by implication.
[0004] Video encoding and decoding can be performed using inter - picture prediction with motion compensation. Uncompressed digital video can include a series of images, each image having spatial dimensions, for example, of luminance samples of 1920×1080 and associated chrominance samples. A series of images can have a fixed or variable image rate, for example, 60 images per second or 60 Hz (informally also called the frame rate). Uncompressed video has significant bit - rate requirements. For example, 1080p60 4:2:0 video with 8 bits per sample (1920×1080 luminance sample resolution at a frame rate of 60 Hz) requires a bandwidth close to 1.5 Gbit / s. To use such video for one hour, a storage area of more than 600 GB is required.
[0005] One purpose of video encoding and decoding can be to reduce the redundancy of the input video signal by compression. Compression can help reduce the aforementioned bandwidth or memory requirements, in some cases by more than two orders of magnitude. Both reversible compression and irreversible compression, and combinations thereof, can be used. Reversible compression refers to a technique where an exact replica of the original signal can be reconstructed from the compressed original signal. When using irreversible compression, the reconstructed signal may not be identical to the original signal, but the distortion between the original signal and the reconstructed signal is small enough that the reconstructed signal is useful for the intended application. In the case of video, irreversible compression is widely adopted. The amount of distortion tolerated varies by application. For example, users of certain consumer streaming applications may tolerate higher distortion than users of television distribution applications. The achievable compression ratio can reflect that higher compression ratios are obtained with higher tolerance / tolerable distortion.
[0006] Video encoders and decoders can utilize several broad categories of techniques, such as motion compensation, transformation, quantization, entropy encoding, and the like.
[0007] Video encoding techniques can include techniques known as intra encoding. In intra encoding, sample values are represented without reference to samples or other data from previously reconstructed reference images. In some video encodings, an image is spatially subdivided into blocks of samples. If all blocks of samples are encoded in an intra mode, the image can be an intra image. These derivatives, such as intra images and independent decoder refresh images, can be used to reset the decoder state and thus can be used as the first image in an encoded video bitstream and video session or as a still image. Samples of an intra block may be subject to a transform, and the transform coefficients may be quantized prior to entropy encoding. Intra prediction can be a technique that minimizes sample values in a pre-transform region. In some cases, the smaller the post-transform DC value and the smaller the AC coefficients, the fewer bits are required with a given quantization step size to represent the block after entropy encoding.
[0008] Conventional intra encoding, such as known from MPEG-2 production encoding techniques, does not use intra prediction. However, some newer video compression techniques include techniques that attempt, for example, from surrounding sample data and / or metadata obtained during the encoding / decoding of blocks of data that are spatially adjacent and precede in decoding order. Such techniques are hereinafter referred to as "intra prediction" techniques. Note that in at least some cases, intra prediction uses only reference data from the current image being reconstructed and does not use reference data from reference images.
[0009] Intra prediction can have many different forms. If two or more of such techniques can be used in a given video coding technology, the technique in use can be encoded in an intra prediction mode. In some cases, the mode can have sub - modes and / or parameters, which can be encoded individually or can be included in the mode codeword. Which codeword to use for a given combination of mode / sub - mode / parameters can affect the gain in coding efficiency via intra prediction, and thus can also affect the entropy coding technology used to convert the codeword into the bitstream.
[0010] A particular mode of intra prediction was introduced in H.264, improved in H.265, and further improved in new coding technologies such as the Joint Exploration Model (JEM), Versatile Video Coding (VVC), and Benchmark Set (BMS). The predictor block can be formed using adjacent sample values belonging to already available samples. The sample values of the adjacent samples are copied to the predictor block according to the direction. The reference to the direction in use can be encoded within the bitstream or can itself be predicted.
[0011] Referring to FIG. 1A, shown at the lower right is a subset of 9 predictor directions known from 33 possible predictor directions of H.265 (corresponding to 33 of the 35 intra - modes). The point (101) where the arrows converge represents the sample to be predicted. The arrows represent the direction in which the sample is predicted. For example, arrow (102) indicates that sample (101) is predicted from the upper - right sample at an angle of 45 degrees from the horizontal. Similarly, arrow (103) indicates that sample (101) is predicted from the sample at the lower - left of sample (101) at an angle of 22.5 degrees from the horizontal.
[0012] Referring further to FIG. 1A, in the upper left, a square block (104) of 4×4 samples (shown in bold dashed lines) is shown. The square block (104) includes 16 samples each labeled with an "S", its position in the Y dimension (e.g., row index), and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample from the top in the Y dimension and the first sample from the left in the X dimension. Similarly, sample S44 is the fourth sample in both the Y and X dimensions in block (104). Since the block size is 4×4 samples, S44 is in the lower right. Further reference samples following a similar numbering scheme are shown. The reference samples are labeled with an R, its Y position (e.g., row index), and X position (column index) with respect to block (104). In both H.264 and H.265, the predicted samples are adjacent to the block being reconstructed. Thus, there is no need to use negative values.
[0013] Intra picture prediction can function by copying the reference sample values from adjacent samples so as to be appropriately made according to the signaled prediction direction. For example, assume that the encoded video bitstream includes signaling indicating a prediction direction that coincides with arrow (102) for this block, i.e., samples are predicted from the upper right prediction sample(s) at an angle of 45 degrees from horizontal. In that case, samples S41, S32, S23, S14 are predicted from the same reference sample R05. And sample S44 is predicted from reference sample R08.
[0014] In certain cases, particularly when the direction is not evenly divisible by 45 degrees, the values of multiple reference samples can be combined, for example by interpolation, to calculate a reference sample.
[0015] The number of possible directions has been increasing as video coding technology develops. In H.264 (2003), nine different directions could be represented. This increased to 33 in H.265 (2013), and JEM / VVC / BMS can support up to 65 directions as of the time of this disclosure. Experiments have been conducted to identify the most likely directions, and certain techniques in entropy coding are used to represent those likely directions with fewer bits, accepting a certain penalty for the less likely directions. Further, the direction itself may be predicted from adjacent directions used in adjacent already decoded blocks.
[0016] FIG. 1B shows a schematic diagram (180) by JEM showing 65 intra prediction directions to illustrate the number of prediction directions increasing over time.
[0017] The mapping of intra prediction direction bits within the encoded video bitstream representing the direction can vary between video coding technologies and can range from a simple direct mapping of the prediction direction to complex adaptive schemes including intra prediction modes, codewords, most likely modes, and the like. However, in all cases, there may be certain directions in the video content that are statistically less likely to occur than certain other directions. Since the goal of video compression is redundancy reduction, in a well-functioning video coding technology, those less likely directions are represented with more bits than the more likely directions.
[0018] Video encoding and decoding can be performed using inter-picture prediction with motion compensation. Motion compensation can be an irreversible compression technique, and a block of sample data from a previously reconstructed image or a part thereof (reference image) is spatially shifted in the direction indicated by a motion vector (hereinafter, MV) and then used for prediction of a newly reconstructed image or image part. In some cases, the reference image can be the same as the image currently being reconstructed. The MV can have two dimensions X and Y, or three dimensions, where the third dimension is the display of the reference image in use (the latter can be indirectly considered as 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 region of sample data that is spatially adjacent to the region being reconstructed and that precedes that MV in decoding order. By doing so, the amount of data required for encoding the MV can be substantially reduced, thereby eliminating redundancy and increasing compression. MV prediction can function effectively because, for example, when encoding an input video signal derived from a camera (known as natural video), there is a statistical likelihood that regions larger than the region to which a single MV is applicable move in a similar direction, and thus, in some cases, a similar motion vector derived from the MVs of adjacent regions can be used for prediction. As a result, the MV found for a given region becomes similar or identical to the MV predicted from the surrounding MVs and can be represented with fewer bits than when directly encoding the MV after entropy encoding. In some cases, MV prediction can be an example of reversible compression of a signal (i.e., an MV) derived from the original signal (i.e., the sample stream). In other cases, MV prediction itself can be irreversible, for example, due to rounding errors when calculating a predictor from several surrounding MVs.
[0020] H.265 / HEVC (ITU-T Rec. H.265, "High Efficiency Video Coding", December 2016) describes various MV prediction mechanisms. Here, among the many MV prediction mechanisms provided by H.265, a technique called "spatial merge" will be described.
[0021] Referring to FIG. 2, the current block (201) contains samples found by the encoder during motion search so that it can be predicted from a previous block of the same size that has been spatially shifted. Instead of directly encoding the MV, the MV can be derived from metadata associated with one or more reference images using an MV associated with any one of five surrounding samples indicated by A0, A1, and B0, B1, B2 (202 to 206 respectively), for example (in decoding order) from the latest reference image. In H.265, MV prediction can use predictors from the same reference images that adjacent blocks are using. 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, an apparatus for video decoding includes a processing circuit. The processing circuit can decode encoding information of a coded unit (CU) from a coded video bitstream. The encoding information can indicate a last position of non-zero transform coefficients of a first coded block (CB) of the CU. Based on the last position, the processing circuit can determine whether a secondary transform index is signaled in the encoding information. Based on whether it is determined that the secondary transform index is signaled in the encoding information, the processing circuit can determine whether to perform a secondary transform on a second CB. In response to determining that the secondary transform is to be performed, the processing circuit can perform the secondary transform on the second CB and reconstruct the second CB. In response to determining that the secondary transform is not to be performed, the processing circuit can reconstruct the second CB without performing the secondary transform on the second CB.
[0023] In one embodiment, the processing circuit can determine whether a horizontal component of the last position is less than a first threshold and whether a vertical component of the last position is less than a second threshold. In response to determining that the horizontal component is less than the first threshold and the vertical component is less than the second threshold, the processing circuit can determine that the secondary transform index is not signaled in the encoding information.
[0024] In one embodiment, the processing circuit can determine whether a sum of the horizontal component and the vertical component of the last position is less than a threshold. In response to determining that the sum is less than the threshold, the processing circuit can determine that the secondary transform index is not signaled in the encoding information.
[0025] In one embodiment, the processing circuit can determine whether the minimum component of (i) the horizontal component and (ii) the vertical component at the last position is less than a threshold value. In response to determining that the minimum component is less than the threshold value, the processing circuit can determine that the secondary transform index is not signaled in the encoded information.
[0026] In one embodiment, the processing circuit can determine whether the maximum component of (i) the horizontal component and (ii) the vertical component at the last position is less than a threshold value. In response to determining that the maximum component is less than the threshold value, the processing circuit can determine that the secondary transform index is not signaled in the encoded information.
[0027] In one embodiment, the first CB is a luminance block. The last position is the last luminance position of the luminance block. The processing circuit can determine whether the secondary transform index is signaled based on the last luminance position.
[0028] In one embodiment, the first CB is a luminance block. The last position is the last luminance position of the luminance block. The CU further includes a chrominance block. The encoded information further indicates the last chrominance position of the non-zero transform coefficients of the chrominance block. The processing circuit can determine whether the secondary transform index is signaled based on the last luminance position and the last chrominance position.
[0029] In some examples, an apparatus for video decoding includes a processing circuit. The processing circuit can decode the encoded information of an encoded unit (CU) from an encoded video bitstream. The encoded information can indicate the size of the CU. The processing circuit can determine whether secondary transform is permitted based on the size of the CU and a CU size threshold. When the size of the CU is less than or equal to the CU size threshold, it is determined that secondary transform is permitted. When the size of the CU is greater than the CU size threshold, it is determined that secondary transform is not permitted.
[0030] In one embodiment, the CU size threshold is the maximum size of the transform units within the CU.
[0031] In one embodiment, when the size of the CU is less than or equal to the CU size threshold, the processing circuit can determine the number of non-zero transform coefficients of at least one CB within the CU, and the size of each of the at least one CB is greater than or equal to a first threshold. In response to the number of non-zero transform coefficients being less than a second threshold, the processing circuit can determine that a secondary transform index is not signaled in the encoding information. In one example, the encoding information indicates that the color format of the CU is YUV 4:2:0. The CU includes a luminance block and two chrominance blocks. The processing circuit can determine whether a first dimension of the luminance block is 4 and whether a second dimension of the luminance block is N, where N is 4 or greater. In response to determining that the first and second dimensions are 4 and N, respectively, the processing circuit can determine the number of non-zero transform coefficients from only the luminance blocks where at least one CB is a luminance block.
[0032] In one embodiment, the encoding information indicates that the color format of the CU is YUV 4:2:2. The CU includes a luminance block and two chrominance blocks. The processing circuit can determine whether the size of the luminance block is 4×N, where N is 4 or greater. In response to determining that the size of the luminance block is 4×N (where N and 4 are the height and width of the luminance block, respectively), the processing circuit can determine the number of non-zero transform coefficients from only the luminance block. At least one CB is a luminance block.
[0033] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer for video decoding, cause the computer to execute any of the methods for video decoding.
[0034] Further features, properties, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings.
Brief Description of the Drawings
[0035]
Figure 1A
Figure 1B
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10A
Figure 10B
Figure 10C
Figure 11A
Figure 11B
Figure 12A
Figure 12B
Figure 12C
Figure 12D
Figure 12E
Figure 13
Figure 14
Figure 15A
Figure 15B
Figure 15C
Figure 15D
Figure 16A
Figure 16B
Figure 17
Figure 18
Figure 19
Figure 20
Figure 21A
Figure 21B
Figure 21C
Figure 21D
Figure 22
Figure 23
Figure 24
Best Mode for Carrying Out the Invention
[0036] FIG. 3 shows a simplified block diagram of a communication system (300) according to an embodiment of the present disclosure. The communication system (300) includes a plurality of terminal devices that can communicate with each other via, for example, a network (350). For example, the communication system (300) includes a first pair (310) and (320) of terminal devices interconnected via a network (350). In the example of FIG. 3, the first pair (310) and (320) of terminal devices perform one-way transmission of data. For example, the terminal device (310) can encode video data (e.g., a stream of video images 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 encoded video bitstreams. The terminal device (320) can receive the encoded video data from the network (350), decode the encoded video data to restore the video image, and display the video image according to the restored video data. One-way data transmission can be common in media serving applications and the like.
[0037] In another example, the communication system (300) includes a second pair of terminal devices (330) and (340) that perform bidirectional transmission of encoded video data that may occur, for example, during a video conference. For bidirectional transmission of data, in one example, each of the terminal devices (330) and (340) can encode video data (e.g., a stream of video images captured by the terminal device) for transmission to the other terminal device of the terminal devices (330) and (340) via the network (350). Each of the terminal devices (330) and (340) can also receive the encoded video data transmitted by the other terminal device of the terminal devices (330) and (340), can decode the encoded video data to restore the video image, and can display the video image on a display device accessible according to the restored video data.
[0038] In the example of FIG. 3, the terminal devices (310), (320), (330), and (340) can be shown as a server, a personal computer, and a smartphone, but the principles of the present disclosure are not so limited. Embodiments of the present disclosure find use in laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. The network (350) represents any number of networks that transmit encoded video data between the terminal devices (310), (320), (330), and (340), including, for example, wired (wired) and / or wireless communication networks. The communication network (350) can exchange data over circuit-switched channels and / or packet-switched channels. Representative networks include communication networks, local area networks, wide area networks, and / or the Internet. For the purposes of this discussion, the architecture and topology of the network (350) may not be important for the operation of the present disclosure, unless otherwise described herein below.
[0039] FIG. 4 shows an arrangement of a video encoder and a video decoder in a streaming environment as an example of an application for the disclosed subject matter. The disclosed subject matter may be equally applicable to other video-related applications including, for example, storage of compressed video to digital media including video conferencing, digital TV, CD, DVD, memory stick, etc.
[0040] A streaming system may include a capture subsystem (413) that can include a video source (401), such as a digital camera, for example, that creates, for example, an uncompressed video sample stream (402). In one example, the stream of video images (402) includes samples taken by a digital camera. The stream of video images (402), shown as a thick line to emphasize the high data volume compared to the encoded video data (404) (or encoded video bitstream), can be processed by an electronic device (420) that includes a video encoder (403) coupled to the video source (401). The video encoder (403) can include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as will be described in more detail below. The encoded video data (404) (or encoded video bitstream (404)), shown as a thin line to emphasize the low data volume compared to the video image stream (402), can be stored in a streaming server (405) for future use. One or more streaming client subsystems, such as the client subsystems (406) and (408) in FIG. 4, can access the streaming server (405) to obtain copies (407) and (409) of the encoded video data (404). The client subsystem (406) can include, for example, a video decoder (410) within an electronic device (430). The video decoder (410) decodes an input copy (407) of the encoded video data and creates an output stream (411) of video images that can be rendered 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., video bitstreams) can be encoded according to a particular video encoding / compression standard. Examples of these standards include ITU-T Recommendation H.265. In one example, a video encoding standard under development is informally known as Versatile Video Coding (VVC). The disclosed subject matter can be used in the context of VVC.
[0041] Note that the electronic devices (420) and (430) can include other components (not shown). For example, the electronic device (420) can include a video decoder (not shown), and the electronic device (430) can also include a video encoder (not shown).
[0042] FIG. 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., a receiving circuit). The video decoder (510) can be used instead of the video decoder (410) in the example of FIG. 4.
[0043] The receiver (531) can receive one or more encoded video sequences decoded by the video decoder (510), and in the same or different embodiments, can receive one encoded video sequence at a time, and the decoding of each encoded video sequence is independent of other encoded video sequences. The encoded video sequence can be received from a channel (501) that can be a hardware / software link to a storage device storing the encoded video data. The receiver (531) can receive the encoded video data together with other data, such as encoded audio data and / or auxiliary data streams, that can be transferred to respective using entities (not shown). The receiver (531) can separate the encoded video sequence from other data. To counter network jitter, a buffer memory (515) can be coupled between the receiver (531) and the entropy decoder / parser (520) (hereinafter, "parser (520)"). For certain applications, the buffer memory (515) is part of the video decoder (510). In other cases, it may be external to the video decoder (510) (not shown). In still other cases, for example, there is a buffer memory (not shown) external to the video decoder (510) to counter network jitter, and further, for example, there can be another buffer memory (515) inside the video decoder (510) to handle playback timing. If the receiver (531) is receiving data from a store-and-forward device with sufficient bandwidth and controllability, or from a synchronous network, the buffer memory (515) may not be necessary or may be small. For use in a best-effort packet network such as the Internet, a buffer memory (515) may be required, may be relatively large, advantageously may be of an adaptable size, and may be at least partially implemented in an operating system or similar element (not shown) external to the video decoder (510).
[0044] The video decoder (510) may include a parser (520) for reconstructing symbols (521) from the encoded video sequence. The categories of these symbols include information used to manage the operation of the video decoder (510) and, potentially, information for controlling a rendering device (512) (e.g., a display screen) that is not an essential part of the electronic device (530) but can be coupled to the electronic device (530), as shown in FIG. 5. The control information for the rendering device may be in the form of supplementary enhancement information (SEI message) or a video user utility information (VUI) parameter set fragment (not shown). The parser (520) can parse / entropy decode the received encoded video sequence. The encoding of the encoded video sequence can follow a video encoding technique or video encoding standard and can follow various principles including variable length encoding, Huffman encoding, arithmetic encoding with or without context dependence, etc. The parser (520) can extract a set of at least one subgroup parameter of at least one subgroup of pixels in the video decoder based on at least one parameter corresponding to a group from the encoded video sequence. The subgroups can include groups of pictures (GOP), pictures, tiles, slices, macroblocks, coding units (CU), blocks, transform units (TU), prediction units (PU), etc. The parser (520) can also extract from the encoded video sequence information such as transform coefficients, quantization parameter values, motion vectors, etc.
[0045] The parser (520) can perform an entropy decode / parse operation on the video sequence received from the buffer memory (515) to create the symbols (521).
[0046] The reconstruction of symbol (521) may include a plurality of different units depending on the type of the encoded video image or a part thereof (such as an inter-picture and an intra-picture, an inter-block and an intra-block), and other factors. The units included and the method thereof may be controlled by subgroup control information parsed from the encoded video sequence by the parser (520). Such a flow of subgroup control information between the parser (520) and the following plurality of units is not shown for clarity.
[0047] In addition to the function blocks already described, the video decoder (510) can conceptually be subdivided into several functional units as described below. In an actual implementation operating under commercial constraints, many of these units interact closely with each other and can be at least partially integrated with each other. However, for the purpose of explaining the disclosed subject matter, a conceptual subdivision into the following functional units is appropriate.
[0048] The first unit is the scaler / inverse transform unit (551). The scaler / inverse transform unit (551) receives the quantized transform coefficients as symbols (521) from the parser (520), as well as control information including the transform to be used, block size, quantization coefficients, quantization scaling matrix, etc. The scaler / inverse transform unit (551) may output a block comprising sample values that can be input to the aggregator (555).
[0049] In some cases, the output samples of the scaler / inverse transform (551) may relate 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 part of the current image. Such prediction information may be provided by the intra-image prediction unit (552). In some cases, the intra-image prediction unit (552) uses surrounding already reconstructed information fetched from the current (partially reconstructed) image buffer (558) to generate a block of the same size and shape as the block being reconstructed. The current image buffer (558) buffers, for example, the partially reconstructed current image and / or the fully reconstructed current image. The aggregator (555) may, in some cases, add, for each sample, the prediction information generated by the intra-prediction unit (552) to the output sample information provided by the scaler / inverse transform unit (551).
[0050] In other cases, the output samples of the scaler / inverse transform unit (551) may relate to inter-coded, potentially motion-compensated blocks. In such cases, the motion-compensation prediction unit (553) can access the reference image memory (557) to fetch samples for prediction. After motion-compensating the fetched samples according to the symbols (521) related to the block, these samples can be added by the aggregator (555) to the output of the scaler / inverse transform unit (551) to generate output sample information (in this case, called residual samples or a residual signal). The address in the reference image memory (557) from which the motion-compensation prediction unit (553) fetches the prediction samples can be controlled, for example, by the motion vectors available to the motion-compensation prediction unit (553) in the form of symbols (521) having X, Y, and reference image components. Motion compensation may also include interpolation of sample values fetched from the reference image memory (557) when an exact motion vector of sub-samples is used, a motion vector prediction mechanism, etc.
[0051] The output samples of the aggregator (555) can be subject to various loop filtering techniques in the loop filter unit (556). Video compression techniques can include in-loop filter techniques that are controlled by parameters included in an encoded video sequence (also referred to as an encoded video bitstream) and are available in the loop filter unit (556) as symbols (521) from the parser (520), but can also respond to meta information obtained during the decoding of previous (in decoding order) portions of the encoded image or encoded video sequence, or to previously reconstructed and loop-filtered sample values.
[0052] The output of the loop filter unit (556) can be not only output to the rendering device (512), but can also be a sample stream that can be stored in the reference image memory (557) for use in future inter-picture prediction.
[0053] Once a particular encoded image is fully reconstructed, it can be used as a reference image for future prediction. For example, when the encoded image corresponding to the current image is fully reconstructed and the encoded image is identified (e.g., by the parser (520)) as a reference image, the current image buffer (558) can become part of the reference image memory (557), and a fresh current image buffer can be reallocated before starting the reconstruction of the next encoded image.
[0054] The video decoder (510) can perform a decoding operation according to a predetermined video compression technique in a standard such as ITU-T Rec.H.265. The encoded video sequence may comply with the syntax specified by the video compression technique or standard being used, in the sense that the encoded video sequence complies with both the syntax of the video compression technique or standard and the profile documented in the video compression technique or standard. Specifically, the profile can select specific tools from all the tools available in the video compression technique or standard as the only tools available under that profile. Also, it is necessary for compliance that the complexity of the encoded video sequence is within the range defined at the level of the video compression technique or standard. In some cases, the level may limit the maximum image size, maximum frame rate, maximum reconstructed sample rate (e.g., measured in megasamples per second), maximum reference image size, etc. The limitations set by the level may, in some cases, be further restricted by the specifications of the Hypothetical Reference Decoder (HRD) and the metadata of the HRD buffer management signaled in the encoded video sequence.
[0055] In one embodiment, the receiver (531) can receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence. The additional data may be used by the video decoder (510) to properly decode the data and / or more accurately reconstruct the original video data. The additional data can be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0056] FIG. 6 shows a functional block diagram of a video encoder (603) according to an 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 transmission circuit). The video encoder (603) can be used instead of the video encoder (403) in the example of FIG. 4.
[0057] 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 can capture the video images to be encoded by the video encoder (603). In another example, the video source (601) is part of the electronic device (620).
[0058] The video source (601) can provide the source video sequence to be encoded by the video encoder (603) in the form of a digital video sample stream that can be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, etc.), any color space (e.g., BT.601 Y CrCB, RGB, etc.) and a suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving 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 a plurality of individual images that give motion when viewed in sequence. The images themselves can be organized as a spatial array of pixels, and 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. In the following description, the samples will be mainly described.
[0059] According to one embodiment, the encoder (603) may encode the images of the source video sequence in real time or under any other time constraint as required by the application and compress them into an encoded video sequence (643). Enforcing an appropriate encoding speed is one function of the controller (650). In some embodiments, the controller (650) controls other functional units and is functionally coupled to other functional units as described below. For clarity, the couplings are not depicted. Parameters set by the controller (650) may include rate control related parameters (such as picture skip, quantization, lambda value of the rate distortion optimization method, etc.), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (650) can be configured to have other appropriate functions regarding the video encoder (603) optimized for a specific system design.
[0060] In some embodiments, the video coder (603) is configured to operate in an encoding loop. As an overly simplified explanation, in one example, the encoding loop can include a source coder (630) (e.g., responsible for generating symbols such as a symbol stream based on an input image to be encoded and a reference image), and a (local) decoder (633) incorporated in the video coder (603). The decoder (633) reconstructs symbols to create sample data in the same way as a (remote) decoder would also create. (In the video compression techniques contemplated by the disclosed subject matter, any compression between symbols and the encoded video bitstream is reversible.) The reconstructed sample stream (sample data) is input into the reference image memory (634). Since the decoding of the symbol stream yields bit-exact results regardless of the location of the decoder (local or remote), the content in the reference image memory (634) is also bit-exact between the local coder and the remote coder. In other words, the prediction part of the coder "sees" the same sample values as samples of the reference image that the decoder would "refer to" when using prediction during decoding. This basic principle of reference image synchronization (and the drift that occurs if synchronization cannot be maintained, e.g., due to channel errors) is also used in some related arts.
[0061] The operation of the "local" decoder (633) can be the same as that of a "remote" decoder such as the video decoder (510), which has already been described in detail above in relation to FIG. 5. However, referring briefly to FIG. 5 as well, since symbols are available and the encoding / decoding of symbols into the encoded video sequence by the entropy coder (645) and the parser (520) can be lossless, the entropy decoding part of the video decoder (510) including the buffer memory (515) and the parser (520) may not be fully implemented in the local decoder (633).
[0062] An observation that can be made at this point is that decoder technologies other than syntax analysis / entropy decoding present in the decoder must necessarily exist in a substantially identical functional form in the corresponding encoder. For this reason, the disclosed subject matter focuses on the operation of the decoder. Since the description of the encoder technology is the reverse of the decoder technology described comprehensively, it can be omitted. More detailed description is necessary only in certain areas and is provided below.
[0063] In some examples, during operation, the source encoder (630) may perform motion-compensated predictive encoding that predictively encodes an input image by referring to one or more previously encoded images from a video sequence designated as a "reference image". In this way, the encoding engine (632) encodes the difference between a pixel block of the input image and a pixel block of a reference image that can be selected as a predictive reference to the input image.
[0064] The local video decoder (633) may decode the encoded video data of an image that can be designated as a reference image based on the symbols created by the source encoder (630). The operation of the encoding engine (632) may advantageously be an irreversible process. When the encoded video data can be decoded by a video decoder (not shown in FIG. 6), the reconstructed video sequence may typically be a replica of the source video sequence with some errors. The local video decoder (633) can replicate the decoding process that can be performed by the video decoder for the reference image and store the reconstructed reference image in the reference image cache (634). In this way, the video encoder (603) can locally store a replica of the reconstructed reference image having common content as the reconstructed reference image obtained by the remote video decoder (without transmission errors).
[0065] Predictor (635) can perform a predictive search of the encoding engine (632). That is, for a new image to be encoded, predictor (635) can search reference image memory (634) for specific metadata that functions as an appropriate prediction reference for the new image, such as sample data (as candidate reference pixel blocks) or motion vectors and block shapes of reference images. Predictor (635) can operate on a per sample block - pixel block basis to find an appropriate prediction reference. In some cases, the input image can have a prediction reference drawn from a plurality of reference images stored in reference image memory (634) as determined by the search results obtained by predictor (635).
[0066] Controller (650) can manage the encoding operation of source encoder (630), including, for example, setting parameters and subgroup parameters used for encoding video data.
[0067] The outputs of all of the aforementioned functional units can undergo entropy encoding in entropy encoder (645). Entropy encoder (645) converts symbols generated by various functional units into an encoded video sequence by reversibly compressing the symbols according to techniques such as Huffman coding, variable - length coding, arithmetic coding, etc.
[0068] Transmitter (640) can buffer the encoded video sequence created by entropy encoder (645) and be provided for transmission via communication channel (660), which can be a hardware / software link to a storage device that stores the encoded video data. Transmitter (640) can merge the encoded video data from video encoder (603) with other data to be transmitted, such as encoded audio data and / or an auxiliary data stream (source not shown).
[0069] The controller (650) may manage the operation of the video encoder (603). During encoding, the controller (650) may assign a specific encoded image type to each encoded image, which may affect the encoding technique that can be applied to each image. For example, often, an image may be assigned as one of the following image types.
[0070] An intra picture (I picture) is one that can be encoded and decoded without using other pictures in the sequence as a source of prediction. In some video encodings, various types of intra pictures can be used, such as, for example, an Independent Decoder Refresh (「IDR」) picture. Those skilled in the art know those variations of I pictures and their respective uses and characteristics.
[0071] A predicted picture (P picture) can be encoded and decoded using intra prediction or inter prediction that uses at most one motion vector and a reference index to predict the sample values of each block.
[0072] A bi - directionally predicted picture (B picture) can be encoded and decoded using intra prediction or inter prediction that uses at most two motion vectors and reference indices to predict the sample values of each block. Similarly, multiple predicted pictures can use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0073] The source image is typically spatially subdivided into a plurality of sample blocks (e.g., blocks of 4×4, 8×8, 4×8, or 16×16 samples each) and can be encoded block by block. The blocks can be encoded predictively by referring to other (already encoded) blocks as determined by the encoding assignment applied to each image of the block. For example, blocks of an I image may be encoded non-predictively, or they may be encoded predictively by referring to already encoded blocks of the same image (spatial prediction or intra prediction). Pixel blocks of a P image can be encoded predictively via spatial prediction or via temporal prediction by referring to one previously encoded reference image. Blocks of a B image can be encoded predictively by referring to one or two previously encoded reference images via spatial prediction or via temporal prediction.
[0074] The video encoder (603) can perform an encoding operation according to a predetermined video encoding technique or standard such as ITU-T Rec.H.265. In that operation, the video encoder (603) can perform various compression operations including a predictive encoding operation that exploits the temporal and spatial redundancy of the input video sequence. Thus, the encoded video data may conform to the syntax specified by the video encoding technique or standard being used.
[0075] In one embodiment, the transmitter (640) can transmit additional data along with the encoded video. The source encoder (630) can include such data as part of the encoded video sequence. The additional data can include other forms of redundant data such as temporal / spatial / SNR enhancement layers, redundant pictures and slices, SEI messages, VUI parameter set fragments, and the like.
[0076] Videos may be captured over time as a plurality of source images (video images). Intra picture prediction (often abbreviated as intra prediction) utilizes the spatial correlation in a given picture, while inter picture prediction utilizes the (temporal or other) correlation between pictures. In one example, a particular picture being encoded / decoded, referred to as the current picture, is divided into blocks. When a block within the current picture is similar to a reference block within a reference picture that has been previously encoded and buffered within the video, the block within the current picture can be encoded by a vector called a motion vector. The motion vector points to the reference block within the reference picture and can have a third dimension identifying the reference picture when multiple reference pictures are being used.
[0077] In some embodiments, dual prediction techniques can be used for inter picture prediction. According to the dual prediction technique, two reference pictures such as a first reference picture and a second reference picture are used, both of which are prior to the decoding order of the current picture within the video (however, the display order may be past and future respectively). A block within the current picture can be encoded by a first motion vector pointing to a first reference block within the first reference picture and a second motion vector pointing to a second reference block within the second reference picture. The block can be predicted by a combination of the first reference block and the second reference block.
[0078] Furthermore, to improve the encoding efficiency, merge mode techniques can be used for inter picture prediction.
[0079] According to some embodiments of the present disclosure, predictions such as inter-image prediction and intra-image prediction are performed in units of blocks. For example, according to the HEVC standard, images in a sequence of video images are divided into coding tree units (CTUs) for compression, and the CTUs in an image have the same size such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. Generally, a CTU includes three coding tree blocks (CTBs) which are one luminance CTB and two chrominance CTBs. Each CTU can be recursively quad-tree divided into one or more coding units (CUs). For example, a 64×64 pixel CTU can be divided into one 64×64 pixel CU, or four 32×32 pixel CUs, or sixteen 16×16 pixel CUs. In one example, each CU is analyzed to determine the prediction type of the CU such as an inter-prediction type or an intra-prediction type. The CU is divided into one or more prediction units (PUs) according to the temporal and / or spatial predictability. Generally, each PU includes a luminance prediction block (PB) and two chrominance PBs. In one embodiment, the prediction operation in encoding (encoding / decoding) is performed in units of prediction blocks. Using a luminance prediction block as an example of a prediction block, the prediction block includes a matrix of pixel values (e.g., luminance values) such as 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels.
[0080] FIG. 7 shows a diagram of a video encoder (703) according to another embodiment of the present disclosure. The video encoder (703) receives a processing block (e.g., a prediction block) of sample values in a current video image in a sequence of video images, and is configured to encode the processing block into an encoded image that is part of an encoded video sequence. In one example, the video encoder (703) is used instead of the video encoder (403) in the example of FIG. 4.
[0081] In an example of HEVC, a video encoder (703) receives a matrix of sample values for a processing block, such as a prediction block of 8×8 samples. The video encoder (703) determines whether the processing block is best encoded using an intra mode, an inter mode, or a bi-prediction mode, for example, using rate-distortion optimization. If the processing block is encoded in the intra mode, the video encoder (703) may use intra prediction techniques to encode the processing block into the encoded image. When the processing block is to be encoded in the inter mode or the bi-prediction mode, the video encoder (703) can use inter prediction techniques or bi-prediction techniques, respectively, to encode the processing block into the encoded image. In certain video encoding techniques, the merge mode can be an inter-picture prediction sub-mode in which a motion vector is derived from one or more motion vector predictors without the benefit of the encoded motion vector components outside the predictor. In certain other video encoding techniques, there may be motion vector components applicable to the target block. In one example, the video encoder (703) includes other components such as a mode determination module (not shown) for determining the mode of the processing block.
[0082] In the example of FIG. 7, the video encoder (703) includes an inter-encoder (730), an intra-encoder (722), a residual calculator (723), a switch (726), a residual encoder (724), a general-purpose controller (721), and an entropy encoder (725) coupled to each other as shown in FIG. 7.
[0083] The inter-coder (730) is configured to receive samples of a current block (e.g., a processing block), compare the block with one or more reference blocks in a reference image (e.g., blocks in a previous image and a subsequent image), generate inter-prediction information (e.g., a description of redundant information by inter-coding techniques, motion vectors, merge mode information), and calculate an inter-prediction result (e.g., a predicted block) based on the inter-prediction information using any suitable technique. In some examples, the reference image is a decoded reference image decoded based on encoded video information.
[0084] The intra-coder (722) is configured to receive samples of a current block (e.g., a processing block), optionally compare the block with blocks already encoded in the same image, generate quantized coefficients after transformation, and optionally also generate intra-prediction information (e.g., intra-prediction direction information by one or more intra-coding techniques). In one example, the intra-coder (722) calculates an intra-prediction result (e.g., a predicted block) based on the intra-prediction information and a reference block in the same image.
[0085] The general-purpose controller (721) is configured to determine general-purpose control data and control other components of the video coder (703) based on the general-purpose control data. In one example, the general-purpose controller (721) determines the mode of a block and provides a control signal to a switch (726) based on the mode. For example, when the mode is the intra mode, the general-purpose controller (721) controls the switch (726) to select the intra-mode result used by the residual calculator (723), and controls the entropy coder (725) to select the intra-prediction information and include it in the bitstream. When the mode is the inter mode, the general-purpose controller (721) controls the switch (726) to select the inter-prediction result used by the residual calculator (723), and controls the entropy coder (725) to select the inter-prediction information and include it in the bitstream.
[0086] The residual calculator (723) calculates the difference (residual data) between the received block and the prediction result selected from the intra-coder (722) or the inter-coder (730). The residual coder (724) is configured to operate based on the residual data to encode the residual data in order to generate transform coefficients. In one example, the residual coder (724) is configured to convert the residual data from the spatial domain to the frequency domain and generate transform coefficients. The transform coefficients then undergo quantization processing to obtain quantized transform coefficients. In various embodiments, the video coder (703) also includes a residual decoder (728). The residual decoder (728) is configured to perform inverse transformation and generate decoded residual data. The decoded residual data can be suitably used in the intra-coder (722) and the inter-coder (730). For example, the inter-coder (730) can generate a decoded block based on the decoded residual data and inter-prediction information, and the intra-coder (722) can generate a decoded block based on the decoded residual data and intra-prediction information. In some examples, the decoded block is appropriately processed to generate a decoded image, and the decoded image can be buffered in a memory circuit (not shown) and used as a reference image.
[0087] The entropy coder (725) is configured to format the bitstream to include the encoded block. The entropy coder (725) is configured to include various information according to a suitable standard such as the HEVC standard. In one example, the entropy coder (725) is configured to include general control data, selected prediction information (e.g., intra-prediction information or inter-prediction information), residual information, and other suitable information in the bitstream. Note that according to the disclosed subject matter, there is no residual information when encoding a block in either the merge sub-mode of the inter-mode or the bi-prediction mode.
[0088] FIG. 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 an encoded image that is part of an encoded video sequence and decode the encoded image to generate a reconstructed image. In one example, the video decoder (810) is used in place of the video decoder (410) of the example of FIG. 4.
[0089] In the example of FIG. 8, the video decoder (810) includes an entropy decoder (871), an inter decoder (880), a residual decoder (873), a reconstruction module (874), and an intra decoder (872) coupled to each other as shown in FIG. 8.
[0090] The entropy decoder (871) may be configured to reconstruct from the encoded image specific symbols that represent the syntax elements that the encoded image is composed of. Such symbols can include, for example, the mode in which a block is encoded (e.g., intra mode, inter mode, bi-prediction mode, the latter two being merge sub-modes or another sub-mode), prediction information (e.g., intra prediction information, inter prediction information, etc.) that can identify specific samples or metadata used for prediction by the intra decoder (872) or the inter decoder (880) respectively, and residual information in the form of, for example, quantized transform coefficients. In one example, when the prediction mode is an inter prediction mode or a bi-prediction mode, the inter prediction information is provided to the inter decoder (880). When 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 is provided to the residual decoder (873).
[0091] The inter decoder (880) is configured to receive inter prediction information and generate an inter prediction result based on the inter prediction information.
[0092] The intra decoder (872) is configured to receive intra prediction information and generate a prediction result based on the intra prediction information.
[0093] The residual decoder (873) is configured to perform inverse quantization to extract the inverse quantized transform coefficients, and process the inverse quantized transform coefficients to convert the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require certain control information (since it includes quantization parameter (QP)), and that information may be provided by the entropy decoder (871) (the data paths not shown as such may be only for low volume control information).
[0094] The reconstruction module (874) is configured to combine, in the spatial domain, the residual as the output by the residual decoder (873) and the prediction result (optionally as the output by the inter or intra prediction module) to form a reconstruction block that may be part of the reconstructed image, and the reconstruction block may be part of the reconstructed video. Note that other appropriate operations such as a deblocking operation can be performed to improve the visual quality.
[0095] Note that the video encoders (403), (603), and (703), and the video decoders (410), (510), and (810) can be implemented using any suitable technology. In one embodiment, the video encoders (403), (603), and (703), and the video decoders (410), (510), and (810) can be implemented using one or more integrated circuits. In another embodiment, the video encoders (403), (603), and (603), and the video decoders (410), (510), and (810) can be implemented using one or more processors that execute software instructions.
[0096] Aspects of the present disclosure relate to modifications of the second - order transformation, such as the implementation of the inverse second - order transformation.
[0097] In some embodiments, such as HEVC, the primary transform may include 4-point, 8-point, 16-point, and 32-point discrete cosine transform (DCT) type 2 (DCT-2), and the transform core matrix may be represented using 8-bit integers (i.e., 8-bit transform core). The transform core matrix of the smaller DCT-2 is part of the transform core matrix of the larger DCT-2, as shown in Appendix I.
[0098] The DCT-2 core matrix exhibits symmetry / antisymmetry properties. Therefore, a "partial butterfly" implementation may be supported to reduce the number of arithmetic counts (e.g., multiplication, addition, subtraction, shift, etc.), and the same result of matrix multiplication can be obtained using the partial butterfly.
[0099] In some embodiments, such as VVC, in addition to the above 4-point, 8-point, 16-point, and 32-point DCT-2 transforms, additional 2-point and 64-point DCT-2s may also be included. An example of a 64-point DCT-2 core as used in VVC is shown in Appendix II as a 64×64 matrix.
[0100] In addition to DCT-2 and 4×4 DST-7 as used in HEVC, an adaptive multiple transform (AMT) (also known as extended multiple transform (EMT) or multiple transform selection (MTS)) scheme can be used in VVC for the residual coding of both inter-coded blocks and intra-coded blocks. The AMT scheme can use multiple selected transforms from the DCT / DST family other than the current transforms in HEVC. The newly introduced transform matrices are DST-7 and DCT-8. Table 1 shows examples of the basis functions of the selected DST / DCT for N-point input.
[0101]
Table 1
[0102] The primary transform matrix as used in VVC can be used in 8-bit representation. AMT applies the transform matrix to a CU whose both width and height are 32 or less. Whether AMT is applied or not may be controlled by a flag (e.g., mts_flag). When mts_flag is equal to 0, in some examples, only DCT-2 is applied to the coded residual data. When mts_flag is equal to 1, an index (e.g., mts_idx) can be further signaled using two bins to identify the horizontal and vertical transforms used according to Table 2. A type value of 1 means that DST-7 is used, and a type value of 2 means that DCT-8 is used. In Table 2, the specifications of trTypeHor and trTypeVer depend on mts_idx[x][y][cIdx].
[0103]
Table 2
[0104] In some embodiments, the implicit MTS can be applied when the above signaling-based MTS (i.e., explicit MTS) is not used. In the implicit MTS, the transform selection is made according to the block width and height instead of signaling. For example, in the implicit MTS, DST-7 is selected for the short side of the MxN block (i.e., the minimum of M and N), and DCT-2 is selected for the long side of the block (i.e., the maximum of M and N).
[0105] Appendix III shows exemplary transform cores of DST-7 and DCT-8, each of which is a matrix composed of basis vectors.
[0106] In some examples such as VVC, when both the height and width of the coding block are 64 or less, the TB size is the same as the coding block size. When either the height or width of the coding block is greater than 64, when performing transformation (inverse transformation, inverse primary transformation, etc.) or intra prediction, the coding block is further divided into a plurality of sub-blocks, and the width and height of each sub-block are 64 or less. One transformation can be executed for each sub-block.
[0107] The related syntax and semantics of MTS in some examples in VVC can be described below in FIGS. 9 and 10A to 10C (highlighted using gray). FIG. 9 is a diagram showing an example of the transform unit syntax. FIGS. 10A to 10C show an example of the residual coding syntax.
[0108] An example of the transform unit semantics is shown below. cu_mts_flag[x0][y0] equal to 1 specifies that a plurality of transform selections are applied to the residual samples of the luminance transform block. cu_mts_flag[x0][y0] equal to 0 specifies that a plurality of transform selections are not applied to the residual samples of the luminance transform block. The array indices x0, y0 specify the position (x0, y0) of the top-left luminance sample of the transform block under consideration with respect to the top-left luminance sample of the image. If cu_mts_flag[x0][y0] does not exist, it is assumed to be equal to 0.
[0109] An example of the residual coding semantics is shown below. mts_idx[x0][y0] specifies which transform kernel is applied to the luminance residual samples along the horizontal and vertical directions of the current transform block. The array indices x0, y0 specify the position (x0, y0) of the top-left luminance sample of the transform block under consideration with respect to the top-left luminance sample of the image. If mts_idx[x0][y0] does not exist, it is assumed to be equal to -1.
[0110] FIG. 11A shows an exemplary forward transform (also called a forward first transform) performed by an encoder. The forward transform can include a forward horizontal transform and a forward vertical transform. First, a forward horizontal transform is applied to a residual block (1110) having residual data to obtain an intermediate block. Subsequently, a forward vertical transform is applied to the intermediate block to obtain a coefficient block (1112) having transform coefficients.
[0111] FIG. 11B shows an exemplary inverse transform (also called an inverse first transform or an inverse transform) performed by a decoder. Generally speaking, the inverse transform coincides with the forward transform. The inverse first transform can include an inverse first horizontal transform (also called an inverse horizontal transform) and an inverse first vertical transform (also called an inverse vertical transform). To match the forward transform, in the inverse transform, the order of applying the inverse transforms in the horizontal and vertical directions is switched. Therefore, to obtain an intermediate block, an inverse vertical transform is first applied to the coefficient block (1122). Subsequently, an inverse horizontal transform is applied to the intermediate block to obtain a residual block (1120).
[0112] The first transform can refer to a forward first transform or an inverse first transform. The horizontal transform can refer to an inverse horizontal transform or a forward horizontal transform. Similarly, the vertical transform can refer to an inverse vertical transform or a forward vertical transform.
[0113] In an example such as VVC, in the decoder, as shown in FIGS. 12A to 12E with the text highlighted in gray, the inverse vertical first transform is first executed, and then the inverse horizontal first transform is executed second after the inverse vertical transform is applied. FIGS. 12A to 12E show, for example, an example of a transform process for scaled transform coefficients. The text highlighted in gray is shown in FIG. 12E.
[0114] In one embodiment, a mode-dependent non-separable second-order transform (NSST) can be used between forward core transform and quantization on the encoder side, and between inverse quantization and inverse core transform on the decoder side. For example, to maintain low complexity, NSST is applied to the low-frequency coefficients after the primary transform (or core transform). When both the width (W) and height (H) of the transform coefficient block are 8 or more, 8×8 NSST is applied to the upper-left 8×8 region of the transform coefficient block. Otherwise, when either the width W or height H of the transform coefficient block is 4, 4×4 NSST is applied, and 4×4 NSST is performed on the upper-left min(8, W)×min(8, H) region of the transform coefficient block. The above transform selection method is applied to both the luminance component and the chrominance component.
[0115] The matrix multiplication implementation of NSST is described as follows using a 4×4 input block as an example. The 4×4 input block X is given by Equation (1)
Equation
[0116] The input block X can be represented as the vector
Equation
Equation
Equation
Equation
Equation
[0117] In one example, a 35×3 inseparable secondary transform is available for both 4×4 and 8×8 block sizes, where 35 is the number of transform sets associated with the intra prediction mode and 3 is the number of NSST candidates for each intra prediction mode. Table 3 shows an exemplary mapping from the intra prediction mode to each transform set. The transform set applied to the luminance / chroma conversion coefficients is specified by the corresponding luminance / chroma intra prediction mode according to Table 3 showing the mapping from the intra prediction mode to the transform set index. For intra prediction modes greater than 34 corresponding to the diagonal prediction direction, the transform coefficient block is transposed before and after NSST in the encoder / decoder, respectively.
[0118] For each transform set, the selected NSST candidate can be further specified by the explicitly signaled CU-level NSST index. The CU-level NSST index is signaled in the bitstream for each intra-coded CU after the transform coefficients, and truncated binary binarization is used for the CU-level NSST index. For example, the truncation value is 2 in the planar mode or DC mode and 3 in the angular intra prediction mode. In one example, the CU-level NSST index is signaled only when there are multiple non-zero coefficients in the CU. The default value is 0, not signaled, indicating that NSST is not applied to the CU. Each of the values 1 to 3 indicates which NSST candidate from the transform set is applied.
[0119]
Table 3
[0120] In some embodiments, the NSST is not applied to blocks encoded in the transform skip mode. When the CU-level NSST index is signaled for a CU and is not equal to 0, the NSST is not used for blocks encoded in the transform skip mode within the CU. The CU-level NSST index is not signaled for a CU when all component blocks of the CU are encoded in the transform skip mode or when the number of non-zero coefficients of a non-transform skip mode CB is less than 2.
[0121] In some embodiments, a variation of the NSST, such as a reduced-size transform (RST), is used. The RST uses a transform zeroing method. In one example, in the RST, whether the intra prediction mode is planar or DC is checked to entropy-encode the transform index of the NSST.
[0122] In one example, four transform sets are applied, and each transform set includes three RST transform cores. The RST transform cores can have a size of 16×48 (or 16×64) (applied to a transform coefficient block where both the height and width are 8 or more) or 16×16 (applied to a transform coefficient block where either the height or the width is 4). For notation convenience, the 16×48 (or 16×64) transform is shown as RST 8×8, and the 16×16 transform is shown as RST 4×4.
[0123] FIG. 13 and FIG. 14 each show examples of two transform encoding processes (1300) and (1400) using a 16×64 transform (or a 64×16 transform depending on whether the transform is a forward secondary transform or an inverse secondary transform) and a 16×48 transform (or a 48×16 transform depending on whether the transform is a forward secondary transform or an inverse secondary transform). Referring to FIG. 13, in process (1300), on the encoder side, in order to obtain coefficient block (1313), first a primary transform (1310) can be performed across the residual block. Subsequently, a secondary transform (1312) can be applied to coefficient block (1313). In secondary transform (1312), the 64 coefficients of 4×4 sub-blocks A to D at the upper left corner of coefficient block (1313) can be represented by 64 length vectors, and the 64 length vectors can be multiplied by a 64x16 transform matrix (i.e., width 64, height 16), and according to Equation (2), 16 length vectors are obtained. The elements within the 16 length vectors are filled back into the upper left 4×4 sub-block A of the coefficient block (1313). The coefficients within sub-blocks B to D can be set to 0. The coefficients obtained after secondary transform (1312) are then quantized in step (1314) and entropy encoded to generate encoded bits in bit stream (1316).
[0124] The encoded bits are received on the decoder side, and after entropy decoding, they can be inverse quantized (1324) to generate coefficient block (1323). An inverse secondary transform (1322) such as an inverse RST 8×8 can be performed to obtain, for example, 64 coefficients from the 16 coefficients of the upper left 4×4 sub-block E. The 64 coefficients can be filled back into 4×4 sub-blocks E to H. Further, the coefficients within coefficient block (1323) after inverse secondary transform (1322) can be processed by an inverse primary transform (1320) to obtain the restored residual block.
[0125] The process (1400) of the example in FIG. 14 is similar to the process (1300), except that fewer coefficients (i.e., 48) are processed during the forward secondary transformation (1412). Specifically, the 48 coefficients within sub-blocks A to C are processed with a smaller transformation matrix of size 48×16. By using a smaller transformation matrix of 48×16, the memory size for storing the transformation matrix and the number of calculations (e.g., multiplications, additions, subtractions, etc.) can be reduced, and thus the computational complexity can be reduced.
[0126] The reduction transformation (RT) (also called RST) can map an N-dimensional vector to an R-dimensional vector in a different space, where R / N (R < N) is the reduction factor.
[0127] The RST (or RT) matrix is an R×N matrix as follows.
Equation
[0128] FIG. 15A shows the process of the reduction forward transformation (1501) and the process of the reduction inverse transformation (1502). T represents the RST transformation matrix having dimensions of RxN, and T T represents the transpose matrix of T, and T T has dimensions of NxR.
[0129] In RST 8×8, a reduction ratio of 4 (1 / 4 size) can be achieved. For example, instead of using a 64×64 non-separable transformation matrix size of the conventional 8×8, a 16×64 direct matrix can be used. The 64×16 inverse RST matrix can be used on the decoder side to generate core (primary) transformation coefficients in the upper left region of an 8×8. The forward RST 8×8 uses 16×64 (or 8×64 in the case of an 8×8 block) matrices such that the forward RST 8×8 generates non-zero coefficients only in the upper left 4×4 region within a given upper left region of an 8×8. In other words, when RST is applied, the region outside the upper left 4×4 region of the upper left region of an 8×8 has only 0 coefficients. In the case of RST 4×4, 16×16 (or 8×16 in the case of a 4×4 block) direct matrix multiplication can be applied.
[0130] In addition, in the case of RST 8×8, to further reduce the transformation matrix size, instead of using all of the upper left 8×8 coefficients (64 coefficients within the hatched sub-block of FIG. 15B) of the residual block (1510) as the input for calculating the secondary transformation, the upper left three 4×4 sub-block coefficients (48 coefficients within the hatched sub-block of FIG. 15C) of the residual block (1510) are used as the input for calculating the secondary transformation. Thus, a 16×64 transformation matrix is used in FIG. 15B and a 16×48 transformation matrix is used in FIG. 15C.
[0131] In one example, when the following two conditions are satisfied, the inverse RST is conditionally applied when the inverse RST is applied: (i) the block size (e.g., the width W and / or height H of the block) is greater than or equal to a threshold (e.g., W>=4 and H>=4), and (ii) the transformation skip mode flag is equal to 0. For example, when both the width (W) and height (H) of the transformation coefficient block are greater than 4, RST 8×8 is applied to the upper left 8×8 region of the transformation coefficient block. Otherwise, RST 4×4 is applied to the upper left min(8, W)×min(8, H) region of the transformation coefficient block.
[0132] In one example, when the RST index is equal to 0, RST is not applied. Otherwise, RST is applied and a kernel is selected using the RST index. In one example, RST is applied to both intra and inter slice intra CUs (e.g., CUs encoded in intra prediction or intra mode), as well as to both luminance and chrominance. When dual tree is enabled, the RST indices for luminance and chrominance are signaled separately. For inter slice (when dual tree is disabled), a single RST index is signaled and used for both luminance and chrominance. When the ISP mode is selected, RST is disabled and the RST index is not signaled.
[0133] In one example, an RST matrix can be selected from four transformation sets, each consisting of two transformations. Which transformation set to apply can be determined as follows based on the intra prediction mode. When one of three cross-component linear model (CCLM) modes is indicated, transformation set 0 can be selected. Otherwise, the transformation set selection can be performed according to the table (1550) shown in FIG. 15D. The index (e.g., IntraPredMode) for accessing the table (1550) can be in the range [-14, 80], for example, the transformed mode index used for wide-angle intra prediction. An example of an intra prediction mode is shown in FIG. 16B. In one example, the index for accessing the table (1550) can be in the range [-14, 83] or any suitable range.
[0134] FIG. 16A shows diagrams of exemplary intra prediction directions and intra prediction modes used in HEVC. There are a total of 35 intra prediction modes (modes 0 to 34) in HEVC. Modes 0 and 1 are non - directional modes, mode 0 is the planar mode (labeled Intra_Planar in FIG. 16A), and mode 1 is the DC mode (labeled Intra_DC in FIG. 16A). Modes 2 to 34 are directional modes, mode 10 is the horizontal mode, mode 26 is the vertical mode, and modes 2, 18, and 34 are diagonal modes. In some examples, the intra prediction mode is signaled by three most probable modes (MPM) and 32 remaining modes.
[0135] FIG. 16B shows diagrams of exemplary intra prediction directions and intra prediction modes in some examples (e.g., VVC). There are a total of 95 intra prediction modes (modes - 14 to 80), among which mode 18 is the horizontal mode, mode 50 is the vertical mode, and modes 2, 34, and 66 are diagonal modes. Modes - 1 to - 14 and modes 67 to 80 are called wide - angle intra prediction (WAIP) modes.
[0136] Multi-line intra prediction can use more reference lines for intra prediction. The reference lines can include multiple samples within an image. In one example, the reference lines can include row samples and column samples. In one example, the encoder can determine the reference lines used to generate the intra predictor and can send a signal. An index indicating the reference line (also referred to as a reference line index) can be signaled before the intra prediction mode. In one example, only MPM is allowed when a non-zero reference line index is signaled. FIG. 17 shows an example of four reference lines of an encoding block (1710). In the example shown in FIG. 17, the reference lines can include six segments, namely segments A to F. Reference line 3 can include the upper left reference sample. Segments A and F can be padded with the nearest samples from segments B and E, respectively. In some examples such as HEVC, only one reference line (e.g., reference line 0 adjacent to the encoding block (1710)) is used for intra prediction. In some examples such as VVC, multiple reference lines (e.g., reference lines 0, 1, and 3) are used for intra prediction.
[0137] An intra-subpartition (ISP) encoding mode can be used. In the ISP encoding mode, a luminance intra prediction block can be vertically or horizontally divided into two or four subpartitions according to the block size.
[0138] FIG. 18 shows Table 4 associating several sub - partitions with block sizes. For example, when the block size is 4×4, no partitioning is performed on the block in the ISP encoding mode. When the block size is 4×8 or 8×4, the block is split into two sub - partitions in the ISP encoding mode. For all other block sizes larger than 4×8 or 8×4, the block is split into four sub - partitions. FIG. 19 shows an example of the sub - partitioning of a block sized 4×8 or 8×4. FIG. 20 shows another example of the sub - partitioning of a block having a size other than 4×8, 8×4, and 4×4, for example, the block size is larger than 4×8 and 8×4. In one example, all sub - partitions meet the condition of having at least 16 samples. For the chroma component, ISP is not applied.
[0139] In some examples, for each of the sub - partitions, the decoder can entropy - decode the coefficients sent from the encoder to the decoder, and then the decoder can inverse - quantize and inverse - transform the coefficients to generate the residual (or residual data) of the sub - partition. Further, when a sub - partition is intra - predicted by the decoder, the decoder can add the residual with the intra - prediction result to obtain the reconstructed samples of the sub - partition. Thus, the reconstructed samples of each sub - partition may be available to generate the prediction of the next sub - partition to be reconstructed. The above - described process can be repeated for the next sub - partition and so on. In one example, all sub - partitions share the same intra - prediction mode. In some examples, in ISP, since the transformation and reconstruction are performed individually for each sub - partition, each sub - partition can be regarded as a TU.
[0140] In some examples, the ISP algorithm is only tested in the intra prediction mode that is part of the MPM list. Therefore, when a block uses ISP, it can be inferred that the MPM flag is 1. Further, when ISP is used for a particular block, in some examples, the MPM list can be modified to exclude the DC mode and prioritize the horizontal intra prediction mode (or horizontal split) of the ISP horizontal partition and the vertical intra prediction mode (or vertical split) of the vertical partition.
[0141] FIGS. 21A to 21D show examples of different YUV formats or chroma formats. Each chroma format can define a different downsampling grid for different color components.
[0142] The second transformation can refer to NSST, RST (or RT), etc. The second transformation index can refer to the NSST index, the RST index, etc. In one example, the second transformation index indicates a second transformation (also referred to as a second transformation candidate). The second transformation index can be signaled at the CU level. For example, the NSST index or the RST index is signaled at the CU level of the CU. Whether to signal the second transformation index may depend on the number of non-zero coefficients of the CU. Therefore, the decoder can loop through all the TUs included in the CU to determine the number of non-zero coefficients of the CU. In some embodiments, the processing is relatively complex.
[0143] In certain second transform (e.g., RST) designs, when a single split tree is used among different color components within a CU that includes, for example, a luminance component and two chrominance components, the number of non-zero coefficients within the CU can be counted to determine whether a second transform index is signaled. However, for 4×N or N×4 luminance blocks, the corresponding chrominance blocks are 2×N / 2 or N / 2×2 in the YUV 4:2:0 format. Thus, a second transform such as RST is not applied to chrominance blocks and it is not necessary to count the number of non-zero coefficients in chrominance blocks.
[0144] In some examples, second transforms such as NSST or RST are not enabled for the ISP. This can limit the full benefit of the second transform with respect to coding efficiency.
[0145] The embodiments described herein may be used separately or combined in any order. Further, the embodiments may be implemented by processing circuitry such as an encoder, a decoder, etc. (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors may execute a program stored on a non-transitory computer-readable medium. In some examples, the blocks may be prediction blocks, coding blocks, CUs, etc.
[0146] In the present disclosure, embodiments of DST-7 for MTS candidates may be applicable to DST-4, and embodiments of DCT-8 for MTS candidates may be applicable to DCT-4. Further, in some embodiments, references to NSST may also be applicable to RST, which is an example of an alternative design for non-separable second transforms.
[0147] High-level syntax (HLS) elements can refer to video parameter sets (VPSs), sequence parameter sets (SPSs), picture parameter sets (PPSs), slice headers, tile headers, tile group headers, etc. The CTU header can point to syntax elements signaled for the CTU, for example, as header information. In one example, the CTU size is the maximum CU size. The TU size can refer to the maximum width and / or height, or area of the TU.
[0148] Generally, when the luminance size (represented by luminance samples) of a unit (e.g., TU, CU) is known, the corresponding chrominance size specified by several chrominance samples can be obtained. In one example, the 4:2:0 YUV format is used, and the CU has a CU size of 64×64 luminance samples (or 64×64-L). Thus, the CU has a CU size of 32×32 chrominance samples (or 32×32-C). The CU size can be referred to as 64×64-L, 32×32-C, or 64×64-L / 32×32-C. The CU can include a luminance block and two chrominance blocks, the luminance block having 64×64 luminance samples, and each of the two chrominance blocks having 32×32 chrominance samples. The description can be adapted for the TU. For simplicity, the description is omitted.
[0149] The TU size can be represented using the luminance samples within the TU. For example, the maximum TU size of M samples refers to the maximum TU size of M luminance samples. Similarly, the CU size can be represented using the luminance samples within the CU. In other embodiments, the TU size and CU size can be represented using chrominance samples or a combination of luminance samples and chrominance samples.
[0150] The unit size can refer to the width, height, and / or area of the unit. For example, the maximum TU size can refer to the width, height, and / or area of the maximum TU. Generally, TUs, CUs, etc. can have any suitable shape including a rectangle, square, "L" shape, or any other suitable shape. When the shape of the unit is irregular like an "L" shape, the unit size can specify the area of the unit.
[0151] In some embodiments, the maximum TU size (also referred to as the maximum size of the TU) can be signaled in an encoded video bitstream such as HLS (e.g., SPS and PPS). The maximum TU size can be signaled with respect to luma samples or chroma samples.
[0152] In some embodiments, the maximum TU size can be stored in the encoder and / or decoder, and thus, the maximum TU size is not signaled. In one example, the maximum TU size can be stored in the profile and / or level definition. The maximum TU size can be stored with respect to luma samples or chroma samples.
[0153] According to an aspect of the present disclosure, whether second conversion is permitted for a CU can be determined based on the size of the CU (or CU size). In one example, whether second conversion is permitted for a CU can be determined based on the CU size and a CU size threshold. If the CU size is less than or equal to the CU size threshold, it is determined that second conversion is permitted, and if the CU size is greater than the CU size threshold, it is determined that second conversion is not permitted. In one example, if it is determined that second conversion is not permitted, the second conversion index is not signaled. Thus, if the decoder determines that second conversion is not permitted, the decoder can also determine that the second conversion index is not signaled. In one example, the CU size can refer to the width and / or height of the CU such as 64 samples. In one example, the CU size can refer to the area of the CU such as 64×64 samples.
[0154] In one example, the CU size threshold (e.g., CU width threshold, CU height threshold, or CU area threshold) is limited to be less than or equal to the maximum size of the TUs within the CU. The maximum size of the TUs can be signaled in the HLS. The maximum size of the TUs can be pre - defined and stored in the decoder.
[0155] As described above, in some examples, the decoder can loop through the TUs within the CU to determine the number of non - zero coefficients in the CU, and then determine whether the secondary transform index is signaled. According to an aspect of the present disclosure, instead of counting the number of non - zero coefficients in the CU, whether the secondary transform index is signaled can be determined based on the last position of the non - zero transform coefficients (or the last non - zero coefficient position) of the first CB in the CU. The first CB can be any suitable block such as a luminance block, a chrominance block, etc. within the CU. The secondary transform index can indicate the secondary transform selected for the second CB within the CU.
[0156] According to an aspect of the present disclosure, whether to perform a secondary transform on the second CB within the CU can be determined based on whether it is determined that the secondary transform index is signaled. Further, if it is determined that the secondary transform is to be performed, after the secondary transform indicated by the secondary transform index is performed on the second CB, the samples within the second CB can be reconstructed. Alternatively, if it is determined that the secondary transform is not to be performed, the samples within the second CB can be reconstructed without performing a secondary transform on the second CB. The second CB can be any suitable block such as a luminance block or a chrominance block within the CU. In one example, the first CB is the second CB. In another example, the first CB is different from the second CB.
[0157] In one example, the CU includes a luminance block. The first CB is a luminance block. The last position is the last non-zero luminance coefficient position of the luminance block. Therefore, whether the secondary transform index is signaled is determined based on the last luminance position. The second CB is also a luminance block or the first CB.
[0158] In some embodiments, as described below, additional information can be included to determine whether the secondary transform index is signaled.
[0159] In one example, the CU includes a luminance block and a chrominance block. The first CB is a luminance block. The last position is the last non-zero luminance coefficient position of the luminance block. The additional information can include the last non-zero chrominance coefficient position of the chrominance block. Therefore, whether the secondary transform index is signaled is determined based on the last non-zero luminance coefficient position of the chrominance block and the last non-zero chrominance coefficient position. The second CB can be one of the luminance block and the chrominance block.
[0160] In one example, the CU includes a luminance block and two chrominance blocks (e.g., chrominance block I and chrominance block II). The first CB is a luminance block. The last position is the last non-zero luminance coefficient position of the luminance block. The additional information can include the last non-zero chrominance coefficient position I of chrominance block I and the last non-zero chrominance coefficient position II of chrominance block II. Therefore, whether the secondary transform index is signaled can be determined based on the last non-zero luminance coefficient position, the last non-zero chrominance coefficient position I of the non-zero transform coefficients of chrominance block I, and the last non-zero chrominance coefficient position II of the non-zero transform coefficients of chrominance block II. The second CB can be one of the luminance block, chrominance block I, and chrominance block II.
[0161] As described above, whether the secondary transformation index is signaled can be determined based on the position of the last non-zero coefficient of the first CB of the CU. The position of the last non-zero coefficient can include a horizontal component (e.g., last_pos_x) and a vertical component (e.g., last_pos_y), and thus, whether the secondary transformation index is signaled can be determined based on the horizontal component and / or the vertical component. The horizontal component and the vertical component can be 0 or an integer greater than 0. The vertical component can be 0 or an integer greater than 0.
[0162] In one embodiment, the horizontal component can be compared with a first threshold value, and / or the vertical component can be compared with a second threshold value. The first threshold value can be the same as the second threshold value. Alternatively, the first threshold value can be different from the second threshold value. The first threshold value and / or the second threshold value can be a positive integer such as 1, 2, 3, etc.
[0163] In one example, it can be determined whether the horizontal component is less than the first threshold value and whether the vertical component is less than the second threshold value. If it is determined that the horizontal component is less than the first threshold value and the vertical component is less than the second threshold value, it can be determined that the secondary transformation index is not signaled.
[0164] In one example, it can be determined whether the horizontal component is greater than or equal to the first threshold value. Further, it can be determined whether the vertical component is greater than or equal to the second threshold value. If it is determined that the horizontal component is greater than or equal to the first threshold value and the vertical component is greater than or equal to the second threshold value, it can be determined that the secondary transformation index is signaled.
[0165] In one embodiment, it is possible to determine whether the sum of the horizontal component and the vertical component at the last position is less than a third threshold. When it is determined that the sum is less than the third threshold, it can be determined that the secondary conversion index is not signaled. The third threshold can be a positive integer such as 1, 2, 3, etc. When it is determined that the sum is greater than or equal to the third threshold, it can be determined that the secondary conversion index is signaled.
[0166] In one embodiment, it is possible to determine whether the minimum component of the horizontal component and the vertical component is less than a fourth threshold. When it is determined that the minimum component of the horizontal component and the vertical component is less than the fourth threshold, it is determined that the secondary conversion index is not signaled. The fourth threshold can be a positive integer such as 1, 2, 3, etc.
[0167] In one embodiment, it is possible to determine whether the maximum component of the horizontal component and the vertical component is less than a fifth threshold. When it is determined that the maximum component is less than the fifth threshold, it is determined that the secondary conversion index is not signaled. The fifth threshold can be a positive integer such as 1, 2, 3, etc. The fourth threshold can be the same as the fifth threshold. Alternatively, the fourth threshold may be different from the fifth threshold.
[0168] In one embodiment, the first CB is a luminance block within the CU. Further, the CU includes a chrominance block. However, whether the secondary conversion index is signaled is determined based only on the last non-zero luminance coefficient position of the luminance block of the CU. Therefore, the last non-zero chrominance coefficient position of the chrominance block is not considered when determining whether the secondary conversion index is signaled.
[0169] In one embodiment, the CU includes a luminance block and a chroma block as described above. Whether the secondary transform index is signaled is determined based on the position of the last non-zero luminance coefficient of the luminance block and the position of the last non-zero chroma coefficient of the chroma block. Similarly, the position of the last non-zero luminance coefficient can include a luminance horizontal component and a luminance vertical component, and the position of the last non-zero chroma coefficient can include a chroma horizontal component and a chroma vertical component. Therefore, whether the secondary transform index is signaled can be determined based on the luminance horizontal component, the luminance vertical component, the chroma horizontal component, and / or the chroma vertical component.
[0170] In one embodiment, one or more of the respective horizontal and vertical components of the positions of the last non-zero luminance and chroma coefficients can be compared with respective thresholds such as 1, 2, 3, etc. In one example, it can be determined whether one or more of the respective horizontal and vertical components of the positions of the last non-zero luminance and chroma coefficients are less than their respective thresholds. When one or more of the respective horizontal and vertical components of each of the positions of the last non-zero luminance and chroma coefficients are less than their respective thresholds, it can be determined that the secondary transform index is not signaled.
[0171] In one embodiment, the horizontal sum is obtained by summing the luminance horizontal component and the chroma horizontal component, and the vertical sum is obtained by summing the luminance vertical component and the chroma vertical component. It can be determined whether each of the horizontal sum and the vertical sum is less than its respective threshold. When each of the horizontal sum and the vertical sum is less than its respective threshold, it can be determined that the secondary transform index is not signaled.
[0172] In one example, a first sum of a luminance horizontal component and a luminance vertical component is determined, and a second sum of a chroma horizontal component and a chroma vertical component is determined. It is possible to determine whether each of the first sum and the second sum is less than its respective threshold value. When it is determined that each of the first sum and the second sum is less than its respective threshold value, it is possible to determine that the secondary conversion index is not signaled.
[0173] In one embodiment, the total sum is obtained by summing the first sum and the second sum, and when it is determined that the total sum is less than the threshold value, it is possible to determine that the secondary conversion index is not signaled.
[0174] In one embodiment, a first minimum value of the luminance horizontal component and the luminance vertical component is determined, and a second minimum value of the chroma horizontal component and the chroma vertical component is determined. It is possible to determine whether each of the first minimum value and the second minimum value is less than its respective threshold value. When it is determined that each of the first minimum value and the second minimum value is less than its respective threshold value, it is possible to determine that the secondary conversion index is not signaled. The above description can be adapted to determine whether the secondary conversion index is signaled using a first maximum value of the luminance horizontal component and the luminance vertical component and a second maximum value of the chroma horizontal component and the chroma vertical component.
[0175] Similarly, it is possible to determine whether the secondary conversion index is signaled using the minimum values of the horizontal sum and the vertical sum. It is possible to determine whether the secondary conversion index is signaled using the maximum values of the horizontal sum and the vertical sum.
[0176] According to an aspect of the present disclosure, when determining the number of non-zero transform coefficients of a CU, if the size of the CB (also referred to as the CB size) is equal to or greater than a size threshold such as 4, the non-zero transform coefficients within the CB of the CU can be counted. In one example, if the CB size is less than the size threshold, the non-zero transform coefficients within the CB are not counted, that is, they are not included in the number of non-zero transform coefficients of the CU. The size threshold is predefined and can be stored in the decoder. The size threshold can be explicitly signaled from the encoder to the decoder, for example. Further, when the number of non-zero transform coefficients within the CU is less than a number threshold, it can be determined that the secondary transform index is not signaled.
[0177] In one example, the color format of the CU is YUV 4:2:0. The CU includes a luminance block and two chrominance blocks arranged at the same location as the luminance block. The size threshold is 4. When the luminance block has a size of 4×N or N×4, N can refer to the width or height of the luminance block and can be 4 or more, and the two chrominance blocks have a size of 2×N / 2 or N / 2×2. In one example, N is a positive even number. The number of non-zero transform coefficients of the CU is determined from only the luminance block without considering the two chrominance blocks. The width or height of each of the two chrominance blocks is less than the size threshold. In another example, the size threshold is 4×4, the CB size of 2 xN / 2 or N / 2×2 is also smaller than the size threshold, and N can be a positive even number. No secondary transform is performed on the two chrominance blocks.
[0178] In one example, the color format of the CU is YUV 4:2:2. The CU includes a luminance block and two chrominance blocks arranged at the same location as the luminance block. The size threshold is 4. When the size of the luminance block is 4×N and N is 4 or more, the size of the two chrominance blocks is 2×N. The number of non-zero transform coefficients of the CU is determined from only the luminance block without considering the two chrominance blocks. The width (e.g., 2) of each of the two chrominance blocks is less than the size threshold. No secondary transform is performed on the two chrominance blocks.
[0179] To obtain a 4×2 (or 2×4) first sub-block that includes at least one non-zero coefficient, a secondary transformation can be performed on a first coefficient block (such as a TB). For example, to obtain a second TB that includes a first sub-block and a second sub-block, an RST is applied to a 4×4 first TB (e.g., a first coefficient block). The 4×2 (or 2×4) first sub-block includes at least one non-zero coefficient. The coefficients of the 4×2 (or 2×4) second sub-block are considered to be 0. Therefore, the 4×2 (or 2×4) sub-block scan of the first sub-block (i.e., the 4×2 (or 2×4) coefficient scan order) is applied to entropy encode the second TB. In one example, the 4×2 (or 2×4) coefficient scan order is the same scan order as that applied to entropy encode a 4×2 (or 2×4) chrominance block.
[0180] Similarly, for example, if the first coefficient block is larger than 8×4 (or 4×8), a secondary transformation can be performed on the first coefficient block (such as a TB) to obtain an 8×4 (or 4×8) first sub-block that includes at least one non-zero coefficient. For example, to obtain a second TB that includes a first sub-block and a second sub-block, an RST is applied to an 8×8 first TB (e.g., a first coefficient block). The 8×4 (or 4×8) first sub-block includes at least one non-zero coefficient. The coefficients of the 8×4 (or 4×8) second sub-block are considered to be 0. Therefore, the 8×4 (or 4×8) block scan of the first sub-block (i.e., the 8×4 (or 4×8) coefficient scan order) is applied to entropy encode the second TB. In one example, the 8×4 (or 4×8) coefficient scan order is the same scan order as that applied to entropy encode an 8×4 (or 4×8) chrominance block.
[0181] FIG. 22 shows a flowchart illustrating an overview of a process (2200) according to an embodiment of the present disclosure. The process (2200) can be used for reconstructing a block encoded in an intra mode to generate a predicted block of a block being reconstructed. In some examples, the process (2200) can be used for reconstructing a block encoded in an inter mode. In various embodiments, the process (2200) is executed by a processing circuit such as a processing circuit of terminal devices (310), (320), (330), and (340), a processing circuit that executes the functions of the video encoder (403), a processing circuit that executes the functions of the video decoder (410), a processing circuit that executes the functions of the video decoder (510), a processing circuit that executes the functions of the video encoder (603), etc. In some embodiments, the process (2200) is implemented by software instructions, and thus, when the processing circuit executes the software instructions, the processing circuit executes the process (2200). The process starts from (S2201) and proceeds to (S2210).
[0182] (S2210), the encoding information of the CU can be decoded from the encoded video bitstream. The encoding information can indicate the last position of the non-zero transform coefficients (or the last non-zero coefficient position) of the first CB of the CU. In one example, the CU can include a luminance block and a chrominance block. The first CB can be a luminance block or a chrominance block.
[0183] (S2220), whether the secondary transform index is signaled in the encoding information can be determined based on the last non-zero coefficient position as described above. The secondary transform index can indicate a secondary transform to be performed on a second CB within the CU. The second CB can be a luminance block or a chrominance block.
[0184] In one example, the last non-zero coefficient position can include horizontal and vertical components, and whether the secondary transform index is signaled in the encoded information can be determined based on the horizontal and / or vertical components. As described above, additional information can be used to determine whether the secondary transform index is signaled, and step (S2220) can be appropriately adapted to include the additional information. In one example, if it is determined that the secondary transform index is signaled, the process (2200) proceeds to (S2230). Otherwise, the process (2200) proceeds to (S2250).
[0185] (S2230), whether to perform a secondary transform on the second CB can be determined based on whether it is determined that the secondary transform index is signaled in the encoded information. In some examples, if it is determined that the secondary transform index is signaled, it is determined that the secondary transform is to be performed. If it is determined to perform the secondary transform, the process (2200) proceeds to (S2240). Otherwise, the process (2200) proceeds to (S2250).
[0186] (S2240), the secondary transform indicated by the secondary transform index is performed on the second CB. The secondary transform can be NSST. The secondary transform can be RST including a zeroing-out method. For example, if the second CB is 8×8, an RST is applied to the second CB to obtain a transform block including an 8×4 first sub-block and an 8×4 second sub-block. The first sub-block includes at least one non-zero coefficient. The coefficients in the second sub-block are not calculated and are considered 0.
[0187] (S2250), the samples in the second CB can be reconstructed. Then, the process (2200) proceeds to (S2299) and ends.
[0188] The process (2200) can be appropriately adapted as described above. For example, one or more steps can be modified, omitted, or combined. In one example, steps (S2220) and (S2230) are combined. Additional steps can also be added. Also, the execution order of the process (2200) can be modified.
[0189] FIG. 23 shows a flowchart illustrating an overview of a process (2300) according to an embodiment of the present disclosure. The process (2300) can be used for reconstructing blocks encoded in intra mode to generate predicted blocks of blocks being reconstructed. In some examples, the process (2300) can be used for reconstructing blocks encoded in inter mode. In various embodiments, the process (2300) is executed by a processing circuit such as a processing circuit of terminal devices (310), (320), (330), and (340), a processing circuit that executes the functions of the video encoder (403), a processing circuit that executes the functions of the video decoder (410), a processing circuit that executes the functions of the video decoder (510), a processing circuit that executes the functions of the video encoder (603), etc. In some embodiments, the process (2300) is implemented by software instructions, and thus, when the processing circuit executes the software instructions, the processing circuit executes the process (2300). The process starts from (S2301) and proceeds to (S2310).
[0190] (S2310), the encoding information of the CU can be decoded from the encoded video bitstream, and the encoding information indicates the size of the CU.
[0191] (S2320), it can be determined whether second conversion is permitted based on the size of the CU and the CU size threshold. If the size of the CU is less than or equal to the CU size threshold, it is determined that second conversion is permitted. The process (2300) proceeds to (S2330). If the size of the CU is greater than the CU size threshold, it is determined that second conversion is not permitted, and the process (2300) proceeds to (S2350).
[0192] In (S2330), whether to perform the secondary conversion on the CB in the CU can be determined based on, for example, whether the secondary conversion index is signaled as described above. If it is determined to perform the secondary conversion, the process (2300) proceeds to (S2340). Otherwise, the process (2300) proceeds to (S2350).
[0193] In (S2340), similar to step (S2240), the secondary conversion indicated by the secondary conversion index is performed on the CB.
[0194] In (S2350), the samples in the CB can be reconstructed. Then, the process (2300) proceeds to (S2399) and ends.
[0195] The process (2300) can be appropriately adapted. For example, one or more steps can be modified. Additional steps can also be added.
[0196] Step (2200) and step (2300) can be appropriately combined. For example, (S2310) and (S2320) can be implemented, followed by (S2210) to (S2250).
[0197] The above techniques can be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, FIG. 24 shows a computer system (2400) suitable for implementing a particular embodiment of the disclosed subject matter.
[0198] The computer software can be encoded using any suitable machine code or computer language, be the subject of assembly, compilation, linking, or similar mechanisms, and create code including instructions that can be executed directly by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or through interpretation, microcode execution, etc.
[0199] The command can be executed on various types of computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, and the like.
[0200] The components shown in FIG. 24 for the computer system (2400) are illustrative in nature and are not intended to imply any limitation regarding the use or functionality of the computer software implementing the embodiments of the present disclosure. Also, the configuration of the components should not be construed as having any dependency or requirement on any one or combination of the components shown in the exemplary embodiments of the computer system (2400).
[0201] The computer system (2400) may include a specific human interface input device. Such a human interface input device can respond to input from one or more users, such as, for example, tactile input (keystrokes, swipes, movement of a data glove, etc.), audio input (voice, applause, etc.), visual input (gestures, etc.), olfactory input (not shown), etc. Using the human interface device, it is also possible to capture specific media that is not necessarily directly related to conscious human input, such as audio (speech, music, environmental sounds, etc.), images (scanned images, photographic images obtained from a still image camera, etc.), video (2D video, 3D video including stereoscopic video, etc.).
[0202] The input human interface device may include one or more of a keyboard (2401), a mouse (2402), a trackpad (2403), a touch screen (2410), a data glove (not shown), a joystick (2405), a microphone (2406), a scanner (2407), and a camera (2408) (only one of each shown).
[0203] The computer system (2400) may also include certain human interface output devices. Such human interface output devices may, for example, stimulate the senses of one or more human users through tactile output, sound, light, and smell / taste. Such human interface output devices may include tactile output devices (e.g., a touch screen (2410), a data glove (not shown), or a joystick (2405) with tactile feedback, although there may also be tactile feedback devices that do not function as input devices), audio output devices (such as speakers (2409), headphones (not shown), etc.), visual output devices (regardless of whether each has a touch screen input function and regardless of whether each has a tactile feedback function, there are also those that can output two-dimensional visual output or three-dimensional or higher-dimensional output by means such as stereographic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), including screens (2410) such as CRT screens, LCD screens, plasma screens, and OLED screens), and a printer (not shown).
[0204] The computer system (2400) can also include a memory device accessible by humans, and related media such as optical media (2421) such as CD / DVD ROM / RW (2420) including CD / DVDs, thumb drives (2422), removable hard drives or solid state drives (2423), legacy magnetic media such as tapes and floppy disks (not shown), and dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown).
[0205] One of ordinary skill in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not include a transmission medium, a carrier wave, or other transient signals.
[0206] The computer system (2400) may also include an interface to one or more communication networks. The network can be, for example, wireless, wired, or optical. Further, the network can be local, wide area, metropolitan area, vehicle and industrial, real-time, delay-tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LAN, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., TV wired or wireless wide area digital networks including cable TV, satellite TV, terrestrial broadcast TV, vehicle and industrial such as CANBus, etc. In certain networks, generally, an external network interface adapter connected to a specific general-purpose data port or peripheral bus (2449) (such as the USB port (2400) of a computer system) is required, and others are generally integrated into the core (2400) of the computer system by connecting to the system bus as described below (such as an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (2400) can communicate with other entities. Such communication can be unidirectional, receive-only (e.g., broadcast TV), transmit-only (e.g., from a CANbus to a specific CANbus device), or bidirectional, e.g., communication to other computer systems using a local area digital network or a wide area digital network. As described above, specific protocols and protocol stacks can be used for each of these networks and network interfaces.
[0207] The aforementioned human interface device, human-accessible storage device, and network interface can be connected to the core (2440) of the computer system (2400).
[0208] The core (2440) can include special programmable processing devices in the form of one or more central processing units (CPUs) (2441), graphics processing units (GPUs) (2442), field programmable gate arrays (FPGAs) (2443), hardware accelerators for specific tasks (2444), etc. These devices can be connected via a system bus (2448) together with a read-only memory (ROM) (2445), random access memory (2446), internal mass storage devices such as internal hard drives and SSDs that are not accessible to the user (2447). In some computer systems, it is possible to access the system bus (2448) in the form of one or more physical plugs to enable expansion by additional CPUs, GPUs, etc. Peripheral devices can be connected directly to the core's system bus (2448) or via a peripheral bus (2449). The architecture of the peripheral bus includes PCI, USB, etc.
[0209] The CPU (2441), GPU (2442), FPGA (2443), and accelerator (2444) can execute specific instructions that can be combined to form the aforementioned computer code. That computer code can be stored in the ROM (2445) or RAM (2446). Migration data can also be stored in the RAM (2446), while persistent data can be stored, for example, in the internal mass storage device (2447). By using cache memory that can be closely associated with one or more CPUs (2441), GPUs (2442), mass storage devices (2447), ROM (2445), RAM (2446), etc., fast storage and reading for any memory device become possible.
[0210] A computer-readable medium can have computer code thereon for performing various computer-implemented operations. The medium and the computer code can be specially designed and constructed for the purposes of the present disclosure or they can be of the types well-known and available to those skilled in the computer software arts.
[0211] By way of example and not limitation, a computer system having an architecture (2400), particularly a core (2440), can provide functionality as a result of software executed by a processor (including a CPU, GPU, FPGA, accelerator, etc.) incorporated in one or more tangible computer-readable media. Such computer-readable media can be associated with the mass storage devices accessible to the user introduced above, and media associated with specific storage devices of the core (2440) having a non-transitory nature such as the on-core mass storage device (2447) and ROM (2445). The software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (2440). The computer-readable media can include one or more memory devices or chips according to specific needs. The software can cause the core (2440), particularly the processor (including a CPU, GPU, FPGA, etc.) therein, to define data structures stored in the RAM (2446) and modify such data structures according to processes defined by the software, and can execute the specific processes or specific parts of the specific processes described herein. Additionally, or alternatively, the computer system can provide functionality as a result of logic incorporated in or otherwise implemented in a circuit (e.g., an accelerator (2444)) that can operate instead of or in conjunction with software to execute the specific processes or specific parts of the specific processes described herein. References to software can include logic, and vice versa as appropriate. References to computer-readable media can, as appropriate, include software for execution, circuits that embody logic for execution, or circuits (such as integrated circuits (ICs)) that store both. The present disclosure encompasses any suitable combination of hardware and software.
[0212] Appendix A: Acronyms JEM: joint exploration model VVC: versatile video coding BMS:benchmark set MV: Motion Vector HEVC: High Efficiency Video Coding SEI: Supplementary Enhancement Information VUI:Video Usability Information GOP: Group 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 Random Access Memory ASIC: Application-Specific Integrated Circuit Application-Specific Integrated Circuit PLD: Programmable Logic Device Programmable Logic Device LAN: Local Area Network Local Area Network GSM: Global System for Mobile communications Global System for Mobile communications LTE: Long-Term Evolution Long-Term Evolution CANBus: Controller Area Network Bus Controller Area Network Bus USB: Universal Serial Bus Universal Serial Bus PCI: Peripheral Component Interconnect Peripheral Component Interconnect FPGA: Field Programmable Gate Areas Field Programmable Gate Areas SSD: solid-state drive solid-state drive IC: Integrated Circuit Integrated Circuit CU: Coding Unit Coding Unit
[0213] Although the present disclosure has described several exemplary embodiments, there are changes, substitutions, and various alternative equivalents within the scope of the present disclosure. Therefore, it will be understood by those skilled in the art that many systems and methods can be devised that embody the principles of the present disclosure and are thus within its spirit and scope, even though not explicitly shown or described herein.
[0214] Appendix I 4×4 transform
Mathematics
Mathematics
Mathematics
Mathematics
[0215] Appendix II 64-point DCT-2 core { {aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa} {bf, bg, bh, bi, bj, bk, bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv, bw, bx, by, bz, ca, cb, cc, cd, ce, cf, cg, ch, ci, cj, ck, -ck, -cj, -ci, -ch, -cg, -cf, -ce, -cd, -cc, -cb, -ca, -bz, -by, -bx, -bw, -bv, -bu, -bt, -bs, -br, -bq, -bp, -bo, -bn, -bm, -bl, -bj, -bi, -bh, -bg, -bf} {ap, aq, ar, as, at, au, aw, ax, ay, az, ba, bb, bc, bd, be, -be, -bd, -bc, -bb, -ba, -az, -ay, -ax, -aw, -av, -au, -at, -as, -ar, -aq, -ap, -ap, -aq, -ar, -as, -at, -au, -av, -aw, -ax, -ay, -az, -ba, -bb, -bc, -bd, -be, be, bd, bc, bb, ba, az, ay, ax, aw, av, au, at, as, ar, aq, ap,} {bg, bj, bm, bp, bs, bv by, cb, ce, ch, ck, -ci, -cf, -cc, -bz, -bw, -bt, -bq, -bn, -bk, -bh, -bf, -bi, -bl, -bo, -br, -bu, -bx, -ca, -cd, -cg, -cj, cj, cg, cd, ca, bx, bu, br, bo, bl, bi, bf, bh, bk, bn, bq, bt, bw, bz, cc, cf, ci, -ck, -ch, -ce, -cb, -by, -bs, -bp, -bm, -bj, -bg} {ah, ai, aj, ak, al, am, an, ao, -ao, -an, -am, -al, -ak, -aj, -ai, -ah, -ah, -ai, -aj, -ak, -al, -am, -an, -ao, ao, an, am, al, ak, aj, ai, ah, ai, aj, ak, al, am, an, ao, -an, -am, -al, -ak, -aj, -ai, -ah, -ah, -ai, -aj, -ak, -al, -am, -an, -ao, ao, an, am, al, ak, aj, ai, ah,} {bh, bm, br, bw, cb, cg, -ck, -cf, -ca, -bv, -bq, -bl, -bg, -bi, -bn, -bs, -bx, -cc, -ch, cj, ce, bz, bu, bp, bk, bf, bj, bo, bt, by, cd, ci, -ci, -cd, -by, -bt, -bo, -bj, -bf, -bk, -bp, -bu, -bz, -ce, -cj, ch, cc, bx, bs, bn, bg, bl, bq, bv, ca, cf, ck, -cg, -cb, -bw, -br, -bm, -bh} {aq, at, aw, az, bc, -be, -bb, -ay, -av, -as, -ap, -ar, -au, -ax, -ba, -bd, bd, ba, ax, au, ar, ap, as, av, ay, bb, be, -bc, -az, -aw, -at, -aq, -aq, -at, -aw, -az, -bc, be, bb, ay, av, as, ap, ar, au, ax, ba, bd, -bd, -ba, -ax, -au, -ar, -ap, -as, -av, -ay, -bb, -be, bc, az, aw, at} {bi, bp, bw, cd, ck, -ce, -bx, -bq, -bj, -bh, -bo, -bv, -cc, -cj, cf, by, br, bk, bg, bn, bu, cb, ci, -cg, -bz, -bs, -bl, -bf, -bm, -bt, -ca, -ch, ch, ca, bt, bm, bf, bl, bs, bz, cg, -ci, -cb, -bu, -bn, -bg, -bk, -br, -by, -cf, cj, cc, bv, bo, bh, bj, bq, bx, ce, -ck, -cd, -bw, -bp} {ad, ae, af, ag, -ag, -af, -ae, -ad, -ad, -ad, -ae, -af, -ag, ag, af, ae, ad, ae, af, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag, af, ae, ad, ad, ae, af, ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag, ag, af, ae, ad, ad, ae, af, ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag, ag, ag, af, ae, ad} {bj, bs, cb, ck, -cc, -bt, -bk, -bi, -br, -ca, -cj, cd, bu, bl, bh, bq, bz, ci, -ce, -bv, -bm, -bg, -bp, -by, -ch, cf, bw, bn, bf, bo, bx, cg, -cg, -bx, -bo, -bf, -bn, -bw, -cf, ch, by, bp, bg, bm, bv, ce, -ci, -bz, -bq, -bh, -bl, -bu, -cd, cj, ca, br, bi, bt, cc, -ck, -cb, -bs, -bj} {ar, aw, bb, -bd, -ay, -at, -ap, -au, -az, -be, ba, av, aq, as, ax, bc, -bc, -ax, -as, -aq, -av, -ba, be, az, au, ap, at, ay, bd, -bb, -aw, -ar, -ar, -aw, -bb, bd, ay, at, ap, au, az, be, -ba, -av, -aq, -as, -ax, -bc, bc, ax, as, aq, av, ba, -be, -az, -au, -ap, -at, -ay, -bd, bb, aw, ar} {bk, bv, cg, -ce, -bt, -bi, -bm, -bx, -ci, cc, br, bg, bo, bz, ck, -ca, -bp, -bf, -bq, -cb, cj, by, bn, bh, bs, cd, -ch, -bw, -bl, -bj, -bu, -cf, cf, bu, bj, bl, bw, ch, -cd, -bs, -bh, -bn, -by, -cj, cb, bq, bf, bp, ca, -ck, -bz, -bo, -bg, -br, -cc, ci, bx, bm, bi, bt, ce, -cg, -bv, -bk} {ai, al, ao, -am, -aj, -ah, -ak, -an, an, ak, ah, aj, am, -ao, -al, -ai, -al, -ao, am, aj, ah, ak, an, -an, -ak, -ah, -aj, -am, ao, al, ai, al, ao, -am, -aj, -ah, -ak, -an, an, ak, ah, aj, am, -ao, -al, -ai, -ai, -al, -ao, am, aj, ah, ak, -an, -an, -ak, -ah, -aj, -am, ao, al, ai} {bl, by - ck, -bx, -bk, -bm, -bz, cj, bw, bj, bn, ca, -ci, -bv, -bi, -bo, -cb, ch, bu, bh, bp, cc, -cg, -bt, -bg, -bq, -cd, cf, bs, bf, br, ce, -ce, -br, -bs, -cf, cd, bq, bg, bt, cg, -cc, -bp, -bh, -bu, -ch, cb, bo, bi, bv, ci, -ca, -bn, -bj, -bw, -cj, bz, bm, bk, bx, ck, -by - bl} {as, az, -bd, -aw, -ap, -av, -bc, ba, at, ar, ay, -be, -ax, -aq, -au, -bb, bb, au, aq, ax, be, -ay, -ar, -at, -ba, bc, av, ap, aw, bd, -az, -as, -az, bd, aw, ap, av, bc, -ba, -at, -ar, -ay, be, ax, aq, au, bb, -bb, -au, -aq, -ax, -be, ay, ar, at, ba, -bc, -av, -ap, -aw, -bd, az, as} {bm, cb, -cf, -bq, -bi, -bx, cj, bu, bf, bt, ci, -by, -bj, -bp, -ce, cc, bn, bl, ca, -cg, -br, -bh, -bw, ck, bv, bg, bs, ch, -bz, -bk, -bo, -cd, cd, bo, bk, bz, -ch, -bs, -bg, -bv, -ck, bw, bh, br, cg, -ca, -bl, -bn, -cc, ce, bp, bj by, -ci, -bt, -bf, -bu, -cj, bx, bi, bq, cf, -cb, -bm} {ab, ac, -ac, -ab, -ab, -ac, ac, ab, ab, ac, -ac, -ab, -ab, -ac, ac, ab, ab, ac, ac, -ac, -ac, -ab, -ab, ac, -ac, -ab, -ac, -ab, -ab, -ac, ac, ab, ab, ac, ac, -ac, -ab, -ab, -ac, ac, ab, -ab, -ab, -ab, -ac, ac, ab, -ab, -ac, -ab, -ab, -ac, -ab, -ab, -ac, -ac, -ab, -ac, -ab, -ac, -ab} {bn, ce, -ca, -bj, -br, -ci, bw, bf, bv, -cj, -bs, -bi, -bz, cf, bo, bm, cd, -cb, -bk, -bq, -ch, bx, bg, bu, -ck, -bt, -bh, -by, cg, bp, bl, cc, -cc, -bl, -bp, -cg, by, bh, bt, ck, -bu, -bg, -bx, ch, bq, bk, cb, -cd, -bm, -bo, -cf, bz, bi, bs, -bv, -bf, -bw, ci, br, bj, ca, -ce, -bn} {at, bc, -ay, -ap, -ax, bd, au, as, bb, -az, -aq, -aw, be, av, ar, ba, -ba, -ar, -av, -be, aw, aq, az, -bb, -as, -au, -bd, ax, ap, ay, -bc, -at, -at, -bc, ay, ap, ax, -bd, -au, -as, -bb, az, aq, aw, -be, -av, -ar, -ba, ba, ar, av, be, -aw, -aq, -az, bb, as, au, bd, -ax, -ap, -ay, bc, at} {bo, ch, -bv, -bh, -ca, cc, bj, bt, -cj, -bq, -bm, -cf, bx, bf, by, -ce, -bl, -br, -ck, bs, bk, cd, -bz, -bg, -bw, cg, bn, bp, ci, -bu, -bi, -cb, cb, bi, -ci, -bp, -bn, -cg, bw, bg, bz, -cd, -bk, -bs, ck, br, bl, ce, -by, -bf, -bx, cf, bm, bq, cj, -bt, -bj, -cc, ca, bh, bv, -ch, -bo} {aj, ao, -ak, -ai, -an, al, ah, am, -am, -ah, -al, an, ai, ak, -ao, -aj, -aj, -ao, ak, ai, an, -al, -ah, -am, ah, al, -an, -ai, -ak, ao, aj, aj, ao, -ak, -ai, -an, al, ah, -am, -ah, -al, an, ai, ak, -aj, -aj, -ao, ak, ai, an, -al, -ah, am, am, ah, al, -an, -ai, -ak, ao, aj} {bp, ck, -bq, -bo, -cj, br, bn, ci, -bs, -bm, -ch, bt, bl, cg, -bu, -bk, -cf, bv, bj, ce, -bw, -bi, -cd, bx, bh, cc, -by, -bg, -cb, bz, bf, ca, -ca, -bf, -bz, cb, bg, by, -cc, -bh, -bx, cd, bi, bw, -ce, -bj, -bv, cf, bu, -cg, -bl, -bt, ch, bm, bs, -ci, -bn, -br, cj, bo, bq, -ck, -bp} {au, -be, -at, -av, bd, as, aw, -bc, -ar, -ax, bb, aq, ay, -ba, -ap, -az, az, ap, ba, -ay, -aq, -bb, ax, ar, bc, -aw, -as, -bd, av, at, be, -au, -au, be, at, av, -bd, -as, -aw, bc, ar, ax, -bb, -aq, -ay, ba, ap, az, -az, -ap, -ba, ay, aq, bb, -ax, -ar, -bc, aw, as, bd, -av, -at, -be, au} {bq, -ci, -bl, -bv, cd, bg, ca, -by, -bi, -cf, bt, bn, ck, -bo, -bs, cg, bj, bx, -cb, -bf, -cc, bw, bk, ch, -br, -bp, cj, bm, bu, -ce, -bh, -bz, bz, bh, ce, -bu, -bm, -cj, bp, br, -ch, -bk, -bw, cc, bf, cb, -bx, -bj, -cg, bs, bo, -ck, -bn, -bt, cf, bi, by, -ca, -bg, -cd, bv, bl, ci, -bq} {ae, -ag, -ad, -af, af, ad, ag, -ae, -ae, ag, ad, af, -af, -ad, -ag, ae, ae, -ag, -ad, -af, af, ad, ag, -ae, -ae, ag, ad, af, -af, -ad, -ag, ae, ae, -ag, -ad, -af, af, ad, ag, -ae, -ae, ag, ad, af, -af, -ad, -ag, ae, ae, -ag, -ad, -af, af, ad, ag, -ae, -ae, ag, ad, af, -af, -ad, -ag, ae} {br, -cf, -bg, -cc, bu, bo, -ci, -bj, -bz, bx, bl, ck, -bm, -bw, ca, bi, ch, -bp, -bt, cd, bf, ce, -bs, -bq, cg, bh, cb, -bv, -bn, cj, bk, by, -by, -bk, -cj, bn, bv, -cb, -bh, -cg, bq, bs, -ce, -bf, -cd, bt, bp, -ch, -bi, -ca, bw, bm, -ck, -bl, -bx, bz, bj, ci, -bu, -bg, cf, -br} {av, -bb, -ap, -bc, au, aw, -ba, -aq, -bd, at, ax, -az, -ar, -be, as, ay, -ay, -as, be, ar, az, -ax, -at, bd, aq, ba, -aw, -au, bc, ap, bb, -av, -av, bb, ap, bc, -au, -aw, ba, aq, bd, -at, -ax, az, ar, be, -as, -ay, ay, as, -be, -ar, -az, ax, at, -bd, -ba, aw, -bc, -ap, -bb} {bs, -cc, -bi, -cj, bl, bz, -bv, -bp, cf, bf, cg, -bo, -bw, by, bm, -ci, -bh, -cd, br, bt, -cb, -bj, -ck, bk, ca, -bu, -bq, ce, bg, ch, -bn, -bx, bx, bn, -ch, -bg, -ce, bq, bu, -ca, -bk, ck, bj, cb, -bt, -br, cd, bh, ci, -bm, -by, bw, bo, -cg, -bf, bp, bv, -bz, -bl, cj, bi, cc, -bs} {ak, -am, -ai, ao, ah, an, -aj, -al, al, aj, -an, -ah, -ao, ai, am, -ak, -ak, am, ai, -ao, -ah, -an, aj, al, -al, -aj, an, ah, ao, -ai, -am, ak, ak, -am, -ai, ao, ah, an, -aj, -al, al, aj, -an, -ah, -ao, ai, am, -ak, -ak, am, ai, -ao, -ah, -an, aj, al, -al, -aj, an, ah, ao, -ai, -am, ak} {bt, -bz, -bn, cf, bh, ck, -bi, -ce, bo, by, -bu, -bs, ca, bm, -cg, -bg, -cj, bj, cd, -bp, -bx, bv, br, -cb, -bl, ch, bf, ci, -bk, -cc, bq, bw, -bw, -bq, cc, bk, -ci, -bf, -ch, bl, cb, -br, -bv, bx, bp, -cd, -bj, cj, bg, cg, -bm, -ca, bs, bu, -by, -bo, ce, bi, -ck, -bh, -cf, bn, bz} {aw, -ay, -au, ba, as, -bc, -aq, be, ap, bd, -ar, -bb, at, az, -av, -ax, ax, av, -az, -at, bb, ar, -bd, -ap, -be, aq, bc, -as, -ba, au, ay, -aw, -aw, ay, au, -ba, -as, bc, aq, -be, -ap, -bd, ar, bb, -at, -az, av, ax, -ax, -av, az, at, -bb, -ar, bd, ap, be, -aq, -bc, as, ba, -au, -ay, -aw} {bu, -bw, -bs, by, bq, -ca, -bo, cc, bm, -ce, -bk, cg, bi, -ci, -bg, ck, bf, cj, -bh, -ch, bj, cf, -bl, -cd, bn, cb, -bp, -bz, br, bx, -bt, -bv, bv, bt, -bx, -br, bz, bp, -cb, -bn, cd, bl, -cf, -bj, ch, bh, -cj, -bf, -ck, bg, ci, -bi, -bo, bk, ce, -bm, -cc, ca, -bq, -by, bs,} {aa, -aa, -aa, -aa, -aa, -aa, aa, aa, -aa, -aa, -aa, aa, -aa, -aa, -aa, aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa, -aa} {bv, -bt, -bx, br, bz, -bp, -cb, bn, cd, -bl, -cf, bj, ch, -bh, -cj, bf, -ck, -bg, ci, bi, -cg, -bk, ce, bm, -cc, -bo, ca, bq, -by, -bs, bw, bu, -bu, -bs, by, -bq, -ca, bo, cc, -ce, bk, cg, -bi, -ci, bg, ck, -bf, cj, bh, -ch, -bj, cf, bl, -cd, -bn, cb, bp, -bz, -br, bx, bt, -bv} {ax, -av, -az, at, bb, -ar, -bd, ap, -be, -aq, bc as, -ba, -au, ay, aw, -aw, -ay, au, ba, -as, -bc, aq, be, -ap, bd, ar, -bb, -at, az, av, -ax, -ax, av, az, -at, -bb, ar, bd, -ap, be, aq, -bc, -as, ba, au, -ay, -aw, aw, ay, -au, -ba, as, bc, -aq, -be, ap, -bd, -ar, bb, at, -az, -av, -ax} {bw, -bq, -cc, bk, ci, -bf, ch, bl, -cb, -br, bv, bx, -bp, -cd, bj, cj, -bg, cg, bm, -ca, -bs, bu, by, -bo, -ce, bi, ck, -bh, cf, bn, -bz, -bt, bt, bz, -bn, -cf, bh, -ck, -bi, ce, bo, -by, -bu, bs, ca, -bm, -cg, bg, -cj, -bj, cd, bp, -bx, -bv, br, cb, -bl, -ch, bf, -ci, -bk, cc, bq bw} {al, -aj, -an, ah, -ao, -ai, am, ak, -ak, -am, ai, ao, -ah, an, aj, -al, -al, aj, an, -ah, ao, ai, -am, -ak, ak, am, -ai, -ao, ah, -an, -aj, al, al, -aj, -an, ah, -ao, -ai, am, ak, -am, ai, ao, -ah, an, aj, -al, -al, aj, an, -ah, ao, ai, -am, -ak, ak, am, -ai, -ao, ah, -an, -aj, al} {bx, -bn, -ch, bg, -ce, -bq, bu, ca, -bk, -ck, bj, -cb, -bt, br, cd, -bh, ci, bm, -by, -bw, bo, cg, -bf, cf, bp, -bv, -bz, bl, cj, -bi, cc, bs, -bs, -cc, bi, -cj, -bl, bz, bv, -bp, -cf, bf, -cg, -bo, bw, by, -bm, -ci, bh, -cd, -br, bt, cb, -bj, ck, bk, -ca, -bu, ce, -bg, ch, bn, -bx} {ay, -as, -be, ar, -az, -ax, at, bd, -aq, ba, aw, -au, -bc, ap, -bb, -av, av, bb, -ap, bc, au, -aw, -ba, aq, -bd, -at, ax, az, -ar, be, as, -ay, -ay, as, be, -ar, az, ax, -at, -bd, aq, -ba, -aw, au, bc, -ap, bb, av, -av, -bb, ap, -bc, -au, aw, ba, -aq, bd, at, -ax, -az, ar, -be, -as, ay} {by, -bk, cj, bn, -bv, -cb, bh, -cg, -bq, bs, ce, -bf, cd, bt, -bp, -ch, bi, -ca, -bw, bm, ck, -bl, bx, bz, -bj, ci, bo, -bu, -cc, bg, -cf, -br, br, cf, -bg, cc, bu, -bo, -ci, bj, -bz, -bx, bl, -ck, -bm, bw, ca, -bi, ch, bp, -bt, -cd, bf, -ce, -bs, bq, cg, -bh, cb, bv, -bn, -cj, bk, -by} {af, -ad, ag, ae, -ae, -ag, ad, -af, -af, ad, -ag, -ae, ae, ag, -ad, af, af, -ad, ag, ae, -ae, -ag, ad, -af, -af, ad, -ag, -ae, ae, ag, -ad, af, af, -ad, ag, ae, -ae, -ag, ad, -af, -af, ad, -ag, -ae, ae, ag, -ad, af, af, -ad, ag, ae, -ae, -ag, ad, -af, -af, ad, -ag, -ae, ae, ag, -ad, af} {bz, -bh, ce, bu, -bm, cj, bp, -br, -ch, bk, -bw, -cc, bf, -cb, -bx, bj, -cg, -bs, bo, ck, -bn, bt, cf, -bi, by, ca, -bg, cd, bv, -bl, ci, bq, -bq, -ci, bl, -bv, -cd, bg, -ca, -by, bi, -cf, -bt, bn, -ck, -bo, bs, cg, -bj, bx, cb, -bf, cc, bw, -bk, ch, br, -bp, -cj, bm, -bu, -bz} {az, -ap, ba, ay, -aq, bb, ax, -ar, bc, aw, -as, bd, av, -at, be, au, -au, -be, at, -av, -bd, as, -aw, -bc, ar, -ax, -bb, aq, -ay, -ba, ap, -az, -az, ap, -ba, -ay, aq, -bb, -ax, ar, -bc, -aw, as, -bd, -av, at, -be, -au, au, be, -at, av, bd, -as, aw, bc, -ar, ax, bb, -aq, ay, ba, -ap, az} {ca, -bf, bz, cb, -bg, by, cc, -bh, bx, cd, -bi, bw, ce, -bj, bv, cf, -bk, bu, cg, -bl, bt, ch, -bm, bs, ci, -bn, br, cj, -bo, bq, ck, -bp, bp, -ck, -bq, bo, -cj, -br, bn, -ci, -bs, bm, -ch, -bt, bl, -cg, -bu, bk, -cf, -bv, bj, -ce, -bw, bi, -cd, -bx, bh, -cc, -by, bg, -cb, -bz, bf, -ca} {am, -ah, al, an, -ai, ak, ao, -aj, aj, -ao, -ak, ai, -an, -al, ah, -am, -am, ah, -al, -an, ai, -ak, -ao, aj, -aj, ao, ak, -ai, an, al, -ah, am, am, -ah, al, an, -ai, ak, ao, -aj, aj, -ao, -ak, ai, -an, -al, ah, -am, -am, ah, -al, -an, ai, -ak, -ao, aj, -aj, ao, ak, -ai, an, al, -ah, am} {cb, -bi, bu, ci, -bp, bn, -cg, -bw, bg, -bz, -cd, bk, -bs, -ck, br, -bl, ce, by, -bf, bx, cf, -bm, bq, -cj, -bt, bj, -cc, -ca, bh, -bv, -ch, bo, -bo, ch, bv, -bh, ca, cc, -bj, bt, cj, -bq, bm, -cf, -bx, bf, -by, -ce, bl, -br, ck, bs, -bk, cd, bz, -bg, bw, cg, -bn, bp, -ci, -bu, bi, -cb} {ba, -ar, av, -be, -aw, aq, -az, -bb, as, -au, bd, ax, -ap, ay, bc, -at, at, -bc, -ay, ap, -ax, -bd, au, -as, bb, az, -aq, aw, be, -av, ar, -ba, -ba, ar, -av, be, aw, -aq, az, bb, -as, au, -bd, -ax, ap, -ay, -bc, at, -at, bc, ay, -ap, ax, bd, -au, as, -bb, -az, aq, -aw, -be, av, -ar, ba} {cc, -bl, bp, -cg, -by, bh, -bt, ck, bu, -bg, bx, ch, -bq, bk, -cb, -cd, bm, -bo, cf, bz, -bi, bs, -cj, -bv, bf, -bw, -ci, br, -bj, ca, ce, -bn, bn, -ce, -ca, bj, -br, ci, bw, -bf, bv, cj, -bs, bi, -bz, -cf, bo, -bm, cd, cb, -bk, bq, -ch, -bx, bg, -bu, -ck, bt, -bh, by, cg, -bp, -cc} {ac, -ab, ab, -ac, -ac, ab, -ab, ac, ac, -ab, ab, -ac, -ac, ab, -ab, ac, ac, -ab, ab, -ac, -ac, ab, -ab, ac, ac, -ab, ab, -ac, -ac, ab, -ab, ac, ac, -ab, ab, -ac, -ac, ab, -ab, ac, ac, -ab, ab, -ac, -ac, ab, -ab, ac, ac, -ab, ab, -ac, -ac, ab, -ab, ac} {cd, -bo, bk, -bz, -ch, bs, -bg, bv, -ck, -bw, bh, -br, cg, ca, -bl, bn, -cc, -ce, bp, -bj, by ci, -bt, bf, -bu, cj, bx, -bi, bq, -cf, -cb, bm, -bm, cb, cf, -bq, bi, -bx, -cj, bu, -bf, bt, -ci, -by, bj, -bp, ce, cc, -bn, bl, -ca, -cg, br, -bh, bw, ck -bv, bg, -bs, ch, bz, -bk, -cd} {bb, -au, aq, -ax, be, ay, -ar, at, -ba, -bc, av, -ap, aw, -bd, -az, as, -as, az, bd, -aw, ap, -av, bc, ba, -at, ar, -ay, -be, ax, -aq, au, -bb, -bb, au, -aq, ax, -be, -ay, ar, -at, ba, bc, -av, ap, -aw, bd, az, -as, as, -az, -bd, aw, -ap, av, -bc, -ba, at, -ar, ay, be, -ax, aq, -au, bb} {ce, -br, bf, -bs, cf, cd, -bq, bg, -bt, cg, cc, -bp, bh, -bu, ch, cb, -bo, bi, -bv, ci, ca, -bn, bj, -bw, cj, bz, -bm, bk, -bx, ck, by, -bl, bl, -by, -ck, bx, -bk, bm, -bz, -cj, bw, -bj, bn, -ca, -ci, bv, -bi, bo, -cb, -ch, bu, -bh, bp, -cc, -cg, bt, -bg, bq, -cd, -cf, bs, -br, -ce} {an, -ak, ah, -aj, am, ao, -al, ai, -ai, al, -ao, -am, aj, -ah, ak, -an, -an, ak, -ah, aj, -am, -ao, al, -ai, ai, -al, ao, am, -aj, ah, -ak, an, an, -ak, ah, -aj, am, ao, -al, ai, -ai, al, -ao, -am, aj, -ah, ak, -an, -an, ak, -ah, aj, -am, -ao, al, -ai, ai, -al, ao, am, -aj, ah, -ak, an} {cf, -bu, bj, -bl, bw, -ch, -cd, bs, -bh, bn, -by, cj, cb, -bq, bf, -bp, ca, ck, -bz, bo, -bg, br, -cc, -ci, bx, -bm, bi, -bt, ce, cg, -bv, bk, -bk, bv, -cg, -ce, bt, -bi, bm, -bx, ci, cc, -br, bg, -bo, bz, -ck, -ca, bp, -bf, bq, -cb, -cj, by, -bn, bh, -bs, cd, ch, -bw, bl, -bu, -cf} {bc, -ax, as, -aq, av, -ba, -be, az, -au, ap, -at, ay, -bd, -bb, aw, -ar, ar, -aw, bb, bd, -ay, at, -ap, au, -az, be, ba, -av, aq, -as, ax, -bc, -bc, ax, -as, aq, -av, ba, be, -az, au, -ap, at, -ay, bd, bb, -aw, ar, -ar, aw, -bb, -bd, ay, -at, ap, -au, az, -be, -ba, av, -aq, as, -ax, bc} {cg, -bx, bo, -bf, bn, -bw, cf, ch, -by, bp, -bg, bm, -bv, ce, ci, -bz, bq, -bh, bl, -bu, cd, cj, -ca, br, -bi, bk, -bt, cc, ck, -cb, bs, -bj, bj, -bs, cb, -ck, -cc, bt, -bk, bi, -br, ca, -cj, -cd, bu, -bl, bh, -bq, bz, -ci, -ce, bv, -bm, bg, -bp, by, -ch, -cf, bw, -bn, bf, -bo, bx, -cg} {ag, -af, ae, -ad, ad, -ae, af, -ag, -ag, af, -ae, ad, -ad, ae, -af, ag, ag, -af, ae, -ad, ad, -ae, af, -ag, -ag, af, -ae, ad, -ad, ae, -af, ag, ag, -af, ae, -ad, ad, -ae, af, -ag, -ag, af, -ae, ad, -ad, ae, -af, ag, ag, -af, ae, -ad, ad, -ae, af, -ag, -ag, af, -ae, ad, -ad, ae, -af, ag} {ch, -ca, bt, -bm, bf, -bl, bs, -bz, cg, ci, -cb, bu, -bn, bg, -bk, br, -by, cf, cj, -cc, bv, -bo, bh, -bj, bq, -bx, ce, ck, -cd, bw, -bp, bi, -bi, bp, -bw, cd, -ck, -ce, bx, -bq, bj, -bh, bo, -bv, cc, -cj, -cf, by, -br, bk, -bg, bn, -bu, cb, -ci, -cg, bz, -bs, bl, -bf, bm, -bt, ca, -ch} {bd, -ba, ax, -au, ar, -ap, as, -av, ay, -bb, be, bc, -az, aw, -at, aq, -aq, at, -aw, az, -bc, -be, bb, -ay, av, -as, ap, -ar, au, -ax, ba, -bd, -bd, ba, -ax, au, -ar, ap, -as, av, -ay, bb, -be, -bc, az, -aw, at, -aq, aq, -at, aw, -az, bc, be, -bb, ay, -av, as, -ap, ar, -au, ax, -ba, -bd} {ci, -cd, -bt, bo, -bj, bf, -bk, bp, -bu, bz, -ce, cj, ch, -cc, bx, -bs, bn, -bi, bg, -bl, bq, -bv, ca, -cf, ck, cg, -cb, bw, -br, bm, -bh, bh, -bm, br, -bw, cb, -cg, -ck, cf, -ca, bv, -bq, bl, -bg, bi, -bn, bs, -bx, cc, -ch, -cj, ce, -bz, bu, -bp, bk, -bf, bj, -bo, bt, -by, cd, -ci} {ao, -an, am, -al, ak, -aj, ai, -ah, ah, -ai, aj, -ak, al, -am, an, -ao, -ao, an, -am, al, -ak, aj, -ai, ah, -ah, ai, -aj, ak, -al, am, -an, ao, ao, -an, am, -al, ak, -aj, ai, -ah, ah, -ai, aj, -ak, al, -am, an, -ao, -ao, an, -am, al, -ak, aj, -ai, ah, -ah, ai, -aj, ak, -al, am, -an, ao} {cj, -cg, cd, -ca, bx, -bu, br, -bo, bl, -bi, bf, -bh, bk, -bn, bq, -bt, bw, -bz, cc, -cf, ci, ck, -ch, ce, -cb, by, -bv, bs, -bp, bm, -bj, bg, -bg, bj, -bm, bp, -bs, bv, -by, cb, -ce, ch, -ck, -ci, cf, -cc, bz, -bw, bt, -bq, bn, -bk, bh, -bf, bi, -bl, bo, -br, bu, -bx, ca, -cd, cg, -cj} {be, -bd, bc, -bb, ba, -az, ay, -ax, aw, -av, au, -at, as, -ar, aq, -ap, ap, -aq, ar, -as, at, -au, av, -aw, ax, -ay, az, -ba, bb, -bc, bd, -be, -be, bd, -bc, bb, -ba, az, -ay, ax, -aw, av, -au, at, -as, ar, -aq, ap, -ap, aq, -ar, as, -at, au, -av, aw, -ax, ay, -az, ba, -bb, bc, -bd, be} {ck, -cj, ci, -ch, cg, -cf, ce, -cd, cc, -cb, ca, -bz, by, -bx, bw, -bv, bu, -bt, bs, -br, bq, -bp, bo, -bn, bm, -bl, bk, -bj, bi, -bh, bg, -bf, bf, -bg, bh, -bi, bj, -bk, bl, -bm, bn, -bo, bp, -bq, br, -bs, bt, -bu, bv, -bw, bx, -by, bz, -ca, cb, -cc, cd, -ce, cf, -cg, ch, -ci, cj - ck} [[ID=4}} Here, {aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv, bw, bx, by, bz, ca, cb, cc, cd, ce, cf, cg, ch, ci, cj, ck} = {64, 83, 36, 89, 75, 50, 18, 90, 87, 80, 70, 57, 43, 25, 9, 90, 90, 88, 85, 82, 78, 73, 67, 61, 54, 46, 38, 31, 22, 13, 4, 91, 90, 90, 90, 88, 87, 86, 84, 83, 81, 79, 77, 73, 71, 69, 65, 62, 59, 56, 52, 48, 44, 41, 37, 33, 28, 24, 20, 15, 11, 7, 2}
[0216] Appendix III 4 - point DST - 7 {a, b, c, d} {c, c, 0, -c} {d, -a, -c, b} {b, -d, c, -a} Here, {a, b, c, d} = {29, 55, 74, 84} 8 - point DST - 7: {a, b, c, d, e, f, g, h,} {c, f, h, e, b, -a, -d, -g,} {e, g, b, -c, -h, -d, a, f,} {g, c, -d, -f, a, h, b, -e,} {h, -a, -g, b, f, -c, -e, d,} {f, -e, -a, g, -d, -b, h, -c,} {d, -h, e, -a, -c, g, -f, b,} {b, -d, f, -h, g, -e, c, -a,} Here, {a, b, c, d, e, f, g, h} = {17, 32, 46, 60, 71, 78, 85, 86} 16 - point DST - 7 {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p,} {c, f, i, l, o, o, l, i, f, c, 0, -c, -f, -i, -l, -o,} {e, j, o, m, h, c, -b, -g, -l, -p, -k, -f, -a, d, i, n,} {g, n, l, e, -b, -i, -p, -j, -c, d, k, o, h, a, -f, -m,} {i, o, f, -c, -l, -l, -c, f, o, i, 0, -i, -o, -f, c, l,} {k, k, 0, -k, -k, 0, k, k, 0, -k, -k, 0, k, k, 0, -k,} {m, g, -f, -n, -a, l, h, -e, -o, -b, k, i, -d, -p, -c, j,} {o, c, -l, -f, i, i, -f, -l, c, o, 0, -o, -c, l, f, -i,} {p, -a, -o, b, n, -c, -m, d, l, -e, -k, f, j, -g, -i, h,} {n, -e, -i, j, d, -o, a, m, -f, -h, k, c, -p, b, l, -g} {l, -i, -c, o, -f, -f, o, -c, -i, l, 0, -l, i, -c, o, f} {j, -m, c, g, -p, f, d, -n, i, a, -k, l, -b, -h, o, -e} {h, -p, i, -a, -g, o, -j, b, f, -n, k, -c, -e, m, -l, d} {f, -l, o, -i, c, c, -i, o, -l, f, 0, -f, l, -o, i, -c} {d, -h, l, -p, m, -i, e, -a, -c, g, -k, o, -n, j, -f, b} {b, -d, f, -h, j, -l, n, -p, o, -m, k, -i, g, -e, c, -a} Here, {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p} = {9, 17, 25, 33, 41, 49, 56, 62, 66, 72, 77, 81, 83, 87, 89, 90} 32 - point DST - 7 {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F} {c, f, i, l, o, r, u, x, A, D, F, C, z, w, t, q, n, k, h, e, b, -a, -d, -g, -j, -m, -p, -s, -v, -y, -B, -E} {e, j, o, t, y, D, D, y, t, o, j, e, 0, -e, -j, -o, -t, -y, -D, -D, -y, -t, -o, -j, -e, 0, e, j, o, t, y, D} {g, n, u, B, D, w, p, i, b, -e, -l, -s, -z, -F, -y, -r, -k, -d, c, j, q, x, E, A, t, m, f, -a, -h, -o, -v, -C} {i, r, A, C, t, k, b, -g, -p, -y, -E, -v, -m, -d, e, n, w, F, x, o, f, -c, -l, -u, -D, -z, -q, -h, a, j, s, B} {k, v, F, u, j, -a, -l, -w, -E, -t, -i, b, m, x, D, s, h, -c, -n, -y, -C, -r, -g, d, o, z, B, q, f, -e, -p, -A} {m, z, z, m, 0, -m, -z, -z, -m, 0, m, z, z, m, 0, -m, -z, -z, -m, 0, m, z, z, m, 0, -m, -z, -z, -m, 0, m, z} {o, D, t, e, -j, -y, -y, -j, e, t, D, o, 0, -o, -D, -t, -e, j, y, y, j, -e, -t, -D, -o, 0, o, D, t, e, -j, -y} {q, E, n, -c, -t, -B, -k, f, w, y, h, -i, -z, -v, -e, l, C, s, b, -o, -F, -p, a, r, D, m, -d, -u, -A, -j, g, x} {s, A, h, -k, -D, -p, c, v, x, e, -n, -F, -m, f, y, u, b, -q, -C, -j, i, B, r, -a, -t, -z, -g, l, E, o, -d, -w} {u, w, b, -s, -y, -d, q, A, f, -o, -C, -h, m, E, j, -k, -F, -l, i, D, n, -g, -B, -p, e, z, r, -c, -x, -t, a, v} {w, s, -d, -A, -o, h, E, k, -l, -D, -g, p, z, c, -t, -v, a, x, r, -e, -B, -n, i, F, j, -m, -C, -f, q, y, b, -u} {y, o, -j, -D, -e, t, -e, -D, -j, o, y, 0, -y, -o, j, D, e, -t, -t, e, D, j, -o, -y, 0, y, o, -j, -D, -e, t} {A, k, -p, -v, e, F, f, -u, -q, j, B, a, -z, -l, o, w, -d, -E, -g, t, r, -i, -C, -b, y, m, -n, -x, c, D, h, -s} {C, g, -v, -n, o, u, -h, -B, a, D, f, -w, -m, p, t, -i, -A, b, E, e, -x, -l, q, s, -j, -z, c, F, d, -y, -k, r} {E, c, -B, -f, y, i, -v, -l, s, o, -p, -r, m, u, -j, -x, g, A, -d, -D, a, F, b, -C, -e, z, h, -w, -k, t, n, -q} {F, -a, -E, b, D, -c, -C, d, B, -e, -A, f, z, -g, -y, h, x, -i, -w, j, v, -k, -u, l, t, -m, -s, n, r, -o, -q, p} {D, -e, -y, j, t, -o, -o, t, j, -y, -e, D, 0, -D, e, y, -j, -t, o, -t, -j, y, e, -D, 0, D, -e, -y, j, t, -o} {B, -i, -s, r, j, -A, -a, C, -h, -t, q, k, -z, -b, D, -g, -u, p, l, -y, -c, E, -f, -v, o, m, -x, -d, F, -e, -w, n} {z, -m, -m, z, 0, -z, m, m, -z, 0, z, -m, -m, z, 0, -z, m, m, -z, 0, z, -m, -m, z, 0, -z, m, -m, -z, 0, z, -m} {x, -q, -g, E, -j, -n, A, -c, -u, t, d, -B, m, k, -D, f, r, -w, -a, y, -p, -h, F, -i, -o, z, -b, -v, s, e, -C, l} {v, -u, -a, w, -t, -b, x, -s, -c, y, -r, -d, z, -q, -e, A, -p, -f, B, -o, -g, C, -n, -h, D, -m, -i, E, -l, -j, F, -k} {t, -y, e, o, -D, j, j, -D, o, e, -y, t, 0, -t, y, -e, -o, D, -j, -j, D, -o, -e, y, -t, 0, t, -y, e, o, -D, j} {r, -C, k, g, -y, v, -d, -n, F, -o, -c, u, -z, h, j, -B, s, -a, -q, D, -l, -f, x, -w, e, m, -E, p, b, -t, A, -i} {p, -F, q, -a, -o, E, -r, b, n, -D, s, -c, -m, C, -t, d, l, -B, u, -e, -k, A, -v, f, j, -z, w, -g, -i, y, -x, h} {n, -B, w, -i, -e, s, -F, r, -d, -j, x, -A, m, a, -o, C, -v, h, f, -t, E, -q, c, k, -y, z, -l, -b, p, -D, u, -g} {l, -x, C, -q, e, g, -s, E, -v, j, b, -n, z, -A, o, -c, -i, u, -F, t, -h, -d, p, -B, y, -m, a, k, -w, D, -r, f} {j, -t, D, -y, o, -e, -e, o, -y, D, -t, j, 0, -j, t, -D, y, -o, e, e, -o, y, -D, t, -j, 0, j, -t, D, -y, o, -e} {h, -p, x, -F, y, -q, i, -a, -g, o, -w, E, -z, r, -j, b, f, -n, v, -D, A, -s, k, -c, -e, m, -u, C, -B, t, -l, d} {f, -l, r, -x, D, -C, w, -q, k, -e, -a, g, -m, s, -y, E, -B, v, -p, j, -d, -b, h, -n, t, -z, F, -A, u, -o, i, -c} {d, -h, l, -p, t, -x, B, -F, C, -y, u, -q, m, -i, e, -a, -c, g, -k, o, -s, w, -A, E, -D, z, -v, r, -n, j, -f, b} {b, -d, f, -h, j, -l, n, -p, r, -t, v, -x, z, -B, D, -F, E, -C, A, -y, w, -u, s, -q, o, -m, k, -i, g, -e, c, -a} Here, {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F} = {4, 9, 13, 17, 21, 26, 30, 34, 38, 42, 45, 50, 53, 56, 60, 63, 66, 68, 72, 74, 77, 78, 80, 82, 84, 85, 86, 88, 88, 89, 90, 90} 4 - point DCT - 8 {a, b, c, d} {b, 0, -b, -b} {c, -b, -d, a} {d, -b, a, -c} Here, {a, b, c, d} = {84, 74, 55, 29} 8-point DCT-8: {a, b, c, d, e, f, g, h,} {b, e, h, -g, -d, -a, -c, -f,} {c, h, -e, -a, -f, g, b, d,} {d, -g, -a, -h, c, e, -f, -b,} {e, -d, -f, c, g, -b, -h, a,} {f, -a, g, e, -b, h, d, -c,} {g, -c, b, -f, -h, d, -a, e,} {h, -f, d, -b, a, -c, e, -g,} Here, {a, b, c, d, e, f, g, h} = {86, 85, 78, 71, 60, 46, 32, 17} 16-point DCT-8 {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p,} {b, e, h, k, n, 0, -n, -k, -h, -e, -b, -b, -e, -h, -k, -n,} {c, h, m, -p, -k, -f, -a, -e, -j, -o, n, i, d, b, g, l,} {d, k, -p, -i, -b, -f, -m, n, g, a, h, o, -l, -e, -c, -j,} {e, n, -k, -b, -h, 0, h, b, k, -n, -e, -e, -n, k, b, h,} {f, 0, -f, -f, 0, f, 0, -f, -f, 0, f, 0, -f, -f, -f,} {g, -n, -a, -m, h, f, -o, -b, -l, i, e, -p, -c, -k, j, d,} {h, -k, -e, n, b, 0, -b, -n, e, k, -h, -h, k, e, -n, -b,} {i, -h, -j, g, k, -f, -l, e, m, -d, -n, c, o, -b, -p, a,} {j, -e, -o, a, -n, -f, i, k, -d, -p, b, -m, -g, h, l, -c,} {k, -b, n, h, -e, 0, e, -h, -n, b, -k, -k, b, -n, -h, e,} {l, -b, i, o, -e, f, -p, -h, c, -m, -k, a, -j, -n, d, -g} {m, -e, d, -l, -n, f, -c, k, o, -g, b, -j, -p, h, -a, i} {n, -h, b, -e, k, 0, -k, e, -b, h, -n, -n, h, -b, e, -k} {o, -k, g, -c, b, -f, j, -n, -p, l, -h, d, -a, e, -i, m} {p, -n, l, -j, h, -f, d, -b, a, -c, e, -g, i, -k, m, -o} Here, {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p} = {90, 89, 87, 83, 81, 77, 72, 66, 62, 56, 49, 41, 33, 25, 17, 9} 32 - point DCT - 8 {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F} {b, e, h, k, n, q, t, w, z, C, F, -E, -B, -y, -v, -s, -p, -m, -j, -g, -d, -a, -c, -f, -i, -l, -o, -r, -u, -x, -A, -D} {c, h, m, r, w, B, 0, -B, -w, -r, -m, -h, -c, -c, -h, -m, -r, -w, -B, 0, B, w, r, m, h, c, c, h, m, r, w, B} {d, k, r, y, F, -A, -t, -m, -f, -b, -i, -p, -w, -D, C, v, o, h, a, g, n, u, B, -E, -x, -q, -j, -c, -e, -l, -s, -z} {e, n, w, F, -y, -p, -g, -c, -l, -u, -D, A, r, i, a, j, s, B, -C, -t, -k, -b, -h, -q, -z, E, v, m, d, f, o, x} {f, q, B, -A, -p, -e, -g, -r, -C, z, o, d, h, s, D, -y, -n, -c, -i, -t, -E, x, m, b, j, u, F, -w, -l, -a, -k, -v} {g, t, 0, -t, -g, -g, -t, 0, t, g, g, t, 0, -t, -g, -t, 0, t, g, g, t, 0, -t, -g, -g, -t, 0, t, g, g, t,} {h, w, -B, -m, -c, -r, 0, r, c, m, B, -w, -h, -h, -w, B, m, c, r, 0, -r, -c, -m, -B, w, h, h, w, -B, -m, -c, -r,} {i, z, -w, -f, -l, -C, t, c, o, F, -q, -a, -r, E, n, d, u, -B, -k, -g, -x, y, h, j, A, -v, -e, -m, -D, s, b, p,} {j, C, -r, -b, -u, z, g, m, F, -o, -e, -x, w, d, p, -E, -l, -h, -A, t, a, s, -B, -i, -k, -D, q, c, v, -y, -f, -n,} {k, F, -m, -i, -D, o, g, B, -q, -e, -z, s, c, x, -u, -a, -v, w, b, t, -y, -d, -r, A, f, p, -C, -h, -n, E, j, l,} {l, -E, -h, -p, A, d, t, -w, -a, -x, s, e, B, -o, -i, -F, k, m, -D, -g, -q, z, c, u, -v, -b, -y, r, f, C, -n, -j,} {m, -B, -c, -w, r, h, 0, -h, -r, w, c, B, -m, -m, B, c, w, -r, -h, 0, h, r, -w, -c, -B, m, m, -B, -c, -w, r, h,} {n, -y, -c, -D, i, s, -t, -h, E, d, x, -o, -m, z, b, C, -j, -r, u, g, -F, -e, -w, p, l, -A, -a, -B, k, q, -v, -f,} {o, -v, -h, C, a, D, -g, -w, n, p, -u, -i, B, b, E, -f, -x, m, q, -t, -j, A, c, F, -e, -y, l, r, -s, -k, z, d,} {p, -s, -m, v, j, -y, -g, B, d, -E, -a, -F, c, C, -f, -z, i, w, -l, -t, o, q, -r, -n, u, k, -x, -h, A, e, -D, -b,} {q, -p, -r, o, s, -n, -t, m, u, -l, -v, k, w, -j, -x, i, y, -h, -z, g, A, -f, -B, e, C, -d, -D, c, E, -b, -F, a} {r, -m, -w, h, B, -c, 0, c, -B, -h, w, m, -r, -r, m, w, -h, -B, c, 0, -c, B, h, -w, -m, r, r, -m, -w, h, B, -c} {s, -j, -B, a, -C, -i, t, r, -k, -A, b, -D, -h, u, q, -l, -z, c, -E, -g, v, p, -m, -y, d, -F, -f, w, o, -n, -x, e} {t, -g, 0, g, -t, -t, g, 0, -g, t, t, -g, 0, g, -t, -t, g, 0, -g, t, t, -g, 0, g, -t, -t, g, 0, -g, t, t, -g} {u, -d, B, n, -k, -E, g, -r, -x, a, -y, -q, h, -F, -j, o, A, -c, v, t, -e, C, m, -l, -D, f, -s, -w, b, -z, -p, i} {v, -a, w, u, -b, x, t, -c, y, s, -d, z, r, -e, A, q, -f, B, p, -g, C, o, -h, D, n, -i, E, m, -j, F, l, -k} {w, -c, r, B, -h, m, 0, -m, h, -B, -r, c, -w, -w, c, -r, -B, h, -m, 0, m, -h, B, r, -c, w, w, -c, r, B, -h, m} {x, -f, m, -E, -q, b, -t, -B, j, -i, A, u, -c, p, F, -n, e, -w, -y, g, -l, D, r, -a, s, C, -k, h, -z, -v, d, -o} {y, -i, h, -x, -z, j, -g, w, A, -k, f, -v, -B, l, -e, u, C, -m, d, -t, -D, n, -c, s, E, -o, b, -r, -F, p, -a, q} {z, -l, c, -q, E, u, -g, h, -v, -D, p, -b, m, -A, -y, k, -d, r, -F, -t, f, -i, w, C, -o, a, -n, B, x, -j, e, -s} {A, -o, c, -j, v, F, -t, h, -e, q, -C, -y, m, -a, l, -x, -D, r, -f, g, -s, E, w, -k, b, -n, z, B, -p, d, -i, u,} {B, -r, h, -c, m, -w, 0, w, -m, c, -h, r, -B, B, r, -h, c, -m, w, 0, -w, m, -c, h, -r, B, B, -r, h, -c, m, -w,} {C, -u, m, -e, d, -l, t, -B, -D, v, -n, f, -c, k, -s, A, E, -w, o, -g, b, -j, r, -z, -F, x, -p, h, -a, i, -q, y,} {D, -x, r, -l, f, -a, g, -m, s, -y, E, C, -w, q, -k, e, -b, h, -n, t, -z, F, B, -v, p, -j, d, -c, i, -o, u, -A,} {E, -A, w, -s, o, -k, g, -c, b, -f, j, -n, r, -v, z, -D, -F, B, -x, t, -p, l, -h, d, -a, e, -i, m, -q, u, -y, C,} {F, -D, B, -z, x, -v, t, -r, p, -n, l, -j, h, -f, d, -b, a, -c, e, -g, i, -k, m, -o, q, -s, u, -w, y, -A, C, -E,} Here, {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F} = {90, 90, 89, 88, 88, 86, 85, 84, 82, 80, 78, 77, 74, 72, 68, 66, 63, 60, 56, 53, 50, 45, 42, 38, 34, 30, 26, 21, 17, 13, 9, 4}
Explanation of Symbols
[0217] 102 Arrow 103 Arrow 104 Square Block 180 Schematic Diagram 201 Current Block 202 Surrounding Sample 203 Surrounding Sample 204 Surrounding Sample 205 Surrounding Sample 206 Surrounding samples 300 Communication system 310 Terminal device 320 Terminal device 330 Terminal device 340 Terminal device 350 Network 400 Communication system 401 Video source 402 Video image stream 403 Video encoder 404 Encoded video data 405 Streaming server 406 Client subsystem 407 Copy 408 Client subsystem 409 Copy 410 Video decoder 411 Output stream of video image 412 Display 413 Capture subsystem 420 Electronic device 430 Electronic device 501 Channel 510 Video decoder 512 Rendering device 515 Buffer memory 520 Parser 521 Symbol 530 Electronic device 531 Receiver 551 Scaler / inverse conversion unit 552 Intra-picture prediction unit 553 Motion compensation prediction unit 555 Aggregator 556 Loop filter unit 557 Reference picture memory 558 Picture buffer 601 Video source 603 Video encoder 620 Electronic device 630 Source encoder 632 Symbolization Engine 633 Decoder 634 Reference Image Memory 635 Predictor 640 Transmitter 643 Encoded Video Sequence 645 Entropy Encoder 650 Controller 660 Communication Channel 703 Video Encoder 721 General-Purpose Controller 722 Intra Encoder 723 Residual Calculator 724 Residual Encoder 725 Entropy Encoder 726 Switch 728 Residual Decoder 730 Inter Encoder 810 Video Decoder 871 Entropy Decoder 872 Intra Decoder 873 Residual Decoder 874 Reconstruction Module 880 Inter Decoder 1110 Residual Block 1112 Coefficient Block 1120 Residual Block 1122 Coefficient Block 1300 Transform Coding Process 1310 First Forward Transformation 1312 Second Forward Transformation 1316 Bitstream 1320 First Inverse Transformation 1322 Second Inverse Transformation 1400 Transform Coding Process 1412 Second Forward Transformation 1501 Process of Reduced Forward Transformation 1502 Process of Reduced Inverse Transformation 1510 Residual Block 1550 Table 1710 Encoding Block 2200 Process 2300 Process 2400 Computer System 2401 Keyboard 2402 Mouse 2403 Track Pad 2405 Joystick 2406 Microphone 2407 Scanner 2408 Camera 2409 Speaker 2410 Touch Screen 2421 Optical Media 2422 Thumb Drive 2423 Solid - State Drive 2440 Core 2443 Field - Programmable Gate Array (FPGA) 2444 Hardware Accelerator for Specific Tasks 2445 Read - Only Memory (ROM) 2446 Random Access Memory 2447 Internal Mass Storage Device 2448 System Bus 2449 Peripheral Bus 2450 Graphics Adapter 2454 Network Interface
Claims
1. A method for video encoding in an encoder, comprising the step of transmitting an encoded video bitstream, the encoded video bitstream comprising: coding information of a coding unit (CU), the coding information indicating a last position of a non-zero transform coefficient of a first coding block (CB) in the CU, the last position indicating whether a secondary transform index is signaled in the coding information; The encoding unit (CU), after the encoding information is obtained by a processor, the processor: Determine whether to perform a secondary transform on a second CB in the CU based on whether it is determined that the secondary transform index is signaled in the coding information; In response to determining that the secondary transformation is to be performed, performing the secondary transformation on the second CB to reconstruct the second CB; In response to determining that the secondary transformation is not to be performed, reconstructing the second CB without performing the secondary transformation on the second CB. A coding unit (CU) used for processing; A method comprising:
2. The method of claim 1 , wherein the first CB is the second CB or the first CB is different from the second CB.
3. Determining whether the secondary transform index is signaled includes: determining whether a horizontal component of the last location is less than a first threshold and a vertical component of the last location is less than a second threshold; 2. The method of claim 1, further comprising: in response to the horizontal component being determined to be less than the first threshold and the vertical component being determined to be less than the second threshold, determining that the secondary transform index is not signaled in the encoding information.
4. Determining whether the secondary transform index is signaled includes: determining whether a sum of a horizontal component and a vertical component of the last position is less than a threshold; 2. The method of claim 1, further comprising: in response to determining that the sum is less than the threshold, determining that the secondary transform index is not signaled in the encoding information.
5. Determining whether the secondary transform index is signaled includes: determining whether a minimum of (i) a horizontal component and (ii) a vertical component of the last position is less than a threshold; 2. The method of claim 1, further comprising: in response to determining that the minimum component is less than the threshold, determining that the secondary transform index is not signaled in the encoding information.
6. Determining whether the secondary transform index is signaled includes: determining whether a maximum of (i) a horizontal component and (ii) a vertical component of the last position is less than a threshold; 2. The method of claim 1, further comprising: in response to determining that the maximum component is less than the threshold, determining that the secondary transform index is not signaled in the encoding information.
7. The first CB is a luminance block; said last position being the last luminance position of said luminance block; determining whether the secondary transform index is signaled further comprises determining whether the secondary transform index is signaled based on the last luminance position. The method of claim 1.
8. The first CB is a luminance block; said last position being the last luminance position of said luminance block; The CU further includes a chroma block, the coding information further indicates a last chroma position of a non-zero transform coefficient for the chroma block; determining whether the secondary transform index is signaled further comprises determining whether the secondary transform index is signaled based on the last luma position and the last chroma position. The method of claim 1.
9. Determining whether a secondary transform index is signaled in the coded information based on the last position comprises:
9. The method of claim 1, comprising: determining whether a secondary transform index is signaled in the coding information based on whether the last position of a non-zero transform coefficient indicates that the first CB in the CU has only zero coefficients or that the first CB in the CU has only one non-zero coefficient in the last coefficient position, wherein in response to the last position of a non-zero transform coefficient indicating that the first CB in the CU has only zero coefficients or that the first CB in the CU has only one non-zero coefficient in the last coefficient position, it is determined that the secondary transform index is not signaled in the coding information.
10. A method for video encoding in an encoder, comprising the step of transmitting an encoded video bitstream, the encoded video bitstream comprising: coding information of a coding unit (CU), the coding information indicating a last position of a non-zero transform coefficient of a first coding block (CB) in the CU, and a comparison between a threshold and a position value based on a coordinate of the last position of the non-zero transform coefficient indicates whether a secondary transform index is signaled in the coding information; The encoding unit (CU), after the encoding information is obtained by a processor, the processor: Determine whether to perform a secondary transform on a second CB in the CU based on whether it is determined that the secondary transform index is signaled in the coding information; In response to determining that the secondary transformation is to be performed, performing the secondary transformation on the second CB to reconstruct the second CB; In response to determining that the secondary transformation is not to be performed, reconstructing the second CB without performing the secondary transformation on the second CB. A coding unit (CU) used for processing; A method comprising:
11. the position value is the horizontal component of the last position; Determining whether the secondary transform index is signaled includes: determining whether the horizontal component of the last location is less than the threshold and whether a vertical component of the last location is less than a second threshold; determining, based on determining that the horizontal component is less than the threshold and determining that the vertical component is less than the second threshold, that the secondary transform index is not signaled in the encoding information; The method of claim 10, comprising:
12. the position value is the sum of a horizontal component of the last position and a vertical component of the last position; Determining whether the secondary transform index is signaled includes: determining whether the sum of the horizontal and vertical components of the last position is less than the threshold; determining that the secondary transform index is not signaled in the encoded information based on the sum being determined to be less than the threshold; The method of claim 10, comprising:
13. the position value is the minimum of the horizontal and vertical components of the last position, Determining whether the secondary transform index is signaled further comprises: determining whether the minimum component is less than the threshold; determining that the secondary transform index is not signaled in the coding information based on the minimum component being determined to be less than the threshold; The method of claim 10, comprising:
14. the position value is the maximum of the horizontal and vertical components of the last position, Determining whether the secondary transform index is signaled includes: determining whether the maximum one of the horizontal and vertical components of the last position is less than the threshold; determining that the secondary transform index is not signaled in the coding information based on the maximum component being determined to be less than the threshold; The method of claim 10, comprising:
15. The first CB is a luminance block; said last position being the last luminance position of said luminance block; The method of claim 10 , wherein the position value is one of a horizontal component of the last luminance position or a vertical component of the last luminance position.
16. The first CB is a luminance block; said last position being the last luminance position of said luminance block; The CU further includes a chroma block, the coding information further indicates a last chroma position of a non-zero transform coefficient for the chroma block; the combined horizontal value is the sum of the horizontal component of the last luma location and the horizontal component of the last chroma location; a combined vertical value is the sum of the vertical component of the last luma location and the vertical component of the last chroma location; The method of claim 10 , wherein the position value is one of the combined horizontal values or the combined vertical values.