Method, device, computer device and storage medium for generating an encoded video bitstream

CN117528083BActive Publication Date: 2026-10-09TENCENT AMERICA LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202311726860.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-04-02
Filing Date
2020-04-03
Publication Date
2026-10-09
Estimated Expiration
2040-04-03

AI Technical Summary

Technical Problem

在其他情况下,例如由于根据多个周围MV计算预测值时出现舍入误差,MV预测本身可以是有损的

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN117528083B_ABST
    Figure CN117528083B_ABST
Patent Text Reader

Abstract

The application provides a method, device, computer equipment and storage medium for generating an encoded video bitstream. The method comprises determining encoding information of a coding unit (CU). The encoding information indicates a last position of a plurality of non-zero transform coefficients of a first coding block (CB) in the CU. The processing circuit determines whether a secondary transform index is signaled in the encoding information based on the last position, and determines whether to perform a secondary transform on a second CB based on the determination of whether the secondary transform index is signaled in the encoding information. In response to the determination of performing the secondary transform, the secondary transform is performed on the second CB and the second CB is encoded to generate an encoded video bitstream; and in response to the determination of not performing the secondary transform, the second CB is encoded without performing the secondary transform on the second CB to generate an encoded video bitstream.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of an voluntary amendment to the Chinese patent application filed on April 3, 2020, with application number 202080019613.3 and title "Method and Apparatus for Video Encoding and Decoding". Technical Field

[0002] This application describes embodiments that generally relate to video encoding and decoding. Background Technology

[0003] The background description provided herein is for the purpose of presenting the general content of this disclosure. The extent of the work of the currently named inventors described in the background section and various aspects of this specification does not indicate that it was prior art at the time of filing of this application, nor is it expressly or implied that it was acknowledged as prior art of this application.

[0004] Video encoding and decoding can be performed using inter-frame picture prediction with motion compensation. Uncompressed digital video can comprise a series of pictures, each with a spatial size of, for example, 1920×1080 luma samples and associated chroma samples. This series of pictures can have a fixed or variable picture rate (also informally referred to as the frame rate), for example, 60 pictures per second or 60 Hz. Uncompressed video has very high bit rate requirements. For example, 1080p60 4:2:0 video with 8 bits per sample (1920x1080 luma sample resolution at 60 Hz frame rate) requires close to 1.5 Gbit / s of bandwidth. One hour of such video would require more than 600 GB of storage space.

[0005] One objective of video encoding and decoding is to reduce redundancy in the input video signal through compression. Compression can help reduce the aforementioned bandwidth or storage requirements, in some cases by two orders of magnitude or more. Lossless compression, lossy compression, and combinations thereof can be employed. Lossless compression refers to a technique that reconstructs an exact copy of the original signal from the compressed original signal. When using lossy compression, the reconstructed signal may differ from the original signal, but the distortion between the original and reconstructed signals is small enough that the reconstructed signal can be used for the intended application. In the case of video, lossy compression is widely used. The tolerable amount of distortion depends on the application; for example, users of some consumer streaming applications may tolerate higher distortion than users of television-contributing applications. The achievable compression ratio can be reflected in the fact that higher tolerable / acceptable distortion can result in a higher compression ratio.

[0006] Video encoders and decoders can utilize a wide range of techniques, including motion compensation, transform, quantization, and entropy coding.

[0007] Video codec techniques can include techniques called intra-frame coding. In intra-frame coding, sample values ​​are represented without reference to samples or other data from previously reconstructed reference images. In some video codecs, an image is spatially subdivided into sample blocks. When all sample blocks are encoded in intra-frame mode, the image can be an intra-frame image. Intra-frame images and their derivatives (such as independent decoder refresh images) can be used to reset the decoder state and therefore can be used as the first image in the encoded video bitstream and video session, or as still images. Samples of intra-frame blocks can be transformed, and the transform coefficients can be quantized before entropy coding. Intra-frame prediction can be a technique that minimizes sample values ​​in the pre-transform domain. In some cases, the smaller the transformed DC value and the smaller the AC coefficients, the fewer bits are needed to represent the entropy-coded block for a given quantization step size.

[0008] Traditional intra-frame coding, as known from technologies such as MPEG-2, does not use intra-frame prediction. However, some newer video compression techniques include attempts to utilize, for example, surrounding sample data and / or metadata, which are spatially adjacent data blocks that are decoded first in the decoding order, during the encoding / decoding process. Such techniques are hereinafter referred to as "intra-frame prediction" techniques. Note that, at least in some cases, intra-frame prediction uses only reference data from the current frame being reconstructed, and not reference data from a reference frame.

[0009] Intra-frame prediction can take many different forms. When more than one such technique can be used in a given video coding technique, the technique in use can be encoded in an intra-frame prediction mode. In some cases, a mode can have sub-modes and / or parameters, and these sub-modes and / or parameters can be encoded separately or included in the mode codeword. Which codeword is used for a given combination of mode / sub-mode / parameters can affect the coding efficiency gain through intra-frame prediction, and therefore the entropy coding technique used to convert the codeword into a bitstream can also have an impact.

[0010] H.264 introduced a certain intra-frame prediction mode, which was improved in H.265 and further refined in new coding techniques such as the Joint Exploration Model (JEM), Versatile Video Coding (VVC), and Benchmark Set (BMS). Predictor blocks can be formed using neighboring sample values ​​belonging to already available samples. The sample values ​​of neighboring samples are copied into the predictor block according to the direction. The reference to the direction used can be encoded in the bitstream or can be predicted from itself.

[0011] Reference Figure 1A The lower right corner depicts a subset of nine predictor directions derived from the 33 possible predictor directions of H.265 (corresponding to 33 angular modes out of 35 intra-frame modes). The point where the arrow converges (101) represents the sample being predicted. The arrow indicates the direction of the sample being predicted. For example, arrow (102) indicates predicting sample (101) from one or more samples in the upper right direction at a 45-degree angle to the horizontal. Similarly, arrow (103) indicates predicting sample (101) from one or more samples in the lower left direction at a 22.5-degree angle to the horizontal.

[0012] Still referencing Figure 1A A 4x4 square block (104) containing samples is depicted in the upper left corner (represented by a bold dashed line). The square block (104) contains 16 samples, each labeled with "S" and its position in the Y dimension (e.g., row index) and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample in the Y dimension (from the top) and the first sample in the X dimension (from the left). Similarly, sample S44 is the fourth sample in block (104) in both the Y and X dimensions. Since the block size is 4x4 samples, S44 is in the lower right corner. Reference samples are also shown in Figure 1, following a similar numbering scheme. Reference samples are labeled with R and their Y position (e.g., row index) and X position (column index) relative to block (104). In both H.264 and H.265, the predicted samples are adjacent to the block being reconstructed, therefore, negative values ​​are not required.

[0013] Intra-frame image prediction works by copying reference sample values ​​from adjacent samples occupied by the prediction direction indicated by the signal. For example, suppose the encoded video bitstream includes signaling that indicates a prediction direction consistent with arrow (102) for the block, meaning that samples are predicted from one or more prediction samples at a 45-degree angle to the upper right corner of the horizontal direction. In this case, samples S41, S32, S23, and S14 are predicted from the same reference sample R05. Then, sample S44 is predicted based on reference sample R08.

[0014] In some cases, the values ​​of multiple reference samples can be combined, for example, by interpolation, in order to calculate the reference sample, especially when the direction is not divisible by 45 degrees.

[0015] With the development of video coding technology, the number of possible directions has increased. In H.264 (2003), nine different directions could be represented. This number increased to 33 in H.265 (2013), and at the time of this disclosure, JEM / VVC / BMS supports up to 65 directions. Experiments have been conducted to identify the most likely directions, and certain techniques in entropy coding have been used to represent those possible directions with a small number of bits, accepting a certain cost for less likely directions. Furthermore, the direction itself can sometimes be predicted based on neighboring directions used in already decoded neighboring blocks.

[0016] Figure 1B This is a schematic diagram (180) showing 65 intra-frame prediction directions based on JEM, thus illustrating the number of prediction directions that increase over time.

[0017] The mapping of intra-predicted direction bits representing direction in the encoded video bitstream can vary depending on the video coding technique. For example, the mapping can range from a simple direct mapping from predicted direction to intra-predicted mode to codewords, to complex adaptive schemes involving the most probable modes and similar techniques. However, in all cases, there may be some directions that are statistically less likely to occur in the video content compared to others. Since the goal of video compression is to reduce redundancy, in well-functioning video coding techniques, those less likely directions will be represented by a larger number of bits compared to the more likely directions.

[0018] Video encoding and decoding can be performed using inter-frame image prediction with motion compensation. Motion compensation can be a lossy compression technique and can involve using blocks of sample data from a previously reconstructed image or a portion thereof (the reference image) spatially offset along a direction indicated by a motion vector (hereinafter referred to as MV) to predict the newly reconstructed image or image portion. 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, with the third dimension indicating the reference image being used (the latter can indirectly be a temporal dimension).

[0019] In some video compression techniques, the MV applicable to a region of the sample data can be predicted based on other MVs, such as MVs related to another region of the sample data that is spatially adjacent to the region being reconstructed and whose decoding order precedes that MV. This significantly reduces the amount of data required to encode the MV, thereby eliminating redundancy and increasing compression ratio. MV prediction can work effectively, for example, because when encoding the input video signal (called natural video) obtained from the camera, there is a statistical probability that a region larger than the region applicable to a single MV moves in similar directions. Therefore, in some cases, the larger region can be predicted using similar motion vectors derived from the MVs of adjacent regions. This makes the MV found for a given region similar to or the same as the MV predicted based on the surrounding MVs, and thus, after entropy encoding, the MV found for the given region can be represented with fewer bits than when directly encoding the MV. In some cases, MV prediction can be an example of lossless compression of the signal (i.e., the MV) derived from the original signal (i.e., the sample stream). In other cases, MV prediction itself can be lossy, for example, due to rounding errors when calculating predictions based on multiple surrounding MVs.

[0020] H.265 / HEVC (ITU-T H.265 Recommendation, “High Efficiency Video Coding”, December 2016) describes various MV prediction mechanisms. Among the various MV prediction mechanisms provided by H.265, this application describes the technique referred to below as “spatial combining”.

[0021] Reference Figure 2 The current block (201) includes samples that have been discovered by the encoder during motion search processing, and these samples can be predicted based on previous blocks of the same size that have generated spatial offsets. Instead of directly encoding the MV, the MV can be derived from metadata associated with one or more reference images, for example, from the metadata of the nearest reference image (in decoding order), using the MV associated with any of the five surrounding samples labeled A0, A1 and B0, B1, B2 (corresponding to 202 to 206, respectively). In H.265, MV prediction can use predictions from the same reference images that are also being used in adjacent blocks. Summary of the Invention

[0022] This application provides a method for generating an encoded video stream, including:

[0023] Determine the encoding information of the coding unit (CU), the encoding information indicating the last position of the non-zero transform coefficients of the first coding block (CB) in the CU; Based on the last position, it is determined whether the second-order transform index was notified by signal in the encoded information. When the number of non-zero transform coefficients at the last position is 1 or 0, the second-order transform index is not notified by signal. Based on whether the secondary transformation index was notified by a signal in the encoded information, it is determined whether to perform a secondary transformation on the second CB in the CU; In response to determining to perform the second transformation, the second transformation is performed on the second CB and the second CB is encoded to generate an encoded video stream; and In response to determining that the second transformation is not to be performed, the second CB is encoded without performing the second transformation on the second CB to generate an encoded video stream.

[0024] In some embodiments, this application also provides an apparatus for generating an encoded video stream, including a processing circuit configured to perform the method for generating an encoded video stream as described in this application.

[0025] In some embodiments, this application also provides an apparatus for generating an encoded video stream, comprising: An encoding module is used to determine the encoding information of an encoding unit (CU), the encoding information indicating the last position of the non-zero transform coefficients of the first encoding block (CB) in the CU; The determining module is used to determine, based on the last position, whether the second-order transform index has been notified by signal in the encoded information, wherein when the number of non-zero transform coefficients at the last position is 1 or 0, the second-order transform index is not notified by signal; Based on determining whether the secondary transform index was notified by a signal in the encoded information, it is determined whether to perform a secondary transform on the second CB in the CU, wherein the secondary transform is an inverse secondary transform; The encoding module is further configured to, in response to determining that the second transformation will be performed, perform the second transformation on the second CB and encode the second CB; and in response to determining that the second transformation will not be performed, encode the second CB without performing the second transformation on the second CB to generate an encoded video stream.

[0026] In some embodiments, this application also provides a non-transitory computer-readable medium storing instructions and an encoded video stream. When the instructions are executed by a computer to perform video encoding, the computer performs the method for generating an encoded video stream as described in this application to generate a bitstream.

[0027] In some embodiments, this application also provides a computer device including a processor and a memory, wherein the memory stores instructions and a bit stream, and when the instructions are executed by the processor, the method for generating an encoded video bit stream as described in this application is implemented. Attached Figure Description

[0028] Other features, properties, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings, wherein: Figure 1A This is a schematic diagram of an exemplary subset of intra-frame prediction modes.

[0029] Figure 1B This is an illustration of an exemplary intra-frame prediction direction.

[0030] Figure 2 This is a schematic diagram of the current block and its surrounding space as merge candidates in an example.

[0031] Figure 3 This is a simplified block diagram of a communication system according to one embodiment.

[0032] Figure 4 This is a simplified block diagram of a communication system according to one embodiment.

[0033] Figure 5 This is a simplified block diagram of a decoder according to one embodiment.

[0034] Figure 6 This is a simplified block diagram of an encoder according to one embodiment.

[0035] Figure 7 A block diagram of an encoder according to another embodiment is shown.

[0036] Figure 8 A block diagram of a decoder according to another embodiment is shown.

[0037] Figure 9 An example of the transformation unit syntax according to one embodiment is shown.

[0038] Figures 10A to 10C An example of a residual coding syntax according to one embodiment is shown.

[0039] Figures 11A to 11B An example of a primary transformation according to one embodiment is shown.

[0040] Figures 12A to 12E An example of a transformation process according to one embodiment is shown.

[0041] Figure 13 An exemplary transformation encoding process is shown.

[0042] Figure 14 An exemplary transformation encoding process is shown.

[0043] Figure 15A An exemplary process for the forward transformation of reduction and an exemplary process for the inverse transformation of reduction are shown.

[0044] Figures 15B to 15C An example of a reduced quadratic transformation according to some embodiments is shown.

[0045] Figure 15D An exemplary transform set selection table is shown.

[0046] Figure 16A An illustration shows an exemplary intra-prediction direction and intra-prediction mode according to one embodiment.

[0047] Figure 16B An illustration shows an exemplary intra-prediction direction and corresponding intra-prediction mode according to one embodiment.

[0048] Figure 17 An example of four reference lines for encoding blocks according to one embodiment is shown.

[0049] Figure 18 A table is shown that associates the number of sub-partitions with the block size according to one embodiment.

[0050] Figure 19 Examples of sub-partitions of blocks with a size of 4×8 or 8×4 are shown.

[0051] Figure 20 Another example of a sub-partition of a block with a size greater than 4×8 and 8×4 is shown.

[0052] Figures 21A to 21D Examples of different YUV formats are shown.

[0053] Figure 22 A flowchart outlining a process according to one embodiment is shown.

[0054] Figure 23 A flowchart outlining a process according to one embodiment is shown.

[0055] Figure 24 This is a schematic diagram of a computer system according to one embodiment. Detailed Implementation

[0056] Figure 3A simplified block diagram of a communication system (300) according to an embodiment of this application is shown. The communication system (300) includes a plurality of terminal devices capable of communicating with each other via, for example, a network (350). For example, the communication system (300) includes a first pair of terminal devices (310) and (320) interconnected via the network (350). Figure 3 In the example, the first pair of terminal devices (310) and (320) perform unidirectional data transmission. For example, terminal device (310) may encode video data (e.g., a video image stream captured by terminal device (310)) for transmission via network (350) to another terminal device (320). The encoded video data may be transmitted in the form of one or more encoded video bitstreams. Terminal device (320) may receive the encoded video data from network (350), decode the encoded video data to recover the video images, and display the video images based on the recovered video data. Unidirectional data transmission may be common in media service applications, etc.

[0057] 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, such as that that may occur during a video conference. For bidirectional data transmission, 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 via a network (350) to the other terminal device (330) and (340). Each of the terminal devices (330) and (340) can also receive encoded video data sent by the other terminal device (330) and (340), and can decode the encoded video data to recover the video images, and can display the video images on an accessible display device based on the recovered video data.

[0058] exist Figure 3In the examples, terminal devices (310), (320), (330), and (340) can be represented as servers, personal computers, and smartphones, but the principles disclosed herein are not limited to these. The embodiments disclosed herein can be applied to laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. Network (350) refers to any number of networks that transmit encoded video data between terminal devices (310), (320), (330), and (340), including, for example, wired (connected) and / or wireless communication networks. Communication networks (350) can exchange data in circuit-switched and / or packet-switched channels. Representative networks include telecommunications networks, local area networks (LANs), wide area networks (WANs), and / or the Internet. For the purposes of this application, unless explained below, the structure and topology of the network (350) may be irrelevant to the operation of this application.

[0059] As an example of the application to the disclosed topic, Figure 4 This illustrates the placement of video encoders and decoders in a streaming environment. The disclosed principles can also be applied to other video-enabled applications, including video conferencing, digital television, and storing compressed video on digital media such as CDs, DVDs, and Memory Sticks.

[0060] The streaming system may include an acquisition subsystem (413), which may include a video source (401) that creates, for example, an uncompressed video picture stream (402), such as a digital camera. In one example, the video picture stream (402) includes samples captured by a digital camera. An electronics device (420) including a video encoder (403) coupled to the video source (401) can process the video picture stream (402), which is depicted as thick lines to emphasize its high data volume, compared to encoded video data (404) (or encoded video bitstream). The video encoder (403) may include hardware, software, or a combination thereof to implement or enforce aspects of the disclosed subject matter as described in more detail below. The encoded video data (404) (or encoded video bitstream (404)), depicted as thin lines to emphasize its lower data volume, compared to the video picture stream (402), may be stored in a streaming server (405) for future use. One or more streaming client subsystems, such as... Figure 4Client subsystems (406) and (408) can access a streaming server (405) to retrieve copies (407) and (409) of encoded video data (404). Client subsystem (406) may include, for example, a video decoder (410) in an electronic device (430). The video decoder (410) decodes the input copy (407) of the encoded video data and creates an output video picture stream (411) that can be presented on a display (412) (e.g., a screen) or other presentation device (not shown). In some streaming systems, the encoded video data (404), encoded video data (407), and encoded video data (409) (e.g., a video bitstream) may be encoded according to certain video coding / compression standards. Examples of such standards include ITU-T Recommendation H.265. In one example, the video coding standard under development is informally referred to as Versatile Video Coding (VVC). The topics disclosed can be used in the context of VVC.

[0061] It should be noted that electronic devices (420) and (430) may include other components (not shown). For example, electronic device (420) may include a video decoder (not shown), and electronic device (430) may also include a video encoder (not shown).

[0062] Figure 5 A block diagram of a video decoder (510) according to an embodiment of this application is shown. The video decoder (510) may be included in an electronic device (530). The electronic device (530) may include a receiver (531) (e.g., receiving circuitry). The video decoder (510) may be used instead of... Figure 4 The example video decoder (410).

[0063] The receiver (531) can receive one or more encoded video sequences to be decoded by the video decoder (510); in the same embodiment or another embodiment, one encoded video sequence is received at a time, wherein the decoding of each encoded video sequence is independent of the other encoded video sequences. The encoded video sequences can be received from a channel (501), which can be a hardware / software link to a storage device storing the encoded video data. The receiver (531) can receive encoded video data and other data, such as encoded audio data and / or auxiliary data streams, that can be forwarded to their respective user entities (not shown). The receiver (531) can separate the encoded video sequences from other data. To prevent network jitter, a buffer memory (515) can be coupled between the receiver (531) and the entropy decoder / parser (520) (hereinafter referred to as "parser (520)"). In some applications, the buffer memory (515) is part of the video decoder (510). In other embodiments, the buffer memory (515) can be located external to the video decoder (510) (not shown). In other embodiments, an external buffer memory (not shown) is provided for the video decoder (510) to prevent network jitter, for example, and another buffer memory (515) may be configured internally for, for example, handling broadcast timing. The buffer memory (515) may not be necessary when the receiver (531) receives data from a store / forward device with sufficient bandwidth and controllability or from a synchronous network, or it may be made smaller. For use on packet networks such as the Internet, a buffer memory (515) may also be required; this buffer memory may be relatively large and advantageously have an adaptive size, and may be at least partially implemented in the operating system or a similar element (not shown) external to the video decoder (510).

[0064] The video decoder (510) may include a parser (520) to reconstruct symbols (521) from the encoded video sequence. These symbols may include information for managing the operation of the video decoder (510), and potential information for controlling a display device (512) (e.g., a display screen), which is not integral to the electronic device (530) but may be coupled to it, such as... Figure 5As shown in the diagram. The control information used for the display device may be a parameter set fragment (not indicated) of Supplemental Enhancement Information (SEI message) or Video Usability Information (VUI). The parser (520) can parse / entropy decode the received encoded video sequence. The encoding of the encoded video sequence may be based on video coding techniques or standards and may follow various principles, including variable-length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (520) may extract a subgroup parameter set of at least one subgroup of pixels in the subgroups of pixels in the encoded video sequence for use in the video decoder based on at least one parameter corresponding to a group. The subgroup may include Group of Pictures (GOP), picture, tile, slice, macroblock, coding unit (CU), block, transform unit (TU), prediction unit (PU), etc. The parser (520) can also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.

[0065] The parser (520) can perform entropy decoding / parsing operations on the video sequence received from the buffer memory (515) to create symbols (521).

[0066] Depending on the type of encoded video frames or a subset of encoded video frames (e.g., inter-frame and intra-frame frames, inter-frame and intra-frame blocks) and other factors, the reconstruction of the symbol (521) may involve multiple different units. Which units are involved and how they are involved can be controlled by the subgroup control information parsed from the encoded video sequence by the parser (520). For brevity, the flow of such subgroup control information between the parser (520) and the various units described below is not described.

[0067] In addition to the functional blocks already mentioned, the video decoder (510) can be conceptually subdivided into several functional units as described below. In practical embodiments 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 purposes of describing the disclosed subject matter, it is appropriate to conceptually subdivide it into the functional units described below.

[0068] The first unit is the scaler / inverse transform unit (551). The scaler / inverse transform unit (551) receives quantization transform coefficients as symbols (521) from the parser (520) and control information, including the transform method used, block size, quantization factor, quantization scaling matrix, etc. The scaler / inverse transform unit (551) can output a block containing sample values, which can be input into the aggregator (555).

[0069] In some cases, the output samples of the scaler / inverse transform unit (551) may belong to intra-coded blocks; that is, blocks that do not use predictive information from previously reconstructed images, but can use predictive information from previously reconstructed portions of the current image. Such predictive information may be provided by the intra-picture prediction unit (552). In some cases, the intra-picture prediction unit (552) generates blocks of the same size and shape as the blocks being reconstructed, using surrounding reconstructed information extracted from the current picture buffer (558). For example, the current picture buffer (558) buffers partially reconstructed current images and / or fully reconstructed current images. In some cases, the aggregator (555) adds the predictive information generated by the intra-picture prediction unit (552) to the output sample information provided by the scaler / inverse transform unit (551) based on each sample.

[0070] In other cases, the output samples of the scaler / inverse transform unit (551) may belong to inter-frame coding and latent motion compensation blocks. In this case, the motion compensation prediction unit (553) may access the reference image memory (557) to extract samples for prediction. After motion compensation of the extracted samples according to the symbols (521) belonging to the block, these samples may be added by the aggregator (555) to the output of the scaler / inverse transform unit (551) (referred to as residual samples or residual signals in this case) to generate output sample information. The motion compensation prediction unit (553) may obtain the predicted samples from the address in the reference image memory (557) under motion vector control, and the motion vector is available to the motion compensation prediction unit (553) in the form of symbols (521), which may have, for example, X, Y and reference image components. Motion compensation may also include interpolation of sample values ​​extracted from the reference image memory (557) when using subsample precise motion vectors, motion vector prediction mechanisms, etc.

[0071] The output samples of the aggregator (555) can be subjected to various loop filtering techniques in the loop filter unit (556). Video compression techniques may include in-loop filtering techniques controlled by parameters included in the encoded video sequence (also known as the encoded video bitstream) and available to the loop filter unit (556) as symbols (521) from the parser (520), but the video compression techniques may also respond to metadata obtained during decoding of a previous (in decoding order) portion of the encoded picture or encoded video sequence, and to previously reconstructed and loop-filtered sample values.

[0072] The output of the loop filter unit (556) can be a sample stream, which can be output to a display device (512) and stored in a reference image memory (557) for subsequent inter-frame image prediction.

[0073] Once fully reconstructed, certain encoded images can be used as reference images for future predictions. For example, once the encoded images corresponding to the current image have been fully reconstructed and the encoded images (by, for example, the parser (520)) are identified as reference images, the current image buffer (558) can become part of the reference image memory (557), and a new current image buffer can be reallocated before the reconstruction of subsequent encoded images begins.

[0074] The video decoder (510) can perform decoding operations according to a predetermined video compression technique, such as that specified in the ITU-T H.265 standard. The encoded video sequence may conform to the syntax specified by the video compression technique or standard in the sense that the encoded video sequence follows the syntax of the video compression technique or standard and the configuration file recorded in the video compression technique or standard. Specifically, the configuration file may select certain tools from all available tools in the video compression technique or standard as the only tools available under that configuration file. For compliance, the complexity of the encoded video sequence is also required to be within the limits defined by the hierarchy of the video compression technique or standard. In some cases, the hierarchy limits the maximum image size, maximum frame rate, maximum reconstruction sampling rate (measured in megasamples per second, for example), maximum reference image size, etc. In some cases, the limitations set by the hierarchy can be further limited by the Hypothetical Reference Decoder (HRD) specification and the metadata managed by the HRD buffer, which is represented by signals in the encoded video sequence.

[0075] In this embodiment, the receiver (531) may receive additional (redundant) data along with the encoded video. This 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 may take the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant images, forward error correction codes, etc.

[0076] Figure 6 This is a block diagram of a video encoder (603) according to an embodiment disclosed in this application. The video encoder (603) is included in an electronic device (620). The electronic device (620) includes a transmitter (640) (e.g., transmission circuitry). The video encoder (603) can be used in place of... Figure 4 The example video encoder (403).

[0077] The video encoder (603) can obtain data from the video source (601) (not...). Figure 6 In one embodiment, a portion of the electronic device (620) receives video samples, the video source being capable of capturing video images to be encoded by a video encoder (603). In another embodiment, the video source (601) is a portion of the electronic device (620).

[0078] A video source (601) can provide a sequence of source video samples to be encoded by a video encoder (603) in the form of a digital video sample stream, which can have any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, etc.), any color space (e.g., BT.601 YCrCb, RGB, etc.), and any suitable sampling structure (e.g., YCrCb 4:2:0, YCrCb 4:4:4). In a media service system, the video source (601) can be a storage device storing previously prepared video. In a video conferencing system, the video source (601) can be a camera that captures local image information as a video sequence. Video data can be provided as multiple individual pictures, which are given motion when viewed in sequence. The pictures themselves can be constructed as spatial pixel arrays, where each pixel can include one or more samples depending on the sampling structure, color space, etc., used. Those skilled in the art can easily understand the relationship between pixels and samples. The following focuses on describing samples.

[0079] According to an embodiment, the video encoder (603) can encode and compress images of a source video sequence into an encoded video sequence (643) in real time or under any other time constraints required by the application. Implementing an appropriate encoding rate is a function of the controller (650). In some embodiments, the controller (650) controls and is functionally coupled to other functional units described below. For simplicity, coupling is not shown in the figures. Parameters set by the controller (650) may include rate control related parameters (image skipping, quantizer, λ value of rate-distortion optimization techniques, etc.), image size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (650) may be configured to have other suitable functions related to the video encoder (603) optimized for a particular system design.

[0080] In some embodiments, the video encoder (603) is configured to operate within an encoding loop. As a simplified description, in this example, the encoding loop may include a source encoder (630) (e.g., responsible for creating symbols, such as a symbol stream, based on the input image to be encoded and a reference image) and a (local) decoder (633) embedded within the video encoder (503). The decoder (633) reconstructs the symbols to create sample data in a manner similar to how the (remote) decoder creates sample data (since any compression between the symbols and the encoded video stream is lossless in the video compression techniques considered in the disclosed subject matter). The reconstructed sample stream (sample data) is input to a reference image memory (634). Since decoding of the symbol stream produces bit-precise results independent of the decoder's location (local or remote), the contents of the reference image memory (634) also correspond bit-precisely between the local and remote encoders. In other words, the reference image samples "seen" by the encoder's prediction portion are exactly the same sample values ​​that the decoder will "see" when using the prediction during decoding. This fundamental principle of reference image synchronization (and the drift that occurs when synchronization cannot be maintained, for example, due to channel errors) is also used in some related technologies.

[0081] The operation of the “local” decoder (633) can be combined with, for example, the above-mentioned Figure 5 The video decoder (510) is described in detail as the same as the "remote" decoder. However, a further brief reference is provided. Figure 5 When symbols are available and the entropy encoder (645) and parser (520) are able to encode / decode the symbols into an encoded video sequence without loss, the entropy decoding portion of the video decoder (510), including the buffer (515) and parser (520), may not be fully implemented in the local decoder (633).

[0082] It can be observed that any decoder technique other than parsing / entropy decoding, which exists in the decoder, must also exist in the corresponding encoder in essentially the same functional form. For this reason, the disclosed subject focuses on decoder operation. The description of encoder techniques can be simplified, as encoder techniques are inverses of the fully described decoder techniques. More detailed descriptions are only required in certain areas, and are provided below.

[0083] During operation, in some examples, the source encoder (630) may perform motion-compensated predictive coding. This motion-compensated predictive coding predictively encodes the input image, referencing one or more previously encoded images from the video sequence designated as "reference images." In this manner, the encoding engine (632) encodes the differences between pixel blocks of the input image and pixel blocks of the reference image, which may be selected as a predictive reference for the input image.

[0084] The local video decoder (633) can decode encoded video data that can be designated as a reference picture based on symbols created by the source encoder (630). The operation of the encoding engine (632) can advantageously be a lossy process. When the encoded video data can be decoded by the video decoder (630) Figure 6 When the source video sequence (not shown) is decoded, the reconstructed video sequence can typically be a copy of the source video sequence with some errors. The local video decoder (633) replicates the decoding process, which can be performed by the video decoder on the reference image, and allows the reconstructed reference image to be stored in a reference image cache (634). In this way, the video encoder (603) can locally store a copy of the reconstructed reference image that shares the same content (no transmission errors) as the reconstructed reference image to be obtained by the remote video decoder.

[0085] The predictor (635) can perform a prediction search against the encoding engine (632). That is, for a new image to be encoded, the predictor (635) can search in the reference image memory (634) for sample data (as candidate reference pixel blocks) or certain metadata, such as reference image motion vectors, block shapes, etc., that can serve as appropriate prediction references for the new image. The predictor (635) can operate pixel-by-pixel based on the sample blocks to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor (635), the input image may have prediction references obtained from multiple reference images stored in the reference image memory (634).

[0086] The controller (650) can manage the encoding operations of the source encoder (630), including, for example, setting parameters and subgroup parameters for encoding video data.

[0087] The outputs of all the above functional units can be entropy encoded in the entropy encoder (645). The entropy encoder (645) performs lossless compression on the symbols generated by the various functional units according to techniques such as Huffman coding, variable length coding, and arithmetic coding, thereby converting the symbols into an encoded video sequence.

[0088] The transmitter (640) can buffer the encoded video sequence created by the entropy encoder (645) in preparation for transmission via a communication channel (660), which may be a hardware / software link to a storage device that will store the encoded video data. The transmitter (640) can combine the encoded video data from the video encoder (603) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (source not shown).

[0089] The controller (650) manages the operation of the video encoder (603). During encoding, the controller (650) can assign a specific encoded image type to each encoded image, but this may affect the encoding techniques applicable to the corresponding images. For example, images can typically be assigned to any of the following image types: An intra-frame picture (I-picture) is a picture that can be encoded and decoded without using any other pictures in the sequence as a prediction source. Some video codecs allow different types of intra-frame pictures, including, for example, Independent Decoder Refresh (IDR) pictures. Those skilled in the art are familiar with variations of I-pictures and their corresponding applications and characteristics.

[0090] A predictive picture (P-picture) can be a picture that can be encoded and decoded using intra-frame prediction or inter-frame prediction, which uses at most one motion vector and reference index to predict sample values ​​for each block.

[0091] Bidirectional predictive images (B-images) can be images that can be encoded and decoded using intra-frame or inter-frame prediction, which uses at most two motion vectors and a reference index to predict sample values ​​for each block. Similarly, multiple predictive images can use more than two reference images and associated metadata to reconstruct a single block.

[0092] Source images are typically spatially subdivided into multiple sample blocks (e.g., 4×4, 8×8, 4×8, or 16×16 sample blocks), and encoded block by block. These blocks can be predictively coded with reference to other (already coded) blocks, which are determined by the coding assignment of the corresponding images applied to the block. For example, a block of an I-image can be non-predictively coded, or the block can be predictively coded (spatial prediction or intra-frame prediction) with reference to already coded blocks of the same image. A pixel block of a P-image can be predictively coded with reference to a previously coded reference image via spatial prediction or temporal prediction. A block of a B-image can be predictively coded with reference to one or two previously coded reference images via spatial prediction or temporal prediction.

[0093] The video encoder (603) can perform encoding operations according to a predetermined video coding technique or standard, such as ITU-T H.265 Recommendation. In operation, the video encoder (603) can perform various compression operations, including predictive coding operations utilizing temporal and spatial redundancy in the input video sequence. Therefore, the encoded video data can conform to the syntax specified by the video coding technique or standard used.

[0094] In this embodiment, the transmitter (640) may transmit additional data while transmitting encoded video. The source encoder (630) may include such data as part of the encoded video sequence. The additional data may include other forms of redundant data such as temporal / spatial / SNR enhancement layers, redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.

[0095] The captured video can be presented as multiple source images (video images) in a time-series format. Intra-frame image prediction (often simplified to intra-frame prediction) utilizes spatial correlations within a given image, while inter-frame image prediction utilizes (temporal or other) correlations between images. In the example, a specific image being encoded / decoded is segmented into blocks; this specific image being encoded / decoded is called the current image. When a block in the current image resembles a reference block in a previously encoded and still buffered reference image in the video, the block in the current image can be encoded using a vector called a motion vector. This motion vector points to the reference block in the reference image, and when using multiple reference images, the motion vector can have a third dimension that identifies the reference image.

[0096] In some embodiments, bidirectional prediction techniques can be used in inter-frame image prediction. According to bidirectional prediction, two reference images are used, such as a first reference image and a second reference image that precede the current image in the video in decoding order (but may be past and future in display order, respectively). A block in the current image can be encoded using a first motion vector pointing to a first reference block in the first reference image and a second motion vector pointing to a second reference block in the second reference image. Specifically, the block can be predicted using a combination of the first and second reference blocks.

[0097] In addition, merging mode techniques can be used in inter-frame image prediction to improve coding efficiency.

[0098] According to some embodiments disclosed in this application, predictions, such as inter-frame image prediction and intra-frame image prediction, are performed on a block-by-block basis. For example, according to the HEVC standard, images in a video image sequence are segmented into coding tree units (CTUs) for compression. The CTUs in the images have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. Generally, a CTU comprises three coding tree blocks (CTBs): one luma CTB and two chroma CTBs. Each CTU can also be recursively split into one or more coding units (CUs) using a quadtree. For example, a 64×64 pixel CTU can be split into one 64×64 pixel CU, or four 32×32 pixel CUs, or sixteen 16×16 pixel CUs. In the example, each CU is analyzed to determine the prediction type used for the CU, such as inter-frame prediction or intra-frame prediction. Depending on temporal and / or spatial predictability, the CU is split into one or more prediction units (PUs). Typically, each PU includes a luminance prediction block (PB) and two chrominance PBs. In embodiments, prediction operations during encoding (encoding / decoding) are performed on a per-prediction-block basis. Taking a luminance prediction block as an example, a prediction block includes a matrix of pixel values ​​(e.g., luminance values), where the pixels are, for example, 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, etc.

[0099] Figure 7 This is a diagram of a video encoder (703) according to another embodiment disclosed in this application. The video encoder (703) is configured to receive a processing block (e.g., a prediction block) of sample values ​​within a current video image in a video image sequence, and to encode the processing block into an encoded image that is part of an encoded video sequence. In this embodiment, the video encoder (703) is used instead of Figure 4The video encoder (403) in the embodiment.

[0100] In the HEVC embodiment, the video encoder (703) receives a matrix of sample values ​​for a processing block, such as an 8×8 sample prediction block. The video encoder (703) uses, for example, rate-distortion (RD) optimization to determine whether to use intra-frame mode, inter-frame mode, or bidirectional prediction mode to optimally encode the processing block. When encoding the processing block in intra-frame mode, the video encoder (703) can use intra-frame prediction techniques to encode the processing block into an encoded picture; and when encoding the processing block in inter-frame mode or bidirectional prediction mode, the video encoder (703) can use inter-frame prediction or bidirectional prediction techniques to encode the processing block into an encoded picture, respectively. In some video coding techniques, the merging mode can be an inter-frame picture prediction sub-mode, in which motion vectors are derived from one or more motion vector predictors without the aid of encoded motion vector components outside the predictors. In some other video coding techniques, motion vector components applicable to the subject block may exist. In the embodiment, the video encoder (703) includes other components, such as a mode decision module (not shown) for determining the processing block mode.

[0101] exist Figure 7 In the example, the video encoder (703) includes, for example, Figure 7 The inter-frame encoder (730), intra-frame encoder (722), residual calculator (723), switch (726), residual encoder (724), general controller (721) and entropy encoder (725) are shown coupled together.

[0102] The inter-frame encoder (730) is configured to receive samples of the current block (e.g., the processing block), compare the block with one or more reference blocks in a reference image (e.g., blocks in previous and later images), generate inter-frame prediction information (e.g., a description of redundancy information based on the inter-frame coding technique, motion vectors, merging mode information), and compute inter-frame prediction results (e.g., predicted blocks) based on the inter-frame prediction information using any suitable technique. In some examples, the reference image is a decoded reference image based on encoded video information.

[0103] The intra encoder (722) is configured to receive samples of the current block (e.g., the processed block), in some cases compare the block with coded blocks in the same image, generate quantization coefficients after transformation, and in some cases also generate intra prediction information (e.g., based on intra prediction direction information of one or more intra coding techniques). In the example, the intra encoder (722) also calculates intra prediction results (e.g., predicted blocks) based on the intra prediction information and a reference block in the same image.

[0104] A general controller (721) is configured to determine general control data and, based on this general control data, control other components of the video encoder (703). In an example, the general controller (721) determines the mode of a block and, based on this mode, provides control signals to a switch (726). For example, when the mode is intra-frame mode, the general controller (721) controls the switch (726) to select an intra-frame mode result for use by the residual calculator (723) and controls the entropy encoder (725) to select intra-frame prediction information and add the intra-frame prediction information to the bitstream; and when the mode is inter-frame mode, the general controller (721) controls the switch (726) to select an inter-frame prediction result for use by the residual calculator (723) and controls the entropy encoder (725) to select inter-frame prediction information and add the inter-frame prediction information to the bitstream.

[0105] A residual calculator (723) is configured to calculate the difference (residual data) between the received block and the prediction result selected from an intra-encoder (722) or an inter-encoder (730). A residual encoder (724) is configured to operate based on the residual data to encode the residual data to generate transform coefficients. In an example, the residual encoder (724) is configured to convert the residual data from the spatial domain to the frequency domain and generate transform coefficients. The transform coefficients are then subjected to quantization to obtain quantized transform coefficients. In various embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is configured to perform an inverse transform and generate decoded residual data. The decoded residual data may be used appropriately by the intra-encoder (722) and the inter-encoder (730). For example, an inter-frame encoder (730) can generate a decoded block based on the decoded residual data and inter-frame prediction information, and an intra-frame encoder (722) can generate a decoded block based on the decoded residual data and intra-frame prediction information. The decoded blocks are processed appropriately to generate a decoded picture, and in some examples, the decoded picture can be buffered in a memory circuit (not shown) and used as a reference picture.

[0106] An entropy encoder (725) is configured to format the bitstream to produce encoded blocks. The entropy encoder (725) includes various information according to a suitable standard, such as the HEVC standard. In this example, the entropy encoder (725) is configured to include general control data, selected prediction information (e.g., intra-frame prediction information or inter-frame prediction information), residual information, and other suitable information in the bitstream. It should be noted that, according to the disclosed subject matter, residual information is not present when blocks are encoded in a merged sub-mode of inter-frame mode or bidirectional prediction mode.

[0107] Figure 8This is a diagram of a video decoder (810) according to another embodiment disclosed in this application. The video decoder (810) is configured to receive an encoded image as part of an encoded video sequence and decode the encoded image to generate a reconstructed picture. In this example, the video decoder (810) is used instead of Figure 4 The video decoder (410) in the example.

[0108] exist Figure 8 In the example, the video decoder (810) includes, for example, Figure 8 The entropy decoder (871), inter-frame decoder (880), residual decoder (873), reconstruction module (874) and intra-frame decoder (872) are shown coupled together.

[0109] The entropy decoder (871) can be configured to reconstruct certain symbols from an encoded picture, representing the syntax elements constituting the encoded picture. Such symbols may include, for example, the mode used to encode the block (e.g., intra-frame mode, inter-frame mode, bidirectional prediction mode, a combined sub-mode of the latter two, or another sub-mode), prediction information (e.g., intra-frame prediction information or inter-frame prediction information) that can identify certain samples or metadata used by the intra-frame decoder (872) or inter-frame decoder (880) for prediction, residual information in the form of, for example, quantized transform coefficients, and so on. In the example, when the prediction mode is inter-frame or bidirectional prediction mode, inter-frame prediction information is provided to the inter-frame decoder (880); and when the prediction type is intra-frame prediction type, intra-frame prediction information is provided to the intra-frame decoder (872). The residual information may be inversely quantized and provided to the residual decoder (873).

[0110] The inter-frame decoder (880) is configured to receive inter-frame prediction information and generate inter-frame prediction results based on the inter-frame prediction information.

[0111] The intra-frame decoder (872) is configured to receive intra-frame prediction information and generate prediction results based on the intra-frame prediction information.

[0112] The residual decoder (873) is configured to perform inverse quantization to extract the dequantized transform coefficients and process the dequantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require some control information (to include the quantizer parameter QP), and this information can be provided by the entropy decoder (871) (the data path is not indicated because this is only a small amount of control information).

[0113] The reconstruction module (874) is configured to combine the residual output by the residual decoder (873) with the prediction result (which may be output by the inter-frame prediction module or the intra-frame prediction module) in the spatial domain to form a reconstructed block, which may be part of a reconstructed image, which in turn may be part of a reconstructed video. It should be noted that other suitable operations, such as deblocking, may be performed to improve visual quality.

[0114] It should be noted that any suitable technology can be used to implement the video encoder (403), video encoder (603), and video encoder (703), as well as the video decoder (410), video decoder (510), and video decoder (810). In one embodiment, one or more integrated circuits can be used to implement the video encoder (403), video encoder (603), and video encoder (703), as well as the video decoder (410), video decoder (510), and video decoder (810). In another embodiment, one or more processors executing software instructions can be used to implement the video encoder (403), video encoder (603), and video encoder (703), as well as the video decoder (410), video decoder (510), and video decoder (810).

[0115] Various aspects of this application relate to modifications of secondary transforms, such as the implementation of inverse secondary transforms.

[0116] In some embodiments, such as in 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 matrices may be represented using 8-bit integers (i.e., 8-bit transform cores). The transform core matrix of a smaller DCT-2 is a part of the transform core matrix of a larger DCT-2, as shown in Appendix I.

[0117] The DCT-2 core matrix exhibits symmetric / antisymmetric properties. Therefore, a "partial butterfly" implementation can be supported to reduce the number of operations (e.g., multiplication, addition, subtraction, shifting, etc.), and the same matrix multiplication results can be obtained using partial butterfly.

[0118] In some embodiments, such as in VVC, in addition to the 4-point, 8-point, 16-point, and 32-point DCT-2 transforms described above, additional 2-point and 64-point DCT-2 transforms may be included. An example of a 64-point DCT-2 core used in VVC is shown in Appendix II as a 64×64 matrix.

[0119] In addition to DCT-2 and 4×4 DST-7, as used in HEVC, the Adaptive Multiple Transform (AMT, or Enhanced Multiple Transform (EMT) or Multiple Transform Selection (MTS) scheme can be used, for example, in VVC for residual coding of inter-frame and intra-frame coded blocks. Besides the transforms currently used in HEVC, the AMT scheme can use multiple transforms selected from the DCT / DST family. The newly introduced transform matrices are DST-7 and DCT-8. Table 1 shows examples of the base functions of the selected DST / DCT for N-point inputs.

[0120] Table 1

[0121] For example, the primary transform matrix used in VVC can be represented using 8 bits. AMT applies the transform matrix to a CU with a width and height both less than or equal to 32. Whether AMT is applied can be controlled by a flag (e.g., mts_flag). When mts_flag equals 0, in some examples, only DCT-2 is applied to encode the residual data. When mts_flag equals 1, two bits can be used to further signal the index (e.g., mts_idx) to identify the horizontal and vertical transforms to be used according to Table 2, where type value 1 indicates the use of DST-7 and type value 2 indicates the use of DCT-8. In Table 2, the specifications of trTypeHor and trTypeVer depend on mts_idx[x][y][cIdx].

[0122] Table 2

[0123] In some embodiments, an implicit MTS can be applied when the signaling-based MTS described above (i.e., explicit MTS) is not used. With an implicit MTS, the transformation selection is based on the width and height of the block rather than the signaling. For example, with an implicit MTS, DST-7 is selected for the shorter side of an M×N block (i.e., the minimum of M and N), and DCT-2 is selected for the longer side of the block (i.e., the maximum of M and N).

[0124] Exemplary transformation cores for DST-7 and DCT-8 are shown in Appendix III, each of which is a matrix composed of fundamental vectors.

[0125] In some examples, such as VVC, when the height and width of the coded block are both less than or equal to 64, the TB size is the same as the coded block size. When the height or width of the coded block is greater than 64, the coded block is further divided into multiple sub-blocks when performing transforms (such as inverse transform, inverse primary transform, etc.) or intra-frame prediction, where each sub-block has a width and height less than or equal to 64. A transform can be performed once for each sub-block.

[0126] the following Figure 9 and Figures 10A to 10C The relevant syntax and semantics of MTS in some examples in VVC are described (highlighted in gray). Figure 9 An example of transform unit syntax is shown. Figures 10A to 10C An example of residual coding syntax is shown.

[0127] Examples of transform unit semantics are as follows. `cu_mts_flag[x0][y0]` equal to 1 indicates that multiple transform selections are applied to the residual samples of the associated luminance transform block. `cu_mts_flag[x0][y0]` equal to 0 indicates that multiple transform selections are not applied to the residual samples of the associated luminance transform block. The array indices `x0`, `y0` specify the position (x0, y0) of the top-left luminance sample of the considered transform block relative to the top-left luminance sample of the image. When `cu_mts_flag[x0][y0]` does not exist, it is inferred to be equal to 0.

[0128] An example of residual coding semantics is as follows. `mts_idx[x0][y0]` specifies which transform kernels are applied to the luminance residual samples along the horizontal and vertical directions of the current transform block. The array indices `x0` and `y0` specify the position (x0, y0) of the top-left luminance sample of the considered transform block relative to the top-left luminance sample of the image. When `mts_idx[x0][y0]` does not exist, it is inferred to be equal to -1.

[0129] Figure 11AAn exemplary forward transform (also known as a forward primary transform) performed by the encoder is shown. The forward transform can include a horizontal forward transform and a vertical forward transform. First, a horizontal forward transform is applied to the residual block (1110) with residual data to obtain an intermediate block. Subsequently, a vertical forward transform is applied to the intermediate block to obtain a coefficient block (1112) with transform coefficients.

[0130] Figure 11B An exemplary backward transform (also known as the inverse primary transform or inverse transform) performed by the decoder is shown. Generally, the inverse transform matches the forward transform. The primary inverse transform can include a primary horizontal inverse transform (also known as the horizontal inverse transform) and a primary vertical inverse transform (also known as the vertical inverse transform). To match the forward transform, the order in which the horizontal and vertical inverse transforms are applied is switched in the inverse transform. Thus, the vertical inverse transform is first applied to the coefficient block (1122) to obtain the intermediate block. Subsequently, the horizontal inverse transform is applied to the intermediate block to obtain the residual block (1120).

[0131] A primary transformation can refer to a primary forward transformation or a primary inverse transformation. A horizontal transformation can refer to a horizontal inverse transformation or a horizontal forward transformation. Similarly, a vertical transformation can refer to a vertical inverse transformation or a vertical forward transformation.

[0132] In one example, such as in VVC, at the decoder, a primary inverse vertical transform is performed first, followed by a primary inverse horizontal transform after the inverse vertical transform has been applied, as follows: Figures 12A to 12E The text is highlighted in gray. Figures 12A to 12E An example of the transformation process, such as that used for scaling transformation coefficients, is shown. Figure 12E The text shown is highlighted in gray.

[0133] In one embodiment, a mode-dependent non-separable secondary transform (NSST) can be used between the forward core transform and quantization on the encoder side, and between the dequantization and inverse core transform on the decoder side. For example, to maintain low complexity, NSST is applied to low-frequency coefficients after the primary transform (or core transform). When the width (W) and height (H) of the transform coefficient block are both greater than or equal to 8, an 8×8 NSST is applied to the 8×8 region at the top left corner of the transform coefficient block. Otherwise, when the width W or height H of the transform coefficient block is 4, a 4×4 NSST is applied, and a 4×4 NSST is performed on the min (8,W)×min (8,H) region at the top left corner of the transform coefficient block. This transform selection method is applied to both the luma and chroma components.

[0134] The matrix multiplication implementation of NSST is described below using a 4×4 input block as an example. In equation (1), the 4×4 input block X is: (1) The input block X can be represented as the vector in equation (2). ,in, (2) Inseparable transformation is calculated as ,in, Let T represent the transform coefficient vector, and T be a 16×16 transform matrix. Then, using the scan order for the input block X (e.g., horizontal scan order, vertical scan order, or diagonal scan order), the 16×1 transform coefficient vector is transformed... Reorganize into 4×4 blocks. Coefficients with smaller indices can be placed in the 4×4 coefficient blocks with smaller scan indices. In some embodiments, the matrix multiplication described above can be replaced by the Hypercube-Givens Transform (HyGT) with a butterfly implementation to reduce the complexity of NSST.

[0135] In one example, for both 4×4 and 8×8 block sizes, a 35×3 inseparable quadratic transform is available, 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 intra-prediction modes to their corresponding transform sets. Based on Table 3, which illustrates the mapping from intra-prediction modes to transform set indices, the transform set applied to the luma / chroma transform coefficients is specified by the corresponding luma / chroma intra-prediction mode. For intra-prediction modes corresponding to diagonal prediction directions with a value greater than 34, the transform coefficient blocks are transposed before / after the NSST at the encoder / decoder, respectively.

[0136] For each transform set, the selected NSST candidate can be further specified by an NSST index at the CU level, explicitly signaled via signaling. Following the transform coefficients, the CU-level NSST index is signaled in the bitstream used for each intra-coded CU, and truncated unary binarization is applied to the CU-level NSST index. For example, the truncation value is 2 for planar or DC mode, and 3 for angular intra-prediction mode. In one example, the CU-level NSST index is signaled only if there is more than one non-zero coefficient in the CU. The default value is 0 and no signaling indicates that no NSST is applied to the CU. Each of the values ​​1-3 indicates which NSST candidate to apply from the transform set.

[0137] Table 3

[0138] In some embodiments, NSST is not applied to blocks encoded using transform skip mode. NSST is not applied to blocks encoded in the CU using transform skip mode when the CU-level NSST index is signaled for the CU and the CU-level NSST index is not zero. When the CU of a block with all components is encoded in transform skip mode or when the number of non-zero coefficients of the non-transform skip mode CB is less than 2, the CU-level NSST index is not signaled for the CU.

[0139] In some embodiments, a variant of NSST is employed, such as Reduced SizeTransform (RST). RST uses a transform zero-out scheme. In one example, in RST, the intra-frame prediction mode is checked to determine whether it is planar or DC mode in order to entropy-encode the transform index of NSST.

[0140] In one example, four transform sets are applied, and each transform set includes three RST transform cores. RST transform cores can have dimensions of 16×48 (or 16×64) (applied to transform coefficient blocks with a height and width greater than or equal to 8) or 16×16 (applied to transform coefficient blocks with a height or width equal to 4). For notation purposes, a 16×48 (or 16×64) transform is represented as RST8×8, and a 16×16 transform is represented as RST4×4.

[0141] Figure 13 and Figure 14There are respectively shown examples of two transform coding processes (1300) and (1400) using a 16×64 transform (or 64×16 transform, depending on whether the transform is a secondary forward transform or a secondary inverse transform) and a 16×48 transform (or 48×16 transform, depending on whether the transform is a secondary forward transform or a secondary inverse transform). With reference to Figure 13 , in the process (1300), at the encoder side, a primary forward transform (1310) may first be performed on a residual block to obtain a coefficient block (1313). Subsequently, a secondary forward transform (1312) may be applied to the coefficient block (1313). In the secondary forward transform (1312), 64 coefficients of 4×4 sub-blocks A-D at the top-left corner of the coefficient block (1313) may be represented by a 64-length vector, and according to formula (2), the 64-length vector may be multiplied with a 64×16 transform matrix (i.e., 64 in width and 16 in height) to obtain a 16-length vector. Elements in the 16-length vector are filled back into the 4×4 sub-block A at the top-left corner of the coefficient block (1313). Coefficients in sub-blocks B-D may be zero. Then the coefficients obtained after the secondary forward transform (1312) are quantized at step (1314) and entropy encoded to generate encoded bits in a bitstream (1316).

[0142] The encoded bits may be received at the decoder side, entropy decoded, and then dequantized (1324) to generate a coefficient block (1323). A secondary inverse transform (1322), for example an inverse 8×8 RST, may be performed to obtain 64 coefficients from 16 coefficients at, for example, the 4×4 sub-block E at the top-left corner. The 64 coefficients may be filled back into 4×4 sub-blocks E-H. Furthermore, coefficients in the coefficient block (1323) after the secondary inverse transform (1322) may be processed with a primary inverse transform (1320) to obtain a recovered residual block.

[0143] Figure 14 The exemplary process (1400) is similar to the process (1300), except that fewer (i.e., 48) coefficients are processed during the secondary forward transform (1412). Specifically, 48 coefficients in sub-blocks A-C are processed with a smaller transform matrix of size 48×16. Using the smaller 48×16 transform matrix can reduce the memory size for storing the transform matrix and a large number of calculations (e.g., multiplications, additions, subtractions, etc.), and thus can reduce computational complexity.

[0144] A Reduced Transform (RT) (also referred to as RST) can map an N-dimensional vector to an R-dimensional vector in a different space, where R / N (R<N) is a reduction factor.

[0145] An RST (or RT) matrix is an R×N matrix as follows:

[0146] Here, the R rows of the transformation form the R-basis of the N-dimensional space. The inverse transformation matrix of RT is the transpose of its forward transformation.

[0147] Figure 15A The process of the reduced forward transformation (1501) and the process of the reduced inverse transformation (1502) are shown. T represents the RST transformation matrix with RxN dimensions, and TT represents the transpose of T with NxR dimensions.

[0148] In RST8×8, a reduction factor of 4 (1 / 4 size) can be achieved. For example, instead of a 64×64 matrix, which is the size of the traditional 8×8 non-separable transform matrix, a 16×64 direct matrix can be used. On the decoder side, the 64×16 inverse RST matrix can be used to generate the core (primary) transform coefficients in the top-left region of the 8×8. Forward RST8×8 uses a 16×64 (or 8×64 for an 8×8 block) matrix, such that forward RST8×8 produces non-zero coefficients only in the top-left 4×4 region within a given 8×8 top-left region. In other words, when RST is applied, a region outside the top-left 4×4 region of the 8×8 top-left region has only zero coefficients. For RST4×4, 16×16 (or 8×16 for a 4×4 block) direct matrix multiplication can be applied.

[0149] Furthermore, for RST8×8, in order to further reduce the size of the transformation matrix, instead of using the entire top-left corner of the residual block (1510) of the 8×8 coefficients (in Figure 15B The 64 coefficients in the shaded sub-block of the residual block (1510) are used as inputs for calculating the quadratic transformation. The coefficients of the three 4×4 sub-blocks in the upper left corner of the residual block (1510) are also used. Figure 15C The 48 coefficients in the shaded sub-block are used as input to calculate the quadratic transform. Therefore, in Figure 15B A 16×64 transformation matrix is ​​used, and... Figure 15C A 16×48 transformation matrix is ​​used.

[0150] In one example, the inverse RST is conditionally applied, where it is applied if both of the following conditions are met: (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 transform skip mode flag is zero. For example, if both the width (W) and height (H) of the transform coefficient block are greater than 4, then an RST8×8 is applied to the top-left 8×8 region of the transform coefficient block. Otherwise, an RST4×4 is applied to the top-left min(8, W)×min(8, H) region of the transform coefficient block.

[0151] In one example, when the RST index equals 0, RST is not applied. Otherwise, RST is applied, and the kernel is selected using the RST index. In one example, RST is applied to intra-CUs (e.g., CUs coded in intra-prediction or intra-mode) in intra and inter-slices, as well as to luma and chroma. If dual tree is enabled, the RST indexes for luma and chroma are signaled separately. For inter-slices (dual tree disabled), a single RST index is signaled and used for luma and chroma. When ISP mode is selected, RST is disabled, and the RST index is not signaled.

[0152] In one example, the RST matrix can be selected from four transformation sets, each consisting of two transformations. The choice of which transformation set to apply can be based on the intra-prediction mode as follows: Transform set 0 can be selected when one of the three CrossComponent Linear Model (CCLM) modes is indicated. Otherwise, it can be based on... Figure 15D The table (1550) shown performs transform set selection. Accessing the index of table (1550) (e.g., IntraPredMode) can be in the range [-14, 80], which is the transformed mode index used for, for example, wide-angle intra-prediction. Figure 16B An example of an intra-prediction mode is shown. In one example, the index of the access table (1550) can be in the range of [-14, 83] or any suitable range.

[0153] Figure 16A This diagram illustrates exemplary intra-prediction orientations and intra-prediction modes used in HEVC. In HEVC, there are a total of 35 intra-prediction modes (modes 0 to 34). Modes 0 and 1 are non-directional modes, where mode 0 is a planar mode (in...). Figure 16A The text is a mix of seemingly unrelated phrases and sentences, making it impossible to translate coherently. It appears to be a collection of fragments from various sources, possibly related to a frame, a plane, a DC mode, and a reference to a frame, a plane ... Figure 16A The text is labeled as Intra-DC. Modes 2 through 34 are directional modes, where mode 10 is a horizontal mode, mode 26 is a vertical mode, and modes 2, 18, and 34 are diagonal modes. In some instances, the intra-prediction mode is signaled via three Most Probable Modes (MPMs) and 32 remaining modes.

[0154] Figure 16BIllustrations of exemplary intra-prediction directions and intra-prediction modes in some examples (e.g., VVC) are shown. There are a total of 95 intra-prediction modes (modes -14 to 80), where mode 18 is a horizontal mode, mode 50 is a vertical mode, and modes 2, 34, and 66 are diagonal modes. Modes -1 to -14 and modes 67 to 80 are referred to as Wide-angle Intra Prediction (WAIP) modes.

[0155] Multiple-line intra prediction (MPM) can use more reference lines for intra prediction. A reference line can include multiple samples from the image. In one example, the reference line includes samples from both rows and columns. In another example, the encoder can determine and signal the reference lines used to generate the intra predictor. The index of the reference line (also called the reference line index) can be signaled before the intra prediction mode is activated. In one example, only MPM is allowed when a non-zero reference line index is signaled. Figure 17 An example of four reference lines used for encoding block (1710) is shown. Figure 17 In the example shown, a reference line may include six segments, namely segments A through F. Reference line 3 may include a top-left reference sample. Segments A and F may be filled with the nearest samples from segments B and E, respectively. In some instances, such as in HEVC, only one reference line (e.g., reference line 0 adjacent to the coded block (1710)) is used for intra-frame prediction. In some instances, such as in VVC, multiple reference lines (e.g., reference lines 0, 1, and 3) are used for intra-frame prediction.

[0156] Intra Sub-partition (ISP) coding mode can be used. In ISP coding mode, the luma intra-prediction block can be vertically or horizontally divided into 2 or 4 sub-partitions based on the block size.

[0157] Figure 18 Table 4 shows the relationship between the number of sub-partitions and the block size. For example, when the block size is 4×4, no partitioning is performed on the block in ISP encoding mode. When the block size is 4×8 or 8×4, the block is divided into two sub-partitions in ISP encoding mode. For all other block sizes greater than 4×8 or 8×4, the block is divided into four sub-partitions. Figure 19 Examples of sub-partitions of blocks with a size of 4×8 or 8×4 are shown. Figure 20Another example of sub-partitions with block sizes different from 4×8, 8×4, and 4×4 is shown; for example, the block size is larger than 4×8 and 8×4. In one example, all sub-partitions satisfy the condition of having at least 16 samples. ISP is not applied for the chroma component.

[0158] In some examples, for each sub-partition, the decoder can perform entropy decoding on the coefficients sent from the encoder, then inverse quantize and inverse transform the coefficients to generate a residual (or residual data) for the sub-partition. Furthermore, when the decoder performs intra-prediction on the sub-partition, it can add the residual to the intra-prediction result to obtain a reconstructed sample for the sub-partition. Therefore, the reconstructed sample for each sub-partition can be used to generate predictions for the next (or more) sub-partitions to be reconstructed. This 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 the ISP, each sub-partition can be considered a TU because the transform and reconstruction are performed separately for each sub-partition.

[0159] In some instances, the ISP algorithm only uses intra-prediction modes that are part of the MPM list for testing. Therefore, when a block uses ISP, it can be inferred that the MPM is marked as 1. Furthermore, in some examples, when ISP is used for a block, the MPM list can be modified to exclude DC modes and prioritize horizontal intra-prediction modes for horizontal partitions (or horizontal splits) and vertical intra-prediction modes for vertical partitions (or vertical splits).

[0160] Figures 21A to 21D Examples of different YUV or chroma formats are shown. Each chroma format can define different downsampling gratings for different color components.

[0161] The quadratic transform can refer to NSST, RST (or RT), etc. The quadratic transform index can refer to the NSST index, RST index, etc. In one example, the quadratic transform index indicates a quadratic transform (also called a quadratic transform candidate). The quadratic transform index can be signaled at the CU level. For example, the NSST index or RST index for the CU can be signaled at the CU level. Whether the quadratic transform index is signaled can depend on the number of non-zero coefficients in the CU. Therefore, the decoder can loop through all TUs included in the CU to determine the number of non-zero coefficients in the CU. In some embodiments, this method is relatively complex.

[0162] In some quadratic transform (e.g., RST) designs, when using a single splitting tree between different color components in a CU that includes, for example, one luma component and two chroma components, the number of non-zero coefficients in the CU can be counted to determine whether a quadratic transform index has been signaled. However, for a 4×N or N×4 luma block, the corresponding chroma block is 2×N / 2 or N / 2×2 in the YUV4:2:0 format. Therefore, a quadratic transform such as RST is not applied to the chroma block, and it is not necessary to count the number of non-zero coefficients in the chroma block.

[0163] In some examples, secondary transformations such as NSST or RST are not enabled for ISP. This limits the full benefits of secondary transformations in terms of coding efficiency.

[0164] The embodiments described herein can be used individually or in any combination in any order. Furthermore, the embodiments can be implemented using processing circuitry (e.g., one or more processors or one or more integrated circuits) in encoders, decoders, etc. In one example, one or more processors can execute a program stored in a non-transitory computer-readable medium. In some examples, the block can be a prediction block, an encoding block, a CU, etc.

[0165] In this application, embodiments of MTS candidate DST-7 are applicable to DST-4, and embodiments of MTS candidate DCT-8 are applicable to DCT-4. Furthermore, in some embodiments, references to NSST may also be applied to RST, which is an example of an alternative design for an inseparable quadratic transformation.

[0166] High-level Syntax (HLS) elements can refer to Video Parameter Sets (VPS), Sequence Parameter Sets (SPS), Picture Parameter Sets (PPS), Slice headers, Tile headers, Tile group headers, etc. A CTU header can refer to syntax elements that the CTU communicates via signals, such as header information. In one example, the CTU size is the maximum CU size. TU size can refer to the maximum width and / or height of the TU, or its area.

[0167] Typically, when the luminance size (represented by luminance samples) of a unit (e.g., TU, CU) is known, the corresponding chrominance size, specified by the number of chrominance samples, can be obtained. In one example, a 4:2:0 YUV format is used, and the CU has a CU size of 64×64 luminance samples (or 64×64-L). Therefore, 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. A CU can include one luminance block and two chrominance blocks, where the luminance block has 64×64 luminance samples, and each of the two chrominance blocks has 32×32 chrominance samples. This description can be applied to the TU. For brevity, the description of the TU is omitted.

[0168] The TU size can be represented using luminance samples from the TU. For example, the maximum TU size with M samples refers to the maximum TU size with M luminance samples. Similarly, the CU size can be represented using luminance samples from the CU. In other embodiments, TU and CU sizes can be represented using chrominance samples or a combination of chrominance and luminance samples.

[0169] Cell size can refer to the width, height, and / or area of ​​a cell. For example, the maximum TU size can refer to the width, height, and / or area of ​​the maximum TU. Typically, TUs, CUs, etc., can have any suitable shape, including rectangles, squares, "L" shapes, or any suitable shape. When the cell shape is irregular, such as an "L" shape, the cell size can specify the area of ​​the cell.

[0170] In some embodiments, the maximum TU size (also referred to as the maximum TU size) can be signaled in the encoded video stream (e.g., in HLS (e.g., SPS and PPS)). The maximum TU size can be signaled using luminance or chrominance samples.

[0171] In some embodiments, the maximum TU size may be stored in the encoder and / or decoder, and therefore not signaled. In one example, the maximum TU size may be stored in a profile and / or level definition. The maximum TU size can be stored based on luminance or chrominance samples.

[0172] According to various aspects of the invention, whether a secondary transformation on the CU is permitted can be determined based on the size of the CU (or the CU size). In one example, the permission to perform a secondary transformation on the CU can be determined based on the CU size and a CU size threshold. When the CU size is less than or equal to the CU size threshold, the secondary transformation is permitted; when the CU size is greater than the CU size threshold, the secondary transformation is disallowed. In one example, when it is determined that the secondary transformation is disallowed, the secondary transformation index is not signaled. Therefore, when the decoder determines that the secondary transformation is disallowed, the decoder can also determine that the secondary transformation index has not been signaled. In one example, the CU size can refer to the width and / or height of the CU, for example, 64 samples. In another example, the CU size can refer to the area of ​​the CU, for example, 64 × 64 samples.

[0173] In one example, the CU size threshold (e.g., CU width threshold, CU height threshold, or CU area threshold) is limited to no more than the maximum size of the TU within the CU. The maximum size of the TU can be signaled in the HLS. The maximum size of the TU can also be predefined and stored in the decoder.

[0174] As described above, in some examples, the decoder can loop through the TUs in the CU to determine the number of non-zero coefficients in the CU, and then determine whether a secondary transform index has been signaled. According to various aspects of this application, instead of counting the number of non-zero coefficients in the CU, the signaling of a secondary transform index can be determined based on the last position (or the last non-zero coefficient position) of multiple non-zero transform coefficients in a first CB in the CU. The first CB can be any suitable block in the CU, such as a luma block, chroma block, etc. The secondary transform index can indicate the secondary transform selected for a second CB in the CU.

[0175] According to various aspects of this application, whether to perform a secondary transformation on the second block in the CU can be determined based on whether a secondary transformation index has been signaled. Furthermore, when it is determined that a secondary transformation should be performed, samples in the second block can be reconstructed after performing the secondary transformation indicated by the secondary transformation index on the second block. Alternatively, when it is determined that a secondary transformation should not be performed, samples in the second block can be reconstructed without performing a secondary transformation on the second block. The second block can be any suitable block in the CU, such as a luma block, chroma block, etc. In one example, the first block is the second block. In another example, the first block is different from the second block.

[0176] In one example, the CU comprises a luminance block. The first CB is a luminance block. The last position is the position of the last non-zero luminance coefficient of the luminance block. Therefore, the signal notification of the secondary transform index is determined based on the last luminance position. The second CB is also either a luminance block or the first CB.

[0177] In some embodiments, additional information may be included to determine whether the secondary transformation index has been notified by signaling, as described below.

[0178] In one example, the CU includes a luma block and a chroma block. The first CB is the luma block. The last position is the position of the last non-zero luma coefficient of the luma block. Additional information may include the position of the last non-zero chroma coefficient of the chroma block. Therefore, it is determined whether the secondary transform index has been notified by signaling based on the positions of the last non-zero luma coefficients and the last non-zero chroma coefficients of the chroma block. The second CB can be one of the luma block and the chroma block.

[0179] In one example, the CU includes one luma block and two chroma blocks (e.g., chroma block I and chroma block II). The first CB is the luma block. The last position is the position of the last non-zero luma coefficient of the luma block. Additional information may include the last non-zero chroma coefficient position I of chroma block I and the last non-zero chroma coefficient position II of chroma block II. Therefore, it can be determined whether the secondary transform index has been signaled based on the last non-zero luma coefficient position, the last non-zero chroma coefficient position I of multiple non-zero transform coefficients of chroma block I, and the last non-zero chroma coefficient position II of multiple non-zero transform coefficients of chroma block II. The second CB can be one of the luma block, chroma block I, and chroma block II.

[0180] As described above, it can be determined whether the quadratic transform index has been signaled based on the position of the last non-zero coefficient of the first CB in the CU. The position of the last non-zero coefficient may include a horizontal component (e.g., last_pos_x) and a vertical component (e.g., last_pos_y), and therefore it can be determined whether the quadratic transform index has been signaled based on the horizontal component and / or the vertical component. The horizontal and vertical components can be integers of 0 or greater than 0. The vertical component can be an integer of 0 or greater than 0.

[0181] In one embodiment, the horizontal component can be compared with a first threshold and / or the vertical component can be compared with a second threshold. The first threshold may be the same as the second threshold. Optionally, the first threshold may be different from the second threshold. The first threshold and / or the second threshold may be positive integers, such as 1, 2, 3, etc.

[0182] In one example, it can be determined whether the horizontal component is less than a first threshold and whether the vertical component is less than a second threshold. When it is determined that the horizontal component is less than the first threshold and the vertical component is less than the second threshold, it can be determined that the secondary transformation index has not been notified by signal.

[0183] In one example, it can be determined whether the horizontal component is greater than or equal to a first threshold. Furthermore, it can be determined whether the vertical component is greater than or equal to a second threshold. When it is determined that the horizontal component is greater than or equal to the first threshold and the vertical component is greater than or equal to the second threshold, it can be determined that the quadratic transform index has been notified via a signal.

[0184] In one embodiment, it can be determined whether the sum of the horizontal and vertical components of the final 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 transform index was not notified via signaling. 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 transform index was notified via signaling.

[0185] In one embodiment, it can be determined whether the minimum value of the horizontal and vertical components is less than a fourth threshold. When it is determined that the minimum value of the horizontal and vertical components is less than the fourth threshold, it is determined that the secondary transform index has not been notified by signal. The fourth threshold can be a positive integer, such as 1, 2, 3, etc.

[0186] In one embodiment, it can be determined whether the maximum value among the horizontal and vertical components is less than a fifth threshold. When it is determined that the maximum value among the horizontal and vertical components is less than the fifth threshold, it is determined that the secondary transform index has not been 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 can be different from the fifth threshold.

[0187] In one embodiment, the first CB is a luma block in the CU. Furthermore, the CU includes chroma blocks. However, whether the secondary transform index has been signaled is determined solely based on the position of the last non-zero luma coefficient of the luma block in the CU. Therefore, the position of the last non-zero chroma coefficient of the chroma block is not considered when determining whether the secondary transform index has been signaled.

[0188] In one embodiment, the CU includes a luma block and a chroma block as described above. Whether a secondary transform index has been signaled is determined based on the last non-zero luma coefficient position of the luma block and the last non-zero chroma coefficient position of the chroma block. Similarly, the last non-zero luma coefficient position may include a luma horizontal component and a luma vertical component, and the last non-zero chroma coefficient position may include a chroma horizontal component and a chroma vertical component. Therefore, whether a secondary transform index has been signaled can be determined based on the luma horizontal component, the luma vertical component, the chroma horizontal component, and / or the chroma vertical component.

[0189] In one embodiment, one or more of the corresponding horizontal and vertical components of each of the last non-zero luminance coefficient positions and the last non-zero chrominance coefficient positions can be compared with a corresponding threshold (e.g., 1, 2, 3, etc.). In one example, it can be determined whether one or more of the corresponding horizontal and vertical components of each of the last non-zero luminance coefficient positions and the last non-zero chrominance coefficient positions are less than the corresponding threshold. When one or more of the corresponding horizontal and vertical components of each of the last non-zero luminance coefficient positions and the last non-zero chrominance coefficient positions are less than the corresponding threshold, it can be determined that the secondary transform index has not been signaled.

[0190] In one embodiment, the horizontal sum is obtained by summing the luminance horizontal component and the chrominance horizontal component, and the vertical sum is obtained by summing the luminance vertical component and the chrominance vertical component. It can be determined whether each of the horizontal and vertical sums is less than a corresponding threshold. When both the horizontal and vertical sums are less than the corresponding threshold, it can be determined that the secondary transform index has not been signaled.

[0191] In one example, a first sum of the luminance horizontal and luminance vertical components is determined, and a second sum of the chrominance horizontal and chrominance vertical components is determined. It can be determined whether each of the first and second sums is less than a corresponding threshold. When it is determined that each of the first and second sums is less than the corresponding threshold, it can be determined that the secondary transform index has not been signaled.

[0192] In one embodiment, the sum is obtained by summing the first sum and the second sum, and when it is determined that the sum is less than a threshold, it can be determined that the secondary transformation index has not been notified by signal.

[0193] In one embodiment, a first minimum value is determined among the luminance horizontal component and the luminance vertical component, and a second minimum value is determined among the chrominance horizontal component and the chrominance vertical component. It can be determined whether each of the first and second minimum values ​​is less than a corresponding threshold. When it is determined that each of the first and second minimum values ​​is less than the corresponding threshold, it can be determined that the secondary transform index has not been signaled. The above description can be adapted to use the first maximum value among the luminance horizontal component and the luminance vertical component, and the second maximum value among the chrominance horizontal component and the chrominance vertical component, to determine whether the secondary transform index has been signaled.

[0194] Similarly, the minimum of the horizontal and vertical sums can be used to determine whether the quadratic transform index has been signaled. The maximum of the horizontal and vertical sums can be used to determine whether the quadratic transform index has been signaled.

[0195] According to various aspects of this application, when determining the number of non-zero transform coefficients in the CU, the non-zero transform coefficients in the CB of the CU can be counted when the size of the CB (also called the CB size) is greater than or equal to a size threshold (e.g., 4). In one example, when the CB size is less than the size threshold, the non-zero transform coefficients in the CB are not counted; that is, the non-zero transform coefficients in the CB are not included in the number of non-zero transform coefficients in the CU. The size threshold can be predefined and stored in the decoder. For example, the size threshold can be explicitly signaled from the encoder to the decoder. Furthermore, when the number of non-zero transform coefficients in the CU is less than the number threshold, it can be determined that the second transform index has not been signaled.

[0196] In one example, the color format of the CU is YUV 4:2:0. The CU consists of a luma block and two co-located chroma blocks. The size threshold is 4. When the luma block has a size of 4×N or N×4 (where N can refer to the width or height of the luma block and can be greater than or equal to 4), the two chroma 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 solely from the luma block, regardless of the two chroma blocks. The width or height of each of the two chroma blocks is less than the size threshold. In another example, the size threshold is 4×4, and the 2×N / 2 or N / 2×2 CB size is also less than the size threshold, where N can be a positive even number. No quadratic transform is performed on the two chroma blocks.

[0197] In one example, the color format of the CU is YUV 4:2:2. The CU consists of a luma block and two chroma blocks located in the same position as the luma block. The size threshold is 4. When the luma block has a size of 4×N (where N is greater than or equal to 4), the two chroma blocks have a size of 2×N. The number of non-zero transform coefficients of the CU is determined only from the luma block and not considering the two chroma blocks. The width of each of the two chroma blocks (e.g., 2) is less than the size threshold. No quadratic transform is performed on the two chroma blocks.

[0198] A quadratic transformation can be performed on a first coefficient block (e.g., TB) to obtain a 4×2 (or 2×4) first sub-block comprising at least one non-zero coefficient. For example, an RST is applied to a 4×4 first TB (e.g., the first coefficient block) to obtain a second TB comprising a first sub-block and a second sub-block. The 4×2 (or 2×4) first sub-block comprises at least one non-zero coefficient. The coefficients in the 4×2 (or 2×4) second sub-block are considered to be 0. Therefore, a 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 encoding of the second TB. In one example, the 4×2 (or 2×4) coefficient scan order is the same as the scan order applied to the entropy encoding of the 4×2 (or 2×4) chroma block.

[0199] Similarly, for example, when the first coefficient block is larger than 8×4 (or 4×8), a quadratic transformation can be performed on the first coefficient block (e.g., TB) to obtain an 8×4 (or 4×8) first sub-block containing at least one non-zero coefficient. For example, applying RST to the 8×8 first TB (e.g., the first coefficient block) yields a second TB containing a first sub-block and a second sub-block. The 8×4 (or 4×8) first sub-block contains at least one non-zero coefficient. The coefficients in the 8×4 (or 4×8) second sub-block are considered to be 0. Therefore, an 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 the second TB for entropy encoding. In one example, the 8×4 (or 4×8) coefficient scan order is the same as the scan order applied to the entropy encoding of the 8×4 (or 4×8) chroma block.

[0200] Figure 22 A flowchart outlining a process (2200) according to one embodiment of this application is shown. This process (2200) can be used to reconstruct blocks encoded in intra-frame mode, thereby generating predictive blocks for the reconstructed blocks. In some instances, the process (2200) can be used to reconstruct blocks encoded in intra-frame mode. In various embodiments, the process (2200) is executed by processing circuitry in terminal devices (310), (320), (330), and (340), processing circuitry performing the functions of a video encoder (403), processing circuitry performing the functions of a video decoder (410), processing circuitry performing the functions of a video decoder (510), processing circuitry performing the functions of a video encoder (603), etc. In some embodiments, the process (2200) is implemented as software instructions, so that when the processing circuitry executes these software instructions, the processing circuitry executes the process (2200). The process begins at (S2210) and proceeds to (S2210).

[0201] At (S2210), the encoding information of the CU can be decoded from the encoded video bitstream. The encoding information may indicate the last position (or the last non-zero coefficient position) of multiple non-zero transform coefficients of the first CB in the CU. In one example, the CU may include a luma block and a chroma block. The first CB may be a luma block or a chroma block.

[0202] In (S2220), as described above, it can be determined whether the secondary transform index was signaled in the encoded information based on the position of the last non-zero coefficient. The secondary transform index can indicate the secondary transform to be performed on the second CB in the CU. The second CB can be a luma block or a chroma block.

[0203] In one example, the last non-zero coefficient position may include horizontal and vertical components, and it can be determined whether the quadratic transform index was signaled in the encoded information based on the horizontal and / or vertical components. As described above, additional information can be used to determine whether the quadratic transform index was signaled, and step (S2220) can be appropriately adjusted to include additional information. In one example, when it is determined that the quadratic transform index was signaled, process (2200) proceeds to (S2230). Otherwise, process (2200) proceeds to (S2250).

[0204] At (S2230), it can be determined whether to perform a secondary transformation on the second CB based on whether the secondary transformation index has been signaled in the encoded information. In some examples, when it is determined that the secondary transformation index has been signaled, it is determined to perform the secondary transformation. When it is determined that the secondary transformation will be performed, process (2200) proceeds to (S2240). Otherwise, process (2200) proceeds to (S2250).

[0205] At (S2240), a quadratic transformation indicated by the quadratic transformation index is performed on the second CB. The quadratic transformation can be an NSST. The quadratic transformation can be an RST including a zero-out method. For example, when 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 to be 0.

[0206] At (S2250), the sample in the second CB can be reconstructed. Then, process (2200) proceeds to (S2299) and terminates.

[0207] The process (2200) can be appropriately adjusted 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. The order in which the process (2200) is executed can also be modified.

[0208] Figure 23 A flowchart outlining a process (2300) according to one embodiment of this application is shown. This process (2300) can be used to reconstruct blocks encoded in intra-frame mode, thereby generating predictive blocks for the reconstructed blocks. In some instances, the process (2300) can be used to reconstruct blocks encoded in intra-frame mode. In various embodiments, the process (2300) is executed by processing circuitry in terminal devices (310), (320), (330), and (340), processing circuitry performing the functions of a video encoder (403), processing circuitry performing the functions of a video decoder (410), processing circuitry performing the functions of a video decoder (510), processing circuitry performing the functions of a video encoder (603), etc. In some embodiments, the process (2300) is implemented as software instructions, so that when the processing circuitry executes these software instructions, the processing circuitry executes the process (2300). The process begins at (S2310) and proceeds to (S2310).

[0209] At (S2310), the encoding information of the CU can be decoded from the encoded video bitstream, wherein the encoding information indicates the size of the CU.

[0210] At (S2320), it can be determined whether a secondary transformation is allowed 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 a secondary transformation is allowed. Process (2300) proceeds to (S2330). When the size of the CU is greater than the CU size threshold, it is determined that a secondary transformation is not allowed, and process (2300) proceeds to (S2350).

[0211] At (S2330), as described above, it can be determined, for example, whether a secondary transformation is to be performed on the CB in the CU based on whether the secondary transformation index has been notified by a signal. When it is determined that a secondary transformation will be performed, process (2300) proceeds to (S2340). Otherwise, process (2300) proceeds to (S2350).

[0212] At (S2340), similar to step (S2240), a second transformation indicated by the second transformation index is performed on CB.

[0213] At (S2350), the sample in CB can be reconstructed. Then, process (2300) proceeds to (S2399) and terminates.

[0214] The process (2300) can be modified as appropriate. For example, one or more steps can be modified. Additional steps can also be added.

[0215] Processes (2200) and (2300) can be combined appropriately. For example, (S2310) and (S2320) can be implemented, followed by (S2210)-(S2250).

[0216] The above-described techniques can be implemented as computer software, which uses computer-readable instructions and is physically stored in one or more computer-readable media. For example, Figure 24 A computer system (2400) suitable for implementing some embodiments of the disclosed subject matter is shown.

[0217] Computer software can be coded using any suitable machine code or computer language, which can be subjected to assembly, compilation, linking or similar mechanisms to create code that includes instructions that can be executed directly by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or through decoding, microcode, etc.

[0218] The instructions can be executed on various types of computers or their components, including personal computers, tablets, servers, smartphones, gaming devices, and Internet of Things (IoT) devices.

[0219] Figure 24 The components of the computer system (2400) shown are exemplary in nature and are not intended to impose any limitation on the use or functional scope of the computer software implementing the embodiments of this application. The configuration of the components should also not be construed as having any dependency or requirement relating to any one or a combination of components shown in the exemplary embodiments of the computer system (2400).

[0220] Computer systems (2400) may include certain human-machine interface input devices. Such human-machine interface input devices may respond to input from one or more human users through, for example, tactile input (e.g., keystrokes, swipes, movement of a data glove), audio input (e.g., speech, clapping), visual input (e.g., gestures), and olfactory input (not depicted). Human-machine interface devices may also be used to capture certain media that are not necessarily directly related to human conscious input, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images acquired from still image cameras), and video (e.g., two-dimensional video, three-dimensional video including stereoscopic video), etc.

[0221] Input human-machine interface devices may include one or more of the following (only one of each is shown): keyboard (2401), mouse (2402), touchpad (2403), touch screen (2410), data glove (not shown), joystick (2405), microphone (2406), scanner (2407), camera (2408).

[0222] The computer system (2400) may also include certain human-machine interface output devices. Such human-machine 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-machine interface output devices may include tactile output devices (e.g., tactile feedback of a touchscreen (2410), a data glove (not shown), or a joystick (2405), but may also be tactile feedback devices that are not input devices), audio output devices (e.g., speakers (2409), headphones (not shown)), visual output devices (e.g., screens (2410) including CRT screens, LCD screens, plasma screens, OLED screens, each screen may or may not have touchscreen input functionality, each screen may or may not have tactile feedback functionality, some of which are capable of outputting two-dimensional visual output or more than three-dimensional output through devices such as stereoscopic image output, virtual reality glasses (not depicted), holographic displays and smoke boxes (not depicted), and printers (not depicted).

[0223] The computer system (2400) may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (2420) having media such as CD / DVD (2421), finger drives (2422), removable hard disk drives or solid-state drives (2423), conventional magnetic media such as magnetic tapes and floppy disks (not shown), devices based on dedicated ROM / ASIC / PLD such as security dongles (not shown), etc.

[0224] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the presently disclosed subject matter does not include transmission media, carrier waves, or other transient signals.

[0225] The computer system (2400) may also include interfaces to one or more communication networks. These networks may be, for example, wireless networks, wired networks, or optical networks. Networks may further be local area networks, wide area networks, metropolitan area networks, vehicle and industrial networks, real-time networks, latency-tolerant networks, etc. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., cable or wireless wide area digital television networks including cable television, satellite television, and terrestrial broadcast television, vehicle and industrial television including CANBus, etc. Some networks typically require external network interface adapters (e.g., USB ports of the computer system (2400)) to connect to certain general-purpose data ports or peripheral buses (2449); other network interfaces are typically integrated into the core of the computer system (2400) by connecting to the system bus (e.g., an Ethernet interface connected to a PC computer system or a cellular network interface connected to a smartphone computer system). The computer system (2400) can use any of these networks to communicate with other entities. Such communication can be one-way receiving (e.g., broadcast television), one-way transmitting (e.g., CANbus connected to certain CANbus devices), or bidirectional, such as connecting to other computer systems using a local area network (LAN) or wide area network (WAN) digital network. As mentioned above, certain protocols and protocol stacks can be used on each of those networks and network interfaces.

[0226] The aforementioned human-machine interface devices, human-machine accessible storage devices, and network interfaces can be attached to the kernel (2440) of the computer system (2400).

[0227] The kernel (2440) may include one or more central processing units (CPU) (2441), graphics processing units (GPUs) (2442), dedicated programmable processing units in the form of field-programmable gate areas (FPGAs) (2443), hardware accelerators (2444) for certain tasks, etc. These devices, as well as read-only memory (ROM) (2445), random access memory (2446), and internal mass storage (2447) such as internal non-user-accessible hard disk drives, SSDs, etc., can be connected via the system bus (2448). In some computer systems, the system bus (2448) can be accessed in the form of one or more physical plugs to allow for expansion with additional CPUs, GPUs, etc. Peripheral devices can be directly connected to the kernel's system bus (2448) or connected to the kernel's system bus (2448) via a peripheral bus (2449). Peripheral bus architectures include PCI, USB, etc.

[0228] The CPU (2441), GPU (2442), FPGA (2443), and accelerator (2444) can execute certain instructions that can be combined to form the aforementioned computer code. This computer code can be stored in ROM (2445) or RAM (2446). Transient data can also be stored in RAM (2446), while permanent data can be stored, for example, in internal mass storage (2447). Fast storage and retrieval to any storage device can be achieved by using a cache, which can be closely associated with one or more CPUs (2441), GPUs (2442), mass storage (2447), ROM (2445), RAM (2446), etc.

[0229] Computer-readable media may have computer code thereon that performs various computer-implemented operations. The media and computer code may be media and computer code specifically designed and constructed for the purposes of this disclosure, or the media and computer code may be of a type known and available to those skilled in the art of computer software.

[0230] As a non-limiting example, a computer system having an architecture (2400), particularly a kernel (2440), can be made functional by one or more processors (including CPUs, GPUs, FPGAs, accelerators, etc.) executing software contained in one or more tangible computer-readable media. Such computer-readable media can be media associated with user-accessible mass storage as described above, and memory of some non-transitory kernel (2440), such as internal kernel mass storage (2447) or ROM (2445). Software implementing various embodiments of this application can be stored in such devices and executed by the kernel (2440). Depending on specific needs, the computer-readable media may include one or more storage devices or chips. The software can cause the kernel (2440), particularly the processors therein (including CPUs, GPUs, FPGAs, etc.), to perform specific processes or specific portions of specific processes described herein, including defining data structures (2446) stored in RAM and modifying such data structures according to the software-defined processes. Additionally or alternatively, the computer system may provide functionality through hard-wired or otherwise embodied logic in circuitry (e.g., the accelerator (2444)), which may replace or operate with the software to perform the specific processing or a specific portion of the specific processing described herein. Where appropriate, references to software may include logic, and vice versa. Where appropriate, references to computer-readable media may include circuitry storing software for execution (e.g., an integrated circuit (IC)), circuitry embodying logic for execution, or both. This application includes any suitable combination of hardware and software.

[0231] Appendix A: Abbreviations JEM: Joint Exploration Model VVC: Next-Generation Video Coding BMS: Benchmark Set MV: Motion Vector HEVC: High-Efficiency Video Coding SEI: Supplemental Enhancement Information VUI: Video Availability Information GOP: Image Group TU: Transformation Unit PU: Prediction Unit CTU: Coding Tree Unit CTB: Coded Tree Block PB: Prediction Block HRD: Hypothetical Reference Decoder SNR: Signal-to-noise ratio CPU: Central Processing Unit GPU: Graphics Processing Unit CRT: Cathode Ray Tube LCD: Liquid Crystal Display OLED: Organic Light Emitting Diode CD: CD-ROM DVD: Digital Video Disc ROM: Read-Only Memory RAM: Random Access Memory ASIC: Application-Specific Integrated Circuit PLD: Programmable Logic Device LAN: Local Area Network GSM: Global System for Mobile Communications LTE: Long Term Evolution CANBus: Controller Area Network Bus USB: Universal Serial Bus PCI: Interconnect Peripheral Devices FPGA: Field Programmable Gate Domain SSD: Solid State Drive IC: Integrated Circuit CU: Encoding Unit Although several exemplary embodiments have been described in this application, modifications, substitutions, and various equivalent alternatives that fall within the scope of this application exist. Therefore, it should be understood that those skilled in the art will be able to design many systems and methods that, while not expressly shown or described herein, embody the principles of this application and thus fall within its spirit and scope.

[0232] Appendix I 4×4 transform

[0233] 8×8 transform

[0234] 16×16 transform

[0235] 32×32 transform

[0236] 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, 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, -bk, -bj, -bi, -bh, -bg, -bf} { 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, -ar, -au, -aw, -aw, -av -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, -c, -c, cj, cj, cj 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} { ah, ai, aj, ak, al, am, an, ao, -ao, -an, -am, -al, -ak, -aj, -ai, -ah, -ah, -ai, -aj, -ak, -al, -an, -ao, ao, an, am, al,ak, aj, ai, ah, ah, ai, aj, ak, al, am, ao, -an, -am, -an -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, bp, bj, bk, bo, bf -cd, -bj, -bf, -bk, -bp, -bu, -bz, -ce, -cj, ch, cc, bx, bs, bn, bi, bg, BL, bq, bv, ca, CF, CK-b-w-b,cg, -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, -aq, -aq, -aq-aq-at, -aw, -az, -bc, az, 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 { 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, bf, -b, -bs, -ca, -ch, ch, ca, bt, bm, bf, BL, bs, bz, cg, -ci, -cb, -bu, -bn, -bg, -bk, -br, -by, -cf, cj, cc, bv, bv, bh, bj, ce, bc,bx -bp, -bi} { 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, 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, bk,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, bc, cd, -ch, -bw, -bl, -bj, -bj, bjf, bjf, bc, buc 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, -ai, -al, -ao, am, aj, ah, ak, an, -an, -ak, -ah, -aj, -am, ao, al, ai, al, -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, -bc, -br, -br, -br -cf, cd, bq, bg, bt, cg, -cc, -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, -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, -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} { bn, ce, -ca, -bj, -br, -ci, bw, bf, bv, -cj, -bs, -bi, -bz,cf, bo, bm, cd, -cb, -bk, -bq, -ch, bx, bg, bg, -ck, -p, -bh cc, -cc, -bl, -bp, -cg, by, bh, bt, ck, -bu, -bg, -bx,ch, bq, bk, CB, -cd, -bm, -bo, -cf, bz, b, bs, cj, -b, br, -bf,j -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, -at, ay, ax, at-b, ap 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, bw, bg, cp, - -BI, -CB, CB, BI, BU, -CI, -BP, -BN, -CG, BW, BG, BZ, -CD, -BK, -BS, CK, BR, BL, CE, -B, -BF, -BX, CF, BM, BQ, BH, CJCC- -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, am, ah, al, -an, -ai, -ak, ao, aj, aj, ao, -ak, -ai, -an, -a, -am, -am, -al ai, ak, -ao, -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, -b, -b, bz, -b 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} { 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, -av, -av, -abd, -baw, -bc, -ar, -ar -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, -bo, -bu, cc, 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, - -ax,az, ar, be, -as, -ay, ay, as, -be, -ar, -az, ax, at, -bd, -aq, -ba,aw, au, -bc, -ap, -bb, av} { bc, -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, -bg, -bg, bx, bx, -bch -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} { 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, -aj, -aj, -an -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, b-fq, ci, BW, -BW, -BQ, CC, BK, -CI, -BF, -CH, BL, CB, -BR, -BV,BX, BP, -CD, -BJ, CJ, BG, CG, -BM, -CA, BS, BU, -B, BF, -BO, CE, bz, -bt} { 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, au, bc, ba, -, ay, -as, -ba, -as, bc, aq, -be, -ap, -bd, ar,bb, -at, 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, bxb, cb,-,- -bv, bv, bt, -bx, -br, bz, bp, -cb, -bn, cd, BL, -cf, -bj, ch, bh, -cj, -bf, -ck, bg, ci, -bi, -cg, bk, ce, cc-cc-bq, bs, bw, -bu} { ah, -aa, -aa, ah, ah, -aa, -aa, ah, ah, -aa, ah, ah, -aa, ah, ah, ah, ah, -aa, ah, ah, ah, ah, ah, ah, ah, ah, ah, ah, ah, ah -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, aaa, aaa, aaa, aaaa { bv, -bt, -bx, br, bz, -bp, -cb, bn, cd, -bl, -cf, bj, ch, -bh, -cj, bf, -ck, -bg, ci, bi, -cg, -bk, b, bq, bq-bs, -cc, Bu, -B, -BW, BS, BY, -BQ, -CA, BO, CC, -BM, -CE, BK, CG, -BI, -CI, BG, CK, -BF, CJ, BH, -CH, -BJ, CF, BL, -CD, BB, -BX, -, CB -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, -ax, -ax, a, a-vat 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,}, ax, 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, bz, f, bc, -bc - bc -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, -aj, -an -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, -cc, bc, -c, -c 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} { 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, bt, cf, -bi, bg, c, ca, - -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, CE, -JB -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, - aqba, -ap, -ay -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, -b, bw, CE, -bj, bv, CF, -bk, bu, cg, -bl, BT, ch, -bm, bs, CI, -p, br, br, br, cj, -ck, -bq, BO, -cj, -br, bn, -ci, -bs, bm, -ch, -bt, bl, -cg, -bu, bk, -cf, -bv, bj, -ce, -b-b, b, -cd, -bcc, -b, bh, bf, -the} { 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, -ah, am, am, -ah, al -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, -bo, bh, bh, bh, -bv, -bv 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, -av, -av, be -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, bl, -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, 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, bo, -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, -ax, -aq, -ay, -ar, -ar, -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, -bbl, -bk, -bk, -b 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} { 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, -ao, -a, -ao 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, -bp, ca, ck, -bz, bo, -bg, cv, -cc, -CI, bx,b, -b. bk, -bk, bv, -cg, -ce, bt, -b, bm, -bx, ci, cc, -br,bg, -bo, bz, -ck, -ca, bp, -bf, bq, -cb, -cj, by, -bn, bh-b, -bs -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, -bac, ax, 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, bc,} -ax, { cg, -bx, BO, -BF, BN, -BW, CF, CH, -B, BP, -BG, BM, -BV,CE, CI, -BZ, BQ, -BH, BL, -BU, CD, CJ, -CA, BR, -BI, BK-CC-B, -CK BJ, -BS, CB, -CK, -CC, BT, -BK, BI, -Br, CA, -CJ, -CD, BU, -BL, BH, -BQ, BZ, -CI, -CE, BV, -BM, BG, -BP, BY, -BX, BX, -CF -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, by, -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, bb, bw, -bw -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, -al, -al, -aj, -a 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, bc, -bp, -bj, bj, bjp, bjb, -bj -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} } wherein { 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} Appendix III 4-point DST-7 { a, b, c, d} { c, c, 0, -c} { d, -a, -c, b} { b, -d, c, -a} wherein {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,} wherein {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, o, -c, -f, -i, -l, -o,} {e, j, o, m, h, c, -b, -g, -1, -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, -1, -1, -c, f, o, i, o, -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,} {0, c, -1, -f, i, i, -f, -1, c, 0,0, -o, -c, 1, 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,} {1, -i, -c, o, -f, -f, o, -c, -i, 1,0, -1, 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, -1, d,} {f, -1, o, -i, c, c, -i, o, -1, f, 0, -f, 1, -o, i, -c,} {d, -h, l, -p, m, -i, e, -a, -c, g, -k, o, -n, j, -f, b} {b, -d, f, -h, j, -1, n, -p, o, -m, k, -i, g, -e, c, -a,} wherein {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, 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, 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,} wherein {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,} wherein {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,} where {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, f, 0, -f, -f, 0, f, f, 0, -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,} wherein {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, -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,} wherein {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}

Claims

1. A method for generating an encoded video stream, characterized in that, include: Determine the encoding information of the coding unit (CU), the encoding information indicating the last position of the non-zero transform coefficients of the first coding block (CB) in the CU; Based on the last position, it is determined whether the second-order transform index was notified by signal in the encoded information. When the number of non-zero transform coefficients at the last position is 1 or 0, the second-order transform index is not notified by signal. Based on whether the secondary transformation index was notified by a signal in the encoded information, it is determined whether to perform a secondary transformation on the second CB in the CU; In response to determining to perform the second transformation, the second transformation is performed on the second CB and the second CB is encoded to generate an encoded video stream; and In response to determining that the second transformation is not to be performed, the second CB is encoded without performing the second transformation on the second CB to generate an encoded video stream.

2. The method as described in claim 1, characterized in that, The final position includes a horizontal component and a vertical component, and the values ​​of the horizontal component and the vertical component are 0 or integers greater than 0.

3. The method as described in claim 1 or 2, characterized in that, Determining whether the secondary transform index was notified via a signal in the encoded information includes: Determine whether the horizontal component of the last position is less than a first threshold and whether the vertical component of the last position is less than a second threshold; and In response to determining that the horizontal component is less than the first threshold and that the vertical component is less than the second threshold, it is determined that the secondary transform index is not notified by signal in the encoded information.

4. The method as described in claim 1 or 2, characterized in that, Determining whether the secondary transform index was notified via a signal in the encoded information includes: Determine whether the sum of the horizontal and vertical components of the final position is less than a threshold; and In response to determining that the sum is less than the threshold, it is determined that the secondary transformation index was not notified by a signal in the encoded information.

5. The method as described in claim 1 or 2, characterized in that, Determining whether the secondary transform index was notified via a signal in the encoded information includes: Determine whether the minimum value of (i) the horizontal component and (ii) the vertical component of the final position is less than a threshold; and In response to determining that the minimum value is less than the threshold, it is determined that the secondary transformation index was not notified by signal in the encoded information.

6. The method as described in claim 1 or 2, characterized in that, Determining whether the secondary transform index was notified via a signal in the encoded information includes: Determine whether the maximum value of (i) the horizontal component and (ii) the vertical component of the last position is less than a threshold; and In response to determining that the maximum value is less than the threshold, it is determined that the secondary transformation index was not notified by signal in the encoded information.

7. The method as described in claim 1 or 2, characterized in that, The first CB is a luminance block; The last position is the last brightness position of the brightness block; and Determining whether the secondary transformation index was notified via a signal in the encoded information includes: determining whether the secondary transformation index was notified via a signal based on the last brightness position.

8. The method as described in claim 1 or 2, characterized in that, The first CB is a luminance block; The last position is the last brightness position of the brightness block; The CU also includes a chromaticity block; The encoding information also indicates the last chromaticity position of multiple non-zero transform coefficients of the chromaticity block; as well as Determining whether the secondary transformation index was notified via a signal in the encoded information includes: determining whether the secondary transformation index was notified via a signal based on the last luminance position and the last chrominance position.

9. An apparatus for generating an encoded video stream, characterized in that, The apparatus includes processing circuitry configured to perform the method of generating an coded video stream as claimed in any one of claims 1 to 8.

10. An apparatus for generating an encoded video stream, characterized in that, The device includes: An encoding module is used to determine the encoding information of an encoding unit (CU), the encoding information indicating the last position of the non-zero transform coefficients of the first encoding block (CB) in the CU; The determining module is configured to determine, based on the last position, whether the secondary transform index has been notified via a signal in the encoded information, wherein if the number of non-zero transform coefficients at the last position is 1 or 0, the secondary transform index is not notified via a signal; and based on the determination of whether the secondary transform index has been notified via a signal in the encoded information, determine whether to perform a secondary transform on the second CB in the CU. The encoding module is further configured to, in response to determining that the second transformation will be performed, perform the second transformation on the second CB and encode the second CB; and in response to determining that the second transformation will not be performed, encode the second CB without performing the second transformation on the second CB to generate an encoded video stream.

11. A non-transitory computer-readable medium, characterized in that, The system stores instructions and a bitstream, which, when executed by a computer, cause the computer to perform a method for generating an encoded video bitstream as described in any one of claims 1 to 8, in order to generate the bitstream.

12. A computer device, characterized in that, The method includes a processor and a memory, wherein the memory stores instructions and an encoded video stream, and when the instructions are executed by the processor, implements the method for generating an encoded video stream as described in any one of claims 1 to 8.

13. A method for storing encoded video streams, characterized in that, The method for generating an encoded video stream according to any one of claims 1 to 8 is used to generate the encoded video stream and store the encoded video stream.

14. A method for transmitting encoded video streams, characterized in that, The method for generating an encoded video stream according to any one of claims 1 to 8 is used to generate the encoded video stream and transmit the encoded video stream.

Citation Information

Patent Citations

  • Non-separable secondary transform for video coding

    CN108141597A

  • Secondary Transform Kernel Size Selection

    US20180302631A1