Image encoding / decoding method and device, and recording medium storing bitstream

By employing syntax elements to manage non-separable transformations, the method enhances the efficiency of video encoding/decoding for high-resolution images, addressing the challenges of residual information processing in existing technologies.

WO2025211776A1PCT designated stage Publication Date: 2025-10-09LG ELECTRONICS INC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
PCT/KR2025/004394
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-04-02
Filing Date
2025-04-02
Publication Date
2025-10-09

AI Technical Summary

Technical Problem

Existing video encoding/decoding technologies face challenges in efficiently compressing high-resolution, high-quality images, particularly in managing the application of non-separable transformations for residual information processing.

Method used

The method and device utilize syntax elements to signal and control the application of non-separable transformations, enabling efficient derivation and encoding of transform coefficients based on separable or non-separable transforms, with specific flags for different coding units and slices.

Benefits of technology

This approach enhances the performance of transformation processes by effectively controlling the application of non-separable transformations, improving the efficiency of video encoding/decoding for high-resolution images.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure KR2025004394_09102025_PF_FP_ABST
    Figure KR2025004394_09102025_PF_FP_ABST
Patent Text Reader

Abstract

An image decoding method and device according to the present disclosure may: acquire residual information from a bitstream; derive transform coefficients of the current block on the basis of the residual information; derive residual samples of the current block by performing inverse transform on the transform coefficients of the current block; and reconstruct the current block on the basis of the residual samples of the current block. Here, the inverse transform may be performed on the basis of a non-separable transform, and the non-separable transform may be performed on the basis of a syntax element pertaining to whether the non-separable transform is applied.
Need to check novelty before this filing date? Find Prior Art

Description

Video encoding / decoding method and device, and recording medium storing bitstream

[0001] The present invention relates to a video encoding / decoding method and device, and a recording medium storing a bitstream.

[0002] Recently, the demand for high-resolution, high-quality images, such as HD (High Definition) images and UHD (Ultra High Definition) images, is increasing in various application fields, and accordingly, high-efficiency image compression technologies are being discussed.

[0003] There are various technologies for image compression, such as inter prediction technology that predicts pixel values ​​included in the current picture from pictures before or after the current picture, intra prediction technology that predicts pixel values ​​included in the current picture using pixel information within the current picture, and entropy encoding technology that assigns short codes to values ​​with high frequency of appearance and long codes to values ​​with low frequency of appearance, and these technologies can be used to effectively compress and transmit or store image data.

[0004] The present disclosure seeks to provide a method and device for performing (inverse) transformation using a separable transformation or a non-separable transformation.

[0005] The present disclosure seeks to provide a method and device for signaling whether a non-separable transformation is applied / activated.

[0006] The video decoding method and device according to the present disclosure can obtain residual information from a bitstream, derive transform coefficients of a current block based on the residual information, perform an inverse transform on the transform coefficients of the current block to derive residual samples of the current block, and reconstruct the current block based on the residual samples of the current block. Here, the inverse transform can be performed based on a non-separable transform. The non-separable transform can be performed based on a syntax element regarding whether the non-separable transform is enabled.

[0007] In the video decoding method and device according to the present disclosure, the syntax element may include a first non-separable transformation availability flag indicating whether the non-separable transformation is enabled.

[0008] In the video decoding method and device according to the present disclosure, the syntax element may include a first intra non-separable transform availability flag indicating whether a non-separable transform applicable to an intra coding unit is enabled and a first inter non-separable transform availability flag indicating whether a non-separable transform applicable to an inter coding unit is enabled.

[0009] In the video decoding method and device according to the present disclosure, the syntax element may include a first intra-slice non-separable transform available flag indicating whether a non-separable transform applicable to an intra coding unit is enabled to be applied to an intra slice, a first inter-slice non-separable transform available flag indicating whether a non-separable transform applicable to the intra coding unit is enabled to be applied to an inter slice, and a first inter-slice non-separable transform available flag indicating whether a non-separable transform applicable to an inter coding unit is enabled to be applied.

[0010] In the video decoding method and device according to the present disclosure, the syntax element may include a first non-separable transform availability flag indicating whether the non-separable transform is enabled and a first inter-slice non-separable transform availability flag indicating whether the non-separable transform applicable to the intra coding unit is enabled to be applied to the inter-slice.

[0011] In the video decoding method and device according to the present disclosure, the syntax element may include a first non-separable transform availability flag indicating whether the non-separable transform is enabled and a first intra non-separable transform availability flag indicating whether the non-separable transform that can be applied to an intra coding unit is enabled.

[0012] In the video decoding method and device according to the present disclosure, the syntax element may include a second non-separable transformation available flag indicating whether the non-separable transformation is applied (enabled) to a slice corresponding to the current slice header.

[0013] In the video decoding method and device according to the present disclosure, the syntax element may include a second intra non-separable transform available flag indicating whether a non-separable transform applicable to an intra coding unit is enabled for a slice corresponding to a current slice header, and a second inter non-separable transform available flag indicating whether a non-separable transform applicable to an inter coding unit is enabled for a slice corresponding to the current slice header.

[0014] In the video decoding method and device according to the present disclosure, the syntax element may include a second intra-slice non-separable transform available flag indicating whether a non-separable transform applicable to an intra coding unit for an intra slice is enabled, a second inter-slice non-separable transform available flag indicating whether a non-separable transform applicable to an intra coding unit for an inter slice is enabled, and a second inter-slice non-separable transform available flag indicating whether a non-separable transform applicable to an inter coding unit for a slice corresponding to a current slice header is enabled.

[0015] In the video decoding method and device according to the present disclosure, the syntax element may include a second intra non-separable transform available flag indicating whether a non-separable transform applicable to an intra coding unit for a slice corresponding to a current slice header is enabled.

[0016] The video encoding method and device according to the present disclosure can derive residual samples of a current block, perform a transformation on the residual samples of the current block to derive transform coefficients of the current block, and encode the transform coefficients of the current block. Here, the transformation can be performed based on a non-separable transform. A syntax element regarding whether the non-separable transform is enabled can be encoded in a bitstream.

[0017] A computer-readable digital storage medium is provided having encoded video / image information stored thereon, which causes a decoding device according to the present disclosure to perform a video decoding method.

[0018] A computer-readable digital storage medium storing video / image information generated by a video encoding method according to the present disclosure is provided.

[0019] A method and device for transmitting video / image information generated by a video encoding method according to the present disclosure are provided.

[0020] The present disclosure can improve the performance of transformation by using a separable transformation or a non-separable transformation as a primary transformation.

[0021] The present disclosure can effectively control the application of non-separable transformations by defining syntax elements regarding whether to apply / activate non-separable transformations and proposing a high-level syntax structure including the same.

[0022] FIG. 1 illustrates a video / image coding system according to the present disclosure.

[0023] FIG. 2 is a schematic block diagram of an encoding device to which an embodiment of the present disclosure can be applied and in which encoding of a video / image signal is performed.

[0024] FIG. 3 is a schematic block diagram of a decoding device to which an embodiment of the present disclosure can be applied and in which decoding of a video / image signal is performed.

[0025] FIG. 4 illustrates an image decoding method performed by a decoding device (300) as an embodiment according to the present disclosure.

[0026] FIG. 5 exemplarily shows an intra prediction mode and its prediction direction according to the present disclosure.

[0027] FIG. 6 illustrates a schematic configuration of a decoding device (300) that performs an image decoding method according to the present disclosure.

[0028] FIG. 7 illustrates an image encoding method performed by an encoding device (200) as an embodiment according to the present disclosure.

[0029] FIG. 8 illustrates a schematic configuration of an encoding device (200) that performs an image encoding method according to the present disclosure.

[0030] FIG. 9 illustrates an example of a content streaming system to which embodiments of the present disclosure can be applied.

[0031] The present disclosure may be subject to various modifications and embodiments. Therefore, specific embodiments are illustrated and described in detail in the drawings. However, this is not intended to limit the present disclosure to specific embodiments, but rather to encompass all modifications, equivalents, and alternatives falling within the spirit and technical scope of the present disclosure. Similar reference numerals have been used to designate similar components throughout the description of each drawing.

[0032] While terms such as "first" and "second" may be used to describe various components, these components should not be limited by these terms. These terms are used solely to distinguish one component from another. For example, without departing from the scope of the present disclosure, a first component could be referred to as a "second component," and similarly, a second component could also be referred to as a "first component." The term "and / or" includes a combination of multiple related items described herein or any of multiple related items described herein.

[0033] When a component is referred to as being "connected" or "connected" to another component, it should be understood that it may be directly connected or connected to that other component, but that there may be other components intervening. Conversely, when a component is referred to as being "directly connected" or "connected" to another component, it should be understood that there are no other components intervening.

[0034] The terminology used in this application is only used to describe specific embodiments and is not intended to limit the present disclosure. The singular expression includes the plural expression unless the context clearly indicates otherwise. In this application, it should be understood that the terms "comprise" or "have" indicate the presence of a feature, number, step, operation, component, part, or combination thereof described in the specification, but do not preclude the possibility of the presence or addition of one or more other features, numbers, steps, operations, components, parts, or combinations thereof.

[0035] The present disclosure relates to video / image coding. For example, the methods / embodiments disclosed in this specification can be applied to methods disclosed in the versatile video coding (VVC) standard. In addition, the methods / embodiments disclosed in this specification can be applied to methods disclosed in the essential video coding (EVC) standard, the AOMedia Video 1 (AV1) standard, the second generation of audio video coding standard (AVS2), or the next generation of video / image coding standards (e.g., H.267 or H.268).

[0036] This specification presents various embodiments of video / image coding, and unless otherwise stated, the embodiments may be performed in combination with each other.

[0037] In this specification, a video may refer to a set of images over time. A picture generally refers to a unit representing one image at a specific time point, and a slice / tile is a unit that constitutes part of a picture in coding. A slice / tile may include one or more coding tree units (CTUs). A picture may be composed of one or more slices / tiles. A tile is a rectangular area consisting of multiple CTUs within a specific tile column and a specific tile row of a picture. A tile column is a rectangular area of ​​CTUs that has a height equal to the height of the picture and a width specified by the syntax requirements of the picture parameter set. A tile row is a rectangular area of ​​CTUs that has a height specified by the picture parameter set and a width equal to the width of the picture. CTUs within a tile are arranged consecutively according to the CTU raster scan, while tiles within a picture may be arranged consecutively according to the tile raster scan. A slice may contain an integer number of complete tiles or an integer number of contiguous complete CTU rows within a picture, which may be exclusively contained within a single NAL unit. Meanwhile, a picture may be divided into two or more subpictures. A subpicture may be a rectangular region of one or more slices within a picture.

[0038] A pixel, or pel, can refer to the smallest unit that constitutes a picture (or image). Additionally, the term "sample" can be used as a counterpart to a pixel. A sample can generally represent a pixel or a pixel value, and can represent only the pixel / pixel value of the luminance component, or only the pixel / pixel value of the chrominance component.

[0039] A unit may represent a basic unit of image processing. A unit may include at least one of a specific region of a picture and information related to the region. One unit may include one luma block and two chroma (e.g., cb, cr) blocks. In some cases, the term "unit" may be used interchangeably with terms such as "block" or "area." In general, an MxN block may include a set (or array) of samples (or sample array) or transform coefficients consisting of M columns and N rows.

[0040] As used herein, "A or B" can mean "only A," "only B," or "both A and B." In other words, as used herein, "A or B" can be interpreted as "A and / or B." For example, as used herein, "A, B or C" can mean "only A," "only B," "only C," or "any combination of A, B and C."

[0041] As used herein, a slash ( / ) or a comma can mean "and / or." For example, "A / B" can mean "A and / or B." Accordingly, "A / B" can mean "only A," "only B," or "both A and B." For example, "A, B, C" can mean "A, B, or C."

[0042] In this specification, "at least one of A and B" may mean "only A", "only B" or "both A and B". Additionally, in this specification, the expressions "at least one of A or B" or "at least one of A and / or B" may be interpreted identically to "at least one of A and B".

[0043] Additionally, in this specification, “at least one of A, B and C” can mean “only A,” “only B,” “only C,” or “any combination of A, B and C.” Additionally, “at least one of A, B or C” or “at least one of A, B and / or C” can mean “at least one of A, B and C.”

[0044] Additionally, parentheses used herein may mean "for example." Specifically, when "prediction (intra-prediction)" is indicated, "intra-prediction" may be suggested as an example of "prediction." In other words, "prediction" in this specification is not limited to "intra-prediction," and "intra-prediction" may be suggested as an example of "prediction." Furthermore, even when "prediction (i.e., intra-prediction)" is indicated, "intra-prediction" may be suggested as an example of "prediction."

[0045] Technical features individually described in a single drawing in this specification may be implemented individually or simultaneously.

[0046] FIG. 1 illustrates a video / image coding system according to the present disclosure.

[0047] Referring to FIG. 1, a video / image coding system may include a first device (source device) and a second device (receiving device).

[0048] A source device can transmit encoded video / image information or data to a receiving device via a digital storage medium or a network in the form of a file or streaming. The source device may include a video source, an encoding device, and a transmitting device. The receiving device may include a receiving device, a decoding device, and a renderer. The encoding device may be referred to as a video / image encoding device, and the decoding device may be referred to as a video / image decoding device. The transmitter may be included in the encoding device. The receiver may be included in the decoding device. The renderer may include a display unit, and the display unit may be configured as a separate device or an external component.

[0049] A video source may obtain video / images through a process of capturing, synthesizing, or generating video / images. The video source may include a video / image capture device and / or a video / image generation device. The video / image capture device may include one or more cameras, a video / image archive containing previously captured video / images, etc. The video / image generation device may include a computer, a tablet, a smartphone, etc., and may (electronically) generate video / images. For example, a virtual video / image may be generated through a computer, etc., in which case the video / image capture process may be replaced by a process of generating related data.

[0050] An encoding device can encode input video / images. The encoding device can perform a series of procedures, such as prediction, transformation, and quantization, to improve compression and coding efficiency. The encoded data (encoded video / image information) can be output in the form of a bitstream.

[0051] The transmission unit can transmit encoded video / image information or data output in the form of a bitstream to the receiving unit of a receiving device via a digital storage medium or network in the form of a file or streaming. The digital storage medium can include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc. The transmission unit can include an element for generating a media file via a predetermined file format and an element for transmission via a broadcasting / communication network. The receiving unit can receive / extract the bitstream and transmit it to a decoding device.

[0052] The decoding device can decode the video / image by performing a series of procedures such as inverse quantization, inverse transformation, and prediction corresponding to the operation of the encoding device.

[0053] The renderer can render decoded video / images. The rendered video / images can be displayed through the display unit.

[0054] FIG. 2 is a schematic block diagram of an encoding device to which an embodiment of the present disclosure can be applied and in which encoding of a video / image signal is performed.

[0055] Referring to FIG. 2, the encoding device (200) may be configured to include an image partitioner (210), a prediction unit (predictor) 220, a residual processor (residual processor) 230, an entropy encoder (entropy encoder) 240, an adder (adder) 250, a filter (filter) 260, and a memory (memory) 270. The prediction unit (220) may include an inter prediction unit (221) and an intra prediction unit (222). The residual processor (230) may include a transformer (transformer) 232, a quantizer (quantizer) 233, a dequantizer (dequantizer) 234, and an inverse transformer (inverse transformer) 235. The residual processing unit (230) may further include a subtractor (231). The addition unit (250) may be called a reconstructor or a recontructed block generator. The image segmentation unit (210), the prediction unit (220), the residual processing unit (230), the entropy encoding unit (240), the addition unit (250), and the filtering unit (260) described above may be configured by one or more hardware components (e.g., an encoding device chipset or processor) according to an embodiment. In addition, the memory (270) may include a decoded picture buffer (DPB) and may be configured by a digital storage medium. The hardware component may further include the memory (270) as an internal / external component.

[0056] The image segmentation unit (210) can segment an input image (or picture, frame) input to the encoding device (200) into one or more processing units. For example, the processing unit may be called a coding unit (CU). In this case, the coding unit may be recursively segmented from a coding tree unit (CTU) or a largest coding unit (LCU) according to a QTBTTT (Quad-tree binary-tree ternary-tree) structure.

[0057] For example, a single coding unit may be split into multiple coding units with deeper depths based on a quad-tree structure, a binary tree structure, and / or a ternary structure. In this case, for example, the quad-tree structure may be applied first, and the binary tree structure and / or the ternary structure may be applied later. Alternatively, the binary tree structure may be applied before the quad-tree structure. The coding procedure according to the present specification may be performed based on the final coding unit that is no longer split. In this case, based on coding efficiency according to image characteristics, etc., the largest coding unit may be used directly as the final coding unit, or, if necessary, the coding unit may be recursively split into coding units of lower depths, and the coding unit with the optimal size may be used as the final coding unit. Here, the coding procedure may include procedures such as prediction, transformation, and restoration, which will be described later.

[0058] As another example, the processing unit may further include a prediction unit (PU) or a transform unit (TU). In this case, the prediction unit and the transform unit may each be split or partitioned from the final coding unit described above. The prediction unit may be a unit of sample prediction, and the transform unit may be a unit for deriving a transform coefficient and / or a unit for deriving a residual signal from a transform coefficient.

[0059] The term "unit" may be used interchangeably with terms such as "block" or "area" depending on the case. In general, an MxN block can represent a set of samples or transform coefficients consisting of M columns and N rows. A sample can generally represent a pixel or a pixel value, and can represent only the pixel / pixel value of the luminance component, or only the pixel / pixel value of the chrominance component. A sample can be used as a term corresponding to a pixel or pel in a picture (or image).

[0060] The encoding device (200) can generate a residual signal (residual block, residual sample array) by subtracting a prediction signal (prediction block, prediction sample array) output from an inter prediction unit (221) or an intra prediction unit (222) from an input video signal (original block, original sample array), and the generated residual signal is transmitted to a conversion unit (232). In this case, a unit that subtracts a prediction signal (prediction block, prediction sample array) from an input video signal (original block, original sample array) within the encoding device (200) may be called a subtraction unit (231).

[0061] The prediction unit (220) can perform a prediction on a block to be processed (hereinafter, referred to as a current block) and generate a predicted block including prediction samples for the current block. The prediction unit (220) can determine whether intra prediction or inter prediction is applied on a current block or CU basis. The prediction unit (220) can generate various information related to prediction, such as prediction mode information, as described later in the description of each prediction mode, and transmit the information to the entropy encoding unit (240). The information related to prediction can be encoded by the entropy encoding unit (240) and output in the form of a bitstream.

[0062] The intra prediction unit (222) can predict the current block by referring to samples in the current picture. The referenced samples may be located in the neighborhood of the current block, or may be located a certain distance away from the current block, depending on the prediction mode. In intra prediction, the prediction modes may include one or more non-directional modes and multiple directional modes. The non-directional mode may include at least one of a DC mode or a planar mode. The directional mode may include 33 directional modes or 65 directional modes depending on the degree of detail in the prediction direction. However, this is only an example, and a greater or lesser number of directional modes may be used depending on the settings. The intra prediction unit (222) may also determine the prediction mode applied to the current block by using the prediction mode applied to the neighboring blocks.

[0063] The inter prediction unit (221) can derive a prediction block for the current block based on a reference block (reference sample array) specified by a motion vector on a reference picture. At this time, in order to reduce the amount of motion information transmitted in the inter prediction mode, the motion information can be predicted in units of blocks, subblocks, or samples based on the correlation of motion information between neighboring blocks and the current block. The motion information can include a motion vector and a reference picture index. The motion information can further include inter prediction direction information (L0 prediction, L1 prediction, Bi prediction, etc.). In the case of inter prediction, the neighboring block can include a spatial neighboring block existing in the current picture and a temporal neighboring block existing in the reference picture. The reference picture including the reference block and the reference picture including the temporal neighboring block may be the same or different. The above temporal neighboring blocks may be called collocated reference blocks, collocated CUs (colCUs), etc., and the reference pictures including the temporal neighboring blocks may be called collocated pictures (colPic). For example, the inter prediction unit (221) may construct a motion information candidate list based on the neighboring blocks, and generate information indicating which candidate is used to derive the motion vector and / or reference picture index of the current block. Inter prediction may be performed based on various prediction modes, and for example, in the case of skip mode and merge mode, the inter prediction unit (221) may use the motion information of the neighboring blocks as the motion information of the current block. In the case of skip mode, unlike the merge mode, a residual signal may not be transmitted.In the motion vector prediction (MVP) mode, the motion vector of the surrounding blocks is used as a motion vector predictor, and the motion vector of the current block can be indicated by signaling the motion vector difference.

[0064] The prediction unit (220) can generate a prediction signal based on various prediction methods described below. For example, the prediction unit can apply intra prediction or inter prediction for prediction of a single block, and can also apply intra prediction and inter prediction simultaneously. This can be called combined inter and intra prediction (CIIP) mode. In addition, the prediction unit can be based on an intra block copy (IBC) prediction mode or a palette mode for prediction of a block. The IBC prediction mode or palette mode can be used for content image / video coding such as games, such as screen content coding (SCC). IBC basically performs prediction within the current picture, but can be performed similarly to inter prediction in that it derives a reference block within the current picture. That is, IBC can utilize at least one of the inter prediction techniques described herein. Palette mode can be viewed as an example of intra coding or intra prediction. When the palette mode is applied, sample values ​​within a picture can be signaled based on information about the palette table and palette index. The prediction signal generated through the prediction unit (220) can be used to generate a restoration signal or a residual signal.

[0065] The transform unit (232) can apply a transform technique to the residual signal to generate transform coefficients. For example, the transform technique can include at least one of a Discrete Cosine Transform (DCT), a Discrete Sine Transform (DST), a Karhunen-Loeve Transform (KLT), a Graph-Based Transform (GBT), or a Conditionally Non-linear Transform (CNT). Here, GBT refers to a transform obtained from a graph when the relationship information between pixels is expressed as a graph. CNT refers to a transform obtained based on generating a prediction signal using all previously restored pixels. In addition, the transform process can be applied to a pixel block having a square size and the same size, or can be applied to a block of a non-square variable size.

[0066] The quantization unit (233) quantizes the transform coefficients and transmits them to the entropy encoding unit (240), and the entropy encoding unit (240) can encode the quantized signal (information about the quantized transform coefficients) and output it as a bitstream. The information about the quantized transform coefficients can be called residual information. The quantization unit (233) can rearrange the quantized transform coefficients in a block form into a one-dimensional vector form based on the coefficient scan order, and can also generate information about the quantized transform coefficients based on the quantized transform coefficients in the one-dimensional vector form.

[0067] The entropy encoding unit (240) can perform various encoding methods such as exponential Golomb, context-adaptive variable length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), etc. The entropy encoding unit (240) can also encode information necessary for video / image restoration (e.g., values ​​of syntax elements, etc.) together or separately from quantized transform coefficients.

[0068] Encoded information (e.g., encoded video / image information) can be transmitted or stored in the form of a bitstream in units of NAL (network abstraction layer) units. The video / image information may further include information on various parameter sets, such as an adaptation parameter set (APS), a picture parameter set (PPS), a sequence parameter set (SPS), or a video parameter set (VPS). In addition, the video / image information may further include general constraint information. In the present specification, information and / or syntax elements transmitted / signaled from an encoding device to a decoding device may be included in the video / image information. The video / image information may be encoded through the above-described encoding procedure and included in the bitstream. The bitstream may be transmitted via a network or stored in a digital storage medium. Here, the network may include a broadcasting network and / or a communication network, and the digital storage medium may include various storage media, such as a USB, SD, CD, DVD, Blu-ray, HDD, or SSD. The signal output from the entropy encoding unit (240) may be configured as an internal / external element of the encoding device (200) by a transmitting unit (not shown) and / or a storing unit (not shown), or the transmitting unit may be included in the entropy encoding unit (240).

[0069] The quantized transform coefficients output from the quantization unit (233) can be used to generate a prediction signal. For example, by applying inverse quantization and inverse transformation to the quantized transform coefficients through the inverse quantization unit (234) and the inverse transform unit (235), a residual signal (residual block or residual samples) can be reconstructed. The addition unit (250) can generate a reconstructed signal (reconstructed picture, reconstructed block, reconstructed sample array) by adding the reconstructed residual signal to the prediction signal output from the inter prediction unit (221) or the intra prediction unit (222). When there is no residual for the block to be processed, such as when skip mode is applied, the predicted block can be used as a reconstructed block. The addition unit (250) may be called a reconstructor or a reconstructed block generation unit. The generated restoration signal can be used for intra prediction of the next processing target block within the current picture, and can also be used for inter prediction of the next picture after filtering as described below. Meanwhile, LMCS (luma mapping with chroma scaling) may be applied during the picture encoding and / or restoration process.

[0070] The filtering unit (260) can improve subjective / objective picture quality by applying filtering to the restoration signal. For example, the filtering unit (260) can apply various filtering methods to the restoration picture to generate a modified restoration picture, and store the modified restoration picture in the memory (270), specifically, in the DPB of the memory (270). The various filtering methods can include deblocking filtering, sample adaptive offset, adaptive loop filter, bilateral filter, etc. The filtering unit (260) can generate various information regarding filtering and transmit it to the entropy encoding unit (240). The information regarding filtering can be encoded by the entropy encoding unit (240) and output in the form of a bitstream.

[0071] The modified restored picture transmitted to the memory (270) can be used as a reference picture in the inter prediction unit (221). Through this, when inter prediction is applied, the encoding device can avoid prediction mismatch between the encoding device (200) and the decoding device, and can also improve encoding efficiency.

[0072] The DPB of the memory (270) can store the modified restored picture to be used as a reference picture in the inter prediction unit (221). The memory (270) can store motion information of a block from which motion information is derived (or encoded) within the current picture and / or motion information of blocks within a picture that has already been restored. The stored motion information can be transferred to the inter prediction unit (221) to be used as motion information of a spatial neighboring block or motion information of a temporal neighboring block. The memory (270) can store restored samples of restored blocks within the current picture and transfer them to the intra prediction unit (222).

[0073] FIG. 3 is a schematic block diagram of a decoding device to which an embodiment of the present disclosure can be applied and in which decoding of a video / image signal is performed.

[0074] Referring to FIG. 3, the decoding device (300) may be configured to include an entropy decoder (310), a residual processor (320), a predictor (330), an adder (340), a filter (350), and a memory (360). The predictor (330) may include an inter-prediction unit (331) and an intra-prediction unit (332). The residual processor (320) may include a dequantizer (321) and an inverse transformer (321).

[0075] The entropy decoding unit (310), residual processing unit (320), prediction unit (330), addition unit (340), and filtering unit (350) described above may be configured by a single hardware component (e.g., a decoding device chipset or processor) depending on the embodiment. In addition, the memory (360) may include a decoded picture buffer (DPB) and may be configured by a digital storage medium. The hardware component may further include the memory (360) as an internal / external component.

[0076] When a bitstream including video / image information is input, the decoding device (300) can restore the image corresponding to the process in which the video / image information is processed in the encoding device of FIG. 2. For example, the decoding device (300) can derive units / blocks based on block division-related information obtained from the bitstream. The decoding device (300) can perform decoding using a processing unit applied in the encoding device. Accordingly, the processing unit of decoding may be a coding unit, and the coding unit may be divided from a coding tree unit or a maximum coding unit according to a quad tree structure, a binary tree structure, and / or a ternary tree structure. One or more transform units may be derived from the coding unit. Then, the restored image signal decoded and output through the decoding device (300) can be reproduced through a reproduction device.

[0077] The decoding device (300) can receive a signal output from the encoding device of FIG. 2 in the form of a bitstream, and the received signal can be decoded through the entropy decoding unit (310). For example, the entropy decoding unit (310) can parse the bitstream to derive information (e.g., video / image information) necessary for image restoration (or picture restoration). The video / image information may further include information on various parameter sets, such as an adaptation parameter set (APS), a picture parameter set (PPS), a sequence parameter set (SPS), or a video parameter set (VPS). In addition, the video / image information may further include general constraint information. The decoding device can decode the picture further based on the information on the parameter set and / or the general constraint information. The signaling / received information and / or syntax elements described later in this specification can be decoded through the decoding procedure and obtained from the bitstream. For example, the entropy decoding unit (310) can decode information in a bitstream based on a coding method such as exponential Golomb coding, CAVLC, or CABAC, and output the values ​​of syntax elements required for image restoration and the quantized values ​​of transform coefficients for residuals. More specifically, the CABAC entropy decoding method receives a bin corresponding to each syntax element in the bitstream, determines a context model using information of the syntax element to be decoded and decoding information of the surrounding and decoding target blocks or information of symbols / bins decoded in the previous step, and predicts the occurrence probability of the bin according to the determined context model to perform arithmetic decoding of the bin to generate a symbol corresponding to the value of each syntax element.At this time, the CABAC entropy decoding method can update the context model using the information of the decoded symbol / bin for the context model of the next symbol / bin after determining the context model. Information regarding prediction among the information decoded by the entropy decoding unit (310) is provided to the prediction unit (inter prediction unit (332) and intra prediction unit (331)), and residual values ​​on which entropy decoding is performed by the entropy decoding unit (310), i.e., quantized transform coefficients and related parameter information, can be input to the residual processing unit (320). The residual processing unit (320) can derive a residual signal (residual block, residual samples, residual sample array). In addition, information regarding filtering among the information decoded by the entropy decoding unit (310) can be provided to the filtering unit (350). Meanwhile, a receiving unit (not shown) that receives a signal output from an encoding device may be further configured as an internal / external element of a decoding device (300), or the receiving unit may be a component of an entropy decoding unit (310).

[0078] Meanwhile, a decoding device according to the present specification may be called a video / video / picture decoding device, and the decoding device may be divided into an information decoding device (video / video / picture information decoding device) and a sample decoding device (video / video / picture sample decoding device). The information decoding device may include the entropy decoding unit (310), and the sample decoding device may include at least one of the inverse quantization unit (321), the inverse transformation unit (322), the addition unit (340), the filtering unit (350), the memory (360), the inter prediction unit (332), and the intra prediction unit (331).

[0079] The inverse quantization unit (321) can inverse quantize the quantized transform coefficients and output the transform coefficients. The inverse quantization unit (321) can rearrange the quantized transform coefficients into a two-dimensional block form. In this case, the rearrangement can be performed based on the coefficient scanning order performed in the encoding device. The inverse quantization unit (321) can perform inverse quantization on the quantized transform coefficients using quantization parameters (e.g., quantization step size information) and obtain transform coefficients.

[0080] In the inverse transform unit (322), the transform coefficients are inversely transformed to obtain a residual signal (residual block, residual sample array).

[0081] The prediction unit (320) can perform a prediction on the current block and generate a predicted block including prediction samples for the current block. The prediction unit (320) can determine whether intra-prediction or inter-prediction is applied to the current block based on the information regarding the prediction output from the entropy decoding unit (310), and can determine a specific intra / inter-prediction mode.

[0082] The prediction unit (320) can generate a prediction signal based on various prediction methods described below. For example, the prediction unit (320) can apply intra prediction or inter prediction for prediction of a single block, and can also apply intra prediction and inter prediction simultaneously. This can be called combined inter and intra prediction (CIIP) mode. In addition, the prediction unit can be based on an intra block copy (IBC) prediction mode or a palette mode for prediction of a block. The IBC prediction mode or palette mode can be used for content image / video coding such as games, such as screen content coding (SCC). IBC basically performs prediction within the current picture, but can be performed similarly to inter prediction in that it derives a reference block within the current picture. That is, IBC can utilize at least one of the inter prediction techniques described herein. Palette mode can be viewed as an example of intra coding or intra prediction. When palette mode is applied, information about the palette table and palette index may be included and signaled in the video / image information.

[0083] The intra prediction unit (331) can predict the current block by referring to samples within the current picture. The referenced samples may be located in the neighborhood of the current block, or may be located a certain distance away from the current block, depending on the prediction mode. In intra prediction, the prediction modes may include one or more non-directional modes and multiple directional modes. The intra prediction unit (331) may also determine the prediction mode applied to the current block by using the prediction mode applied to the neighboring blocks.

[0084] The inter prediction unit (332) can derive a prediction block for the current block based on a reference block (reference sample array) specified by a motion vector on a reference picture. At this time, in order to reduce the amount of motion information transmitted in the inter prediction mode, the motion information can be predicted in units of blocks, subblocks, or samples based on the correlation of the motion information between the neighboring blocks and the current block. The motion information can include a motion vector and a reference picture index. The motion information can further include inter prediction direction information (L0 prediction, L1 prediction, Bi prediction, etc.). In the case of inter prediction, the neighboring blocks can include spatial neighboring blocks existing in the current picture and temporal neighboring blocks existing in the reference picture. For example, the inter prediction unit (332) can construct a motion information candidate list based on the neighboring blocks, and derive the motion vector and / or reference picture index of the current block based on the received candidate selection information. Inter prediction can be performed based on various prediction modes, and information about the prediction can include information indicating an inter prediction mode for the current block.

[0085] The addition unit (340) can generate a restoration signal (restored picture, restoration block, restoration sample array) by adding the acquired residual signal to the prediction signal (prediction block, prediction sample array) output from the prediction unit (including the inter-prediction unit (332) and / or intra-prediction unit (331)). When there is no residual for the block to be processed, such as when skip mode is applied, the prediction block can be used as the restoration block.

[0086] The addition unit (340) may be referred to as a restoration unit or restoration block generation unit. The generated restoration signal may be used for intra prediction of the next processing target block within the current picture, may be output after filtering as described below, or may be used for inter prediction of the next picture. Meanwhile, LMCS (luma mapping with chroma scaling) may be applied during the picture decoding process.

[0087] The filtering unit (350) can improve subjective / objective image quality by applying filtering to the restored signal. For example, the filtering unit (350) can apply various filtering methods to the restored picture to generate a modified restored picture, and transmit the modified restored picture to the memory (360), specifically, to the DPB of the memory (360). The various filtering methods can include deblocking filtering, sample adaptive offset, adaptive loop filter, bilateral filter, etc.

[0088] The (modified) reconstructed picture stored in the DPB of the memory (360) can be used as a reference picture in the inter prediction unit (332). The memory (360) can store motion information of a block from which motion information is derived (or decoded) in the current picture and / or motion information of blocks in a picture that has already been reconstructed. The stored motion information can be transferred to the inter prediction unit (260) to be used as motion information of a spatial neighboring block or motion information of a temporal neighboring block. The memory (360) can store reconstructed samples of reconstructed blocks in the current picture and transfer them to the intra prediction unit (331).

[0089] In this specification, the embodiments described in the filtering unit (260), the inter prediction unit (221), and the intra prediction unit (222) of the encoding device (200) can be applied to the filtering unit (350), the inter prediction unit (332), and the intra prediction unit (331) of the decoding device (300) in the same or corresponding manner, respectively.

[0090] FIG. 4 illustrates an image decoding method performed by a decoding device as an embodiment according to the present disclosure.

[0091] Referring to FIG. 4, the transform coefficients of the current block can be derived from the bitstream (S400). That is, the bitstream can include residual information of the current block, and the transform coefficients of the current block can be derived by decoding the residual information.

[0092] Referring to FIG. 4, residual samples of the current block can be derived by performing at least one of dequantization or inverse-transform on the transform coefficients of the current block (S410).

[0093] When adaptive multiple transform selection (MTS) is applied, the inverse transform may be performed based on at least one of DCT-2, DST-7, or DCT-8. Here, DCT-2, DST-7, DCT-8, etc. may be referred to as a transform type, a transform kernel, or a transform core.

[0094] In the present disclosure, the inverse transform may mean a separable transform. However, the present disclosure is not limited thereto, and the inverse transform may also mean a non-separable transform, or may be a concept that includes both a separable transform and a non-separable transform. In addition, the inverse transform in the present disclosure means a primary transform, but is not limited thereto, and may be transformed into an identical / similar form and applied to a secondary transform.

[0095] For example, as a method for inverse transformation, only DCT-2 and a non-separable transform may be used, or a non-separable transform may be used in addition to at least one of DCT-2, DST-7, or DCT-8, or a non-separable transform may replace the transform kernel of one or more of DCT-2, DST-7, or DCT-8.

[0096] As a more specific example, if there are (DCT-2, DCT-2), (DST-7, DST-7), (DCT-8, DST-7), (DST-7, DCT-8), (DCT-8, DCT-8) as transform kernel candidates for separable transform, a non-separable transform can replace or be added to one or more of the five transform kernel candidates. Here, the notation (transform1, transform2) indicates that transform1 is applied in the horizontal direction and transform2 is applied in the vertical direction. If a non-separable transform replaces some of the transform kernel candidates, the remaining transform kernel candidates except (DCT-2, DCT-2) and (DST-7, DST-7) can be replaced with the non-separable transform. However, the above transform kernel candidates are only examples, and other types of DCT and / or DST may be included, and a transform skip may be included as a transform kernel candidate.

[0097] A non-separable transformation can refer to a transformation or inverse transformation based on a non-separable transformation matrix. That is, unlike a separable transformation that performs vertical and horizontal transformations independently by separating the vertical and horizontal transformations, a non-separable transformation can perform horizontal and vertical transformations simultaneously.

[0098] For example, when a non-separable transformation is performed on a 4x4 block, the input data X to the non-separable transformation is as follows:

[0099]

[0100] When the above input data X is expressed in vector form, vector X' can be expressed as follows.

[0101]

[0102] In this case, the non-separable transformation can be performed as in the following mathematical expression 3.

[0103]

[0104] In mathematical expression 3, F represents a transformation coefficient vector, T represents a 16x16 non-separable transformation matrix, and ㆍ represents the multiplication of a matrix and a vector.

[0105] A 16x1 transform coefficient vector F can be derived through the above mathematical expression 3, and the F can be reconstructed into 4x4 blocks according to a predetermined scan order. The scan order can be a horizontal scan, a vertical scan, a diagonal scan, a z-scan, a raster scan, or a predefined scan.

[0106] The non-separable transform set and / or transform kernel for the above non-separable transform can be variously configured based on at least one of a prediction mode (e.g., intra mode, inter mode, etc.), the width, height, or number of pixels of the current block, the position of a sub-block within the current block, explicitly signaled syntax elements, statistical characteristics of surrounding samples, whether a secondary transform is used, or a quantization parameter (QP).

[0107] Specifically, for the intra mode, pre-defined intra prediction modes are grouped to correspond to n sets of non-separable transformations, and each set of non-separable transformations may include k transform kernel candidates. Here, n and k may be arbitrary constants according to rules (conditions) defined identically for the encoding device and the decoding device.

[0108] The number of non-separable transformation sets and / or the number of transformation kernel candidates included in the non-separable transformation sets may be configured differently depending on the width and / or height of the current block. For example, for a 4x4 block, n1 non-separable transformation sets and k1 transformation kernel candidates may be configured. For a 4x8 block, n2 non-separable transformation sets and k2 transformation kernel candidates may be configured. In addition, the number of non-separable transformation sets and the number of transformation kernel candidates included in each non-separable transformation set may be configured differently depending on the product of the width and height of the current block. For example, when the product of the width and height of the current block is equal to or greater than 256, n3 non-separable transformation sets and k3 transformation kernel candidates may be configured, and otherwise, n4 non-separable transformation sets and k4 transformation kernel candidates may be configured. That is, since the degree of change in the statistical characteristics of the residual signal varies depending on the block size, the number of non-separable transformation sets and transformation kernel candidates can be configured differently to reflect this.

[0109] If the current block is divided into multiple sub-blocks, the statistical characteristics of the residual signal may be different for each sub-block, and therefore the number of non-separable transform sets and transform kernel candidates may be configured differently. For example, if a 4x8 or 8x4 block is divided into two 4x4 sub-blocks and a non-separable transform is applied to each sub-block, n5 non-separable transform sets and k5 transform kernel candidates may be configured for the upper left 4x4 sub-block, and n6 non-separable transform sets and k6 transform kernel candidates may be configured for the other 4x4 sub-blocks.

[0110] Based on the explicitly signaled syntax element, the number of non-separable transformation sets and transformation kernel candidates can be configured differently. As the syntax element, information indicating any one of a plurality of non-separable transformation configurations can be used. For example, if three types of non-separable transformation configurations are supported (i.e., n7 non-separable transformation sets and k7 transformation kernel candidates, n8 non-separable transformation sets and k8 transformation kernel candidates, n9 non-separable transformation sets and k9 transformation kernel candidates), the corresponding syntax element can have values ​​of 0, 1, and 2, and the non-separable transformation configuration applied to the current block can be determined according to the value of the signaled syntax element.

[0111] Depending on whether and / or which secondary transformation is applied, the number of non-separable transformation sets and transformation kernel candidates can be configured differently. For example, if no secondary transformation is applied, n 10 A set of non-separable transformations and k 10 A non-separable transformation configuration including n transformation kernel candidates can be applied. When a second transformation is applied, n 11 A set of non-separable transformations and k 11 A non-separable transformation configuration including a transformation kernel candidate can be applied.

[0112] Depending on the quantization parameter (QP) and / or the range of QP values, different non-separable transform configurations can be applied. For example, if the QP value has a small value, n 12 A set of non-separable transformations and k 12 A non-separable transformation configuration including n transformation kernel candidates can be applied. On the other hand, if the QP value has a large value, n 13 A set of non-separable transformations and k 13 A non-separable transform configuration including a candidate transform kernel can be applied. If the QP value is less than or equal to a threshold (e.g., 32), the case is classified as having a small QP value, and otherwise, the case is classified as having a large QP value. Alternatively, the QP value range can be divided into three or more ranges, and a different non-separable transform configuration can be applied to each range.

[0113] For relatively large blocks, instead of using a non-separable transform corresponding to the width and height of the block, the block can be divided into multiple sub-blocks and a non-separable transform corresponding to the width and height of the sub-blocks can be used. For example, when performing a non-separable transform on a 4x8 block, the 4x8 block can be divided into two 4x4 sub-blocks and a 4x4 block-based non-separable transform can be used for each 4x4 sub-block. Alternatively, for an 8x16 block, the block can be divided into two 8x8 sub-blocks and an 8x8 block-based non-separable transform can be used.

[0114] The above non-separable transform set can be determined based on the intra prediction mode of the current block and a mapping table. The mapping table can define a mapping relationship between pre-defined intra prediction modes and non-separable transform sets. The pre-defined intra prediction modes can include two non-directional modes and 65 directional modes. In general, the size of the transform kernel of a non-separable transform is larger than that of a separable transform. This means that the computational complexity required for the transform process is high and the memory required for storing the transform kernel is large. Meanwhile, a separable transform can only consider statistical characteristics existing in the horizontal and / or vertical directions, but a non-separable transform can simultaneously consider statistical characteristics in a two-dimensional space including the horizontal and vertical directions, thereby providing better compression efficiency. Since the statistical characteristics and diversity of the residual vary depending on the directionality of the intra prediction mode, there may be cases where a non-separable transform is absolutely necessary, and there may exist intra prediction modes where the characteristics of the residual can be sufficiently identified using only a separable transform. Therefore, by predefining which transformation to use according to the intra prediction mode in the encoding device and the decoding device, the transformation process can be designed with optimized complexity and memory requirements. The non-directional mode may include the planar mode (number 0) and the DC mode (number 1), and the directional mode may include the intra prediction modes (numbers 2 to 66). However, this is merely an example, and the present disclosure may also be applied to cases where the number of pre-defined intra prediction modes is different.

[0115] Due to the application of wide angle intra prediction (WAIP), the pre-defined intra prediction modes may further include intra prediction modes from -14 to -1 and intra prediction modes from 67 to 80.

[0116] FIG. 5 exemplarily illustrates intra prediction modes and their prediction directions according to the present disclosure. Referring to FIG. 5 , modes -14 to -1 and 2 to 33, and modes 35 to 80 are symmetrical with respect to the prediction direction with respect to mode 34. For example, modes 10 and 58 are symmetrical with respect to the direction corresponding to mode 34, and mode -1 is symmetrical with mode 67. Therefore, for vertical modes that are symmetrical with respect to horizontal modes with respect to mode 34, input data can be transposed and used. Transposing input data means that rows in the input data MxN of a 2D block become columns and columns become rows to form NxM data.

[0117] For example, when a 4x4 block is used, the 16 data that make up the 4x4 block can be appropriately arranged to form a 16x1 one-dimensional vector for non-separable transformation. At this time, the one-dimensional vector can be formed in row-major order or column-major order. The residual samples resulting from the non-separable transformation can be arranged in the above order to form a two-dimensional block.

[0118] For modes -14 to -1 and 2 to 33, if the data arrangement order for constructing a 16x1 input vector is row-major order, for modes 35 to 80, the input vector can be constructed according to column-major order.

[0119] Although mode 34 can be considered neither a horizontal mode nor a vertical mode, it is classified as belonging to the horizontal mode in the present disclosure. That is, for modes -14 to -1 and 2 to 33, the input data alignment method for the horizontal mode, i.e., row-major order, can be used, and the input data can be transposed and used for the vertical mode that is symmetrical around mode 34.

[0120] For non-square blocks, the symmetry in square blocks (i.e., the symmetry between the P mode and the (68-P) mode in an NxN block (2<=P<=33) or the symmetry between the Q mode and the (66-Q) mode (-14<=Q<=-1)) cannot be utilized. Therefore, in addition to the symmetry based only on the intra prediction mode, the symmetry between block shapes that are in a transpose relationship with each other, i.e., the symmetry between the KxL block and the LxK block, can also be utilized. Specifically, a symmetry relationship exists between a KxL block predicted by the P mode and an LxK block predicted by the (68-P) mode. Alternatively, a symmetry relationship exists between a KxL block predicted by the Q mode and an LxK block predicted by the (66-Q) mode.

[0121] Since a KxL block with mode 2 and an LxK block with mode 66 can be viewed as symmetrical to each other, the same transform kernel can be applied to the KxL block and the LxK block. If a non-separable transform set for the intra prediction mode of the KxL block is mapped, in order to apply a non-separable transform to the LxK block, the non-separable transform set can be derived through a mapping table corresponding to the KxL block based on the (68-P) mode instead of the P mode applied to the LxK block. Alternatively, the non-separable transform set can be derived through a mapping table corresponding to the KxL block based on the (66-Q) mode instead of the Q mode applied to the LxK block.

[0122] For example, to apply a non-separable transformation to an LxK block, the non-separable transformation set can be selected based on mode 2 instead of mode 66. Also, for a KxL block, the input data can be read in a pre-determined order (e.g., row-major order or column-major order) to form a one-dimensional vector and then the corresponding non-separable transformation can be applied. For an LxK block, the input data can be read in the transposed order to form a one-dimensional vector and then the corresponding non-separable transformation can be applied. That is, if the KxL block is read in row-major order, the LxK block can be read in column-major order. Conversely, if the KxL block is read in column-major order, the LxK block can be read in row-major order.

[0123] In addition, when mode 34 is applied to a KxL block, a non-separable transformation set can be determined based on mode 34, and the input data can be read in a predetermined order to form a one-dimensional vector to perform the corresponding non-separable transformation. When mode 34 is applied to an LxK block, a non-separable transformation set can be determined based on mode 34 as well, but the input data can be read in a transposed order to form a one-dimensional vector to perform the corresponding non-separable transformation.

[0124] Although the present disclosure describes a method for determining a non-separable transformation set and a method for organizing input data based on a KxL block, the non-separable transformation can be performed based on an LxK block by utilizing the symmetry described above for a KxL block in the same manner. Alternatively, a block whose width is greater than its height can be restricted to be used as a reference block. Alternatively, symmetry can be restricted not to be utilized for non-square blocks. In this case, non-square blocks can use a different number of non-separable transformation sets and / or transformation kernel candidates than square blocks, and can select a non-separable transformation set using a different mapping table than square blocks.

[0125] An example of a mapping table for selecting a non-separable transformation set is as follows.

[0126] predModeIntraTrSetIdxpredModeIntra < 040 <= predModeIntra <= 102 <= predModeIntra <= 12113 <= predModeIntra <= 23224 <= predModeIntra <= 44345 <= predModeIntra <= 55256 <= predModeIntra <= 66167 <= predModeIntra <= 804

[0127] Table 1 shows an example of assigning non-separable transform sets according to intra prediction modes when there are five non-separable transform sets. The value of predModeIntra indicates the value of the intra prediction mode considering WAIP, and TrSetIdx is an index indicating a specific non-separable transform set. In Table 1, it can be confirmed that the same non-separable transform set is applied to modes located in symmetrical directions according to the intra prediction mode. Table 1 is only an example using five non-separable transform sets and does not limit the total number of non-separable transform sets for non-separable transforms.

[0128] Alternatively, as shown in Table 2, non-separable transform may not be applied to WAIP for compression performance.

[0129] predModeIntraTrSetIdx0 <= predModeIntra <= 102 <= predModeIntra <= 12113 <= predModeIntra <= 23224 <= predModeIntra <= 44345 <= predModeIntra <= 55256 <= predModeIntra <= 661

[0130] Alternatively, as shown in Table 3, instead of constructing a separate non-separable transform set for WAIP, a non-separable transform set corresponding to an adjacent intra prediction mode may be shared.

[0131] predModeIntraTrSetIdxpredModeIntra < 010 <= predModeIntra <= 102 <= predModeIntra <= 12113 <= predModeIntra <= 23224 <= predModeIntra <= 44345 <= predModeIntra <= 55256 <= predModeIntra <= 801

[0132] The above non-separable transform set may include multiple transform kernel candidates, and any one of the multiple transform kernel candidates may be selectively used. For this purpose, an index signaled through a bitstream may be used. Alternatively, any one of the multiple transform kernel candidates may be implicitly determined based on context information of the current block. Here, the context information may mean the size of the current block or whether a non-separable transform is applied to a neighboring block. Here, the size of the current block may be defined by the width, the height, the maximum / minimum values ​​of the width and the height, the sum of the width and the height, or the product of the width and the height.

[0133] The non-separable transform according to the present disclosure may include at least one of NSPT for the primary (inverse) transform or LFNST for the secondary (inverse) transform. The non-separable transform may be applied to at least one of a coding unit predicted based on an intra mode (hereinafter referred to as an intra-CU or intra coding unit) or a coding unit predicted based on an inter mode (hereinafter referred to as an inter-CU or inter coding unit).

[0134] To reduce the computational burden of encoding or find a more suitable performance-complexity trade-off in the encoder, the non-separable transform can be configured to apply only to either intra-CU or inter-CU. Alternatively, if the available computational resources for encoding are sufficient (e.g., multiple servers can be used to simultaneously try various coding options), the non-separable transform can be configured to apply both intra-CU and inter-CU. Therefore, the following configurations are possible.

[0135] [Configuration A-1] Configuration that applies non-separable transformation only to intra-CU

[0136] [Configuration A-2] Configuration that applies non-separable transformation only to inter-CU

[0137] [Configuration A-3] Configuration that applies non-separable transformations to intra-CU and inter-CU

[0138] A picture can be composed of one or more slices. A slice can consist only of intra-CUs, and such a slice can be referred to as an intra-slice or I-slice. Alternatively, a slice can consist of both intra-CUs and inter-CUs. Such a slice can also be referred to as an inter-slice, or depending on the number of reference frames and the prediction direction, as a P-slice or B-slice. Since most P / B-slices consist of a large number of inter-CUs and a small number of intra-CUs, in some cases, encoding complexity can be reduced without significant performance degradation even if the non-separable transformation is not applied to the intra-CUs. Alternatively, the non-separable transformation can be applied only to the intra-CUs of P / B-slices, while not applying the non-separable transformation to the I-slices. In this case, the latency due to the transformation can be reduced, and thus the throughput for the I-slice can be increased. Therefore, the non-separable transformations that can be applied to intra-CU can be divided into non-separable transformations that can be performed on I-slice and non-separable transformations that can be performed on P / B-slice, and the following configurations are possible. Here, a non-separable transformation with the same transformation kernel or structure may or may not be applied to I-slice and P / B-slice. Hereinafter, the non-separable transformation that can be applied to intra-CU is called intra-NST, and the non-separable transformation that can be applied to inter-CU is called inter-NST.

[0139] [Configuration B-1] Configuration that applies intra-NST only to intra-CUs belonging to I-slice

[0140] [Configuration B-2] Configuration that applies intra-NST only to intra-CUs belonging to P / B-slice

[0141] [Configuration B-3] Configuration that applies intra-NST to intra-CUs belonging to I-slice and P / B-slice

[0142] The following seven combinations can be derived through the combination of the aforementioned configurations A and B.

[0143] ([Configuration A-1], [Configuration B-1]), ([Configuration A-1], [Configuration B-2]), ([Configuration A-1], [Configuration B-3]), ([Configuration A-2]), ([Configuration A-3], [Configuration B-1]), ([Configuration A-3], [Configuration B-2]), ([Configuration A-3], [Configuration B-3])

[0144] The above combinations may be implemented without separate syntax elements or may be implemented by syntax element(s).

[0145] First, let's examine the case where the above combinations are implemented without syntax elements. If the encoding device determines that a non-separable transformation is applied, whether the non-separable transformation is applied and / or the transformation kernel for the non-separable transformation can be specified for each specific block unit (e.g., coding unit, transformation unit) via a transformation index. If the non-separable transformation is not applied, the transformation index can be signaled with a value indicating that the non-separable transformation is not applied.

[0146] Alternatively, let's look at a case where the above combinations are implemented by separate syntax element(s). Here, the syntax element(s) may be related to whether a non-separable transformation is enabled. First, in order to specify a specific combination for the entire current sequence, existing or added syntax element(s) belonging to a first higher-level syntax may be utilized. Here, the first higher-level syntax may include at least one of a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptive parameter set (APS), a picture header (PH), or a slice header (SH). Additionally, in order to specify a specific combination applied to the current slice, existing or added syntax element(s) belonging to a second higher-level syntax may be utilized. Here, the second higher-level syntax may include at least one of a picture parameter set (PPS), an adaptive parameter set (APS), a picture header (PH), a slice header (SH), or slice data. At this time, the setting of the non-separable transformation specified through the first upper level syntax can be updated (or overwritten, overridden) with the setting of the non-separable transformation specified through the second upper level syntax. Alternatively, the setting of the non-separable transformation specified in the first upper level syntax can be applied to the entire sequence (or picture, slice) without resetting through the second upper level syntax. As a syntax element for supporting the above combinations, at least one of the following 1 to 5 syntax elements can be defined in the first upper level syntax. For the convenience of explanation, it is assumed below that the first upper level syntax is SPS.

[0147] 1. First non-separable conversion enable flag (sps_lfnst_enabled_flag)

[0148] The first non-separable transformation enabled flag may indicate whether the non-separable transformation is enabled. For example, if the value of the first non-separable transformation enabled flag is 1, this may indicate that the non-separable transformation is enabled. In this case, the non-separable transformation may be applied to both intra-CU and inter-CU. On the other hand, if the value of the first non-separable transformation enabled flag is 0, this may indicate that the non-separable transformation is not enabled. In this case, the non-separable transformation may not be applied to both intra-CU and inter-CU.

[0149] If the value of the first non-separable transformation enabled flag is 0, the non-separable transformation is not applied (enabled), and thus the transformation index may not be signaled. In this case, the transformation index can be inferred to be a value (e.g., 0) indicating that the non-separable transformation is not applied.

[0150] If the first non-separable transformation enabled flag is not signaled or does not exist, the value of the first non-separable transformation enabled flag can be inferred to be a value (e.g., 0) indicating that non-separable transformation is not enabled.

[0151] 2. First intra-non-separable conversion enable flag (sps_intra_lfnst_enabled_flag)

[0152] The first intra-nonseparable transformation enabled flag may indicate whether intra-NST is enabled. For example, if the value of the first intra-nonseparable transformation enabled flag is 1, this may indicate that intra-NST is enabled, and if the value of the first intra-nonseparable transformation enabled flag is 0, this may indicate that intra-NST is not enabled.

[0153] If the value of the first intra non-separable transformation available flag is 0, the transformation index may not be signaled for the intra-CU. In this case, the value of the transformation index may be inferred to be a value (e.g., 0) indicating that the non-separable transformation is not applied.

[0154] If the first intra-nonseparable transformation enabled flag is not signaled or is not present, the value of the first intra-nonseparable transformation enabled flag may be inferred to be a value (e.g., 0) indicating that intra-NST is not enabled, or may be set to the same value as the first intra-nonseparable transformation enabled flag.

[0155] 3. First inter-non-separable conversion enable flag (sps_inter_lfnst_enabled_flag)

[0156] The first inter-inseparable transformation enabled flag may indicate whether inter-NST is enabled. For example, if the value of the first inter-inseparable transformation enabled flag is 1, this may indicate that inter-NST is enabled, and if the value of the first inter-inseparable transformation enabled flag is 0, this may indicate that inter-NST is not enabled.

[0157] If the value of the first inter-inseparable transformation available flag is 0, the transformation index may not be signaled for the inter-CU. In this case, the value of the transformation index may be inferred as a value (e.g., 0) indicating that the inseparable transformation is not applied.

[0158] If the first inter-NST enabled flag is not signaled or is not present, the value of the first inter-NST enabled flag may be inferred to be a value (e.g., 0) indicating that inter-NST is not enabled, or may be set to the same value as the first inter-NST enabled flag.

[0159] 4. First intra slice non-separable conversion enabled flag (sps_intra_lfnst_intra_slice_enabled_flag)

[0160] The first intra-slice non-separable transformation enabled flag can indicate whether intra-NST is applied (enabled) to the intra-slice (I-slice). For example, if the value of the first intra-slice non-separable transformation enabled flag is 1, this can indicate that intra-NST is applied (enabled) to the I-slice, and if the value of the first intra-slice non-separable transformation enabled flag is 0, this can indicate that intra-NST is not applied (enabled) to the I-slice.

[0161] If the value of the first intra-slice non-separable transformation available flag is 0, the transformation index may not be signaled for the intra-CU present in the I-slice. In this case, the value of the corresponding transformation index may be inferred as a value (e.g., 0) indicating that the non-separable transformation is not applied.

[0162] If the first intra slice non-separable transformation enabled flag is not signaled or is not present, the value of the first intra slice non-separable transformation enabled flag may be inferred to be a value (e.g., 0) indicating that intra-NST is not enabled for the I-slice, or may be set to the same value as the first intra slice non-separable transformation enabled flag or the first non-separable transformation enabled flag described above.

[0163] 5. First inter-slice non-separable conversion enabled flag (sps_intra_lfnst_inter_slice_enabled_flag)

[0164] The first inter-slice non-separable transformation enabled flag can indicate whether intra-NST is applied (enabled) to the inter-slice (P / B-slice). For example, if the value of the first inter-slice non-separable transformation enabled flag is 1, this can indicate that intra-NST is applied (enabled) to the P / B-slice, and if the value of the first inter-slice non-separable transformation enabled flag is 0, this can indicate that intra-NST is not applied (enabled) to the P / B-slice.

[0165] If the value of the first inter-slice non-separable transformation available flag is 0, the transformation index may not be signaled for the intra-CU existing in the P / B-slice. In this case, the value of the transformation index may be inferred as a value (e.g., 0) indicating that the non-separable transformation is not applied.

[0166] If the first inter-slice non-separable transformation enabled flag is not signaled or is not present, the value of the first inter-slice non-separable transformation enabled flag may be inferred to be a value indicating that intra-NST is not enabled for the P / B-slice, or may be set to the same value as the first intra-slice non-separable transformation enabled flag or the first non-separable transformation enabled flag described above.

[0167] In SPS, the above combinations can be implemented through the syntax structures presented in the following table based on one or more of the syntax elements.

[0168] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flag...}

[0169] According to Table 4, the first non-separable conversion enabled flag (sps_lfnst_enabled_flag) can be signaled from SPS.

[0170] When the value of sps_lfnst_enabled_flag is 1, non-separable transformations can be applied (enabled) to intra-CUs and inter-CUs belonging to a sequence. In addition, when the value of sps_lfnst_enabled_flag is 1, non-separable transformations can be applied (enabled) to intra-CUs belonging to I-slices and P / B-slices within a sequence. On the other hand, when the value of sps_lfnst_enabled_flag is 0, non-separable transformations may not be applied (enabled) to intra-CUs belonging to I-slices and P / B-slices within a sequence. In addition, when the value of sps_lfnst_enabled_flag is 0, non-separable transformations may not be applied (enabled) to intra-CUs belonging to I-slices and P / B-slices within a sequence.

[0171] seq_parameter_set_rbsp( ) {...sps_intra_lfnst_enabled_flagsps_inter_lfnst_enabled_flag...}

[0172] According to Table 5, the first intra-lfnst-enabled flag (sps_intra_lfnst_enabled_flag) and the first inter-lfnst-enabled flag (sps_inter_lfnst_enabled_flag) can be signaled from SPS.

[0173] When the values ​​of sps_intra_lfnst_enabled_flag and sps_inter_lfnst_enabled_flag are both 1, non-separable transformations can be applied (enabled) to intra-CUs and inter-CUs belonging to a sequence, and non-separable transformations can be applied (enabled) to intra-CUs belonging to I-slices and P / B-slices within a sequence.

[0174] When the value of sps_intra_lfnst_enabled_flag is 1 and the value of sps_inter_lfnst_enabled_flag is 0, non-separable transformation can be applied (enabled) to intra-CUs belonging to a sequence, but non-separable transformation may not be applied (enabled) to inter-CUs belonging to a sequence. In addition, when the value of sps_intra_lfnst_enabled_flag is 1 and the value of sps_inter_lfnst_enabled_flag is 0, non-separable transformation can be applied (enabled) to intra-CUs belonging to I-slices and P / B-slices within a sequence.

[0175] If the value of sps_intra_lfnst_enabled_flag is 0 and the value of sps_inter_lfnst_enabled_flag is 1, non-separable transformation may be applied (enabled) to inter-CUs belonging to a sequence, but non-separable transformation may not be applied (enabled) to intra-CUs belonging to a sequence.

[0176] If the values ​​of sps_intra_lfnst_enabled_flag and sps_inter_lfnst_enabled_flag are both 0, non-separable transformations may not be applied (enabled) to intra-CUs and inter-CUs belonging to a sequence, and non-separable transformations may not be applied (enabled) to intra-CUs belonging to I-slices and P / B-slices within a sequence.

[0177] seq_parameter_set_rbsp( ) {...sps_intra_lfnst_intra_slice_enabled_flagsps_intra_lfnst_inter_slice_enabled_flagsps_inter_lfnst_enabled_flag...}

[0178] According to Table 6, the first intra-slice non-separable conversion enabled flag (sps_intra_lfnst_intra_slice_enabled_flag), the first inter-slice non-separable conversion enabled flag (sps_intra_lfnst_inter_slice_enabled_flag), and the first inter-slice non-separable conversion enabled flag (sps_inter_lfnst_enabled_flag) can be signaled from SPS.

[0179] If the value of sps_intra_lfnst_intra_slice_enabled_flag is 1 and the values ​​of sps_intra_lfnst_inter_slice_enabled_flag and sps_inter_lfnst_enabled_flag are both 0, non-separable transformations can be applied (enabled) to intra-CUs belonging to I-slices within a sequence, and non-separable transformations can not be applied (enabled) to intra-CUs and inter-CUs belonging to P / B-slices within a sequence.

[0180] If the value of sps_intra_lfnst_inter_slice_enabled_flag is 1, and the values ​​of sps_intra_lfnst_intra_slice_enabled_flag and sps_inter_lfnst_enabled_flag are both 0, non-separable transformations can be applied (enabled) to intra-CUs belonging to P / B-slices within a sequence, and non-separable transformations can not be applied (enabled) to intra-CUs and inter-CUs belonging to I-slices within a sequence.

[0181] If the values ​​of sps_intra_lfnst_intra_slice_enabled_flag and sps_intra_lfnst_inter_slice_enabled_flag are both 1, and the value of sps_inter_lfnst_enabled_flag is 0, non-separable transformations can be applied (enabled) to intra-CUs belonging to I-slices and P / B-slices within a sequence, and non-separable transformations can not be applied (enabled) to inter-CUs within a sequence.

[0182] If the values ​​of sps_intra_lfnst_intra_slice_enabled_flag and sps_intra_lfnst_inter_slice_enabled_flag are both 0, and the value of sps_inter_lfnst_enabled_flag is 1, non-separable transformations can be applied (enabled) to inter-CUs within a sequence, and non-separable transformations can not be applied (enabled) to intra-CUs within a sequence.

[0183] If the values ​​of sps_intra_lfnst_intra_slice_enabled_flag and sps_inter_lfnst_enabled_flag are both 1, and the value of sps_intra_lfnst_inter_slice_enabled_flag is 0, non-separable transformations can be applied (enabled) to inter-CUs and intra-CUs belonging to I-slices within a sequence, and non-separable transformations can not be applied (enabled) to intra-CUs belonging to P / B-slices within a sequence.

[0184] If the values ​​of sps_intra_lfnst_inter_slice_enabled_flag and sps_inter_lfnst_enabled_flag are both 1, and the value of sps_intra_lfnst_intra_slice_enabled_flag is 0, non-separable transformations can be applied (enabled) to the inter-CU and intra-CU belonging to the P / B-slice within the sequence, and non-separable transformations can not be applied (enabled) to the intra-CU belonging to the I-slice within the sequence.

[0185] If the values ​​of sps_intra_lfnst_intra_slice_enabled_flag, sps_intra_lfnst_inter_slice_enabled_flag, and sps_inter_lfnst_enabled_flag are all 1, non-separable transformations can be applied (enabled) to inter-CUs and intra-CUs belonging to I-slices and P / B-slices within a sequence.

[0186] If the values ​​of sps_intra_lfnst_intra_slice_enabled_flag, sps_intra_lfnst_inter_slice_enabled_flag, and sps_inter_lfnst_enabled_flag are all 0, non-separable transformations may not be applied (enabled) to intra-CUs and inter-CUs within a sequence.

[0187] seq_parameter_set_rbsp() {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_inter_slice_enabled_flag...}

[0188] At least one of the first non-separable transformation enabled flag (sps_lfnst_enabled_flag) or the first inter-slice non-separable transformation enabled flag (sps_intra_lfnst_inter_slice_enabled_flag) may be signaled from the SPS. According to Table 7, sps_intra_lfnst_inter_slice_enabled_flag may be signaled when the value of sps_lfnst_enabled_flag is 1 (i.e., sps_lfnst_enabled_flag indicates that non-separable transformation is enabled).

[0189] If the values ​​of sps_lfnst_enabled_flag and sps_intra_lfnst_inter_slice_enabled_flag are both 1, non-separable transformations can be applied (enabled) to intra-CUs and inter-CUs belonging to a sequence, and non-separable transformations can also be applied (enabled) to intra-CUs belonging to a P / B-slice.

[0190] If the value of sps_lfnst_enabled_flag is 1 and the value of sps_intra_lfnst_inter_slice_enabled_flag is 0, non-separable transformations may be applied (enabled) to intra-CUs and inter-CUs belonging to a sequence, but non-separable transformations may not be applied (enabled) to intra-CUs belonging to a P / B-slice.

[0191] If the values ​​of sps_lfnst_enabled_flag and sps_intra_lfnst_inter_slice_enabled_flag are both 0, non-separable transformations may not be applied (enabled) to intra-CUs and inter-CUs belonging to the sequence.

[0192] seq_parameter_set_rbsp() {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_enabled_flag...}

[0193] At least one of the first non-separable transformation enabled flag (sps_lfnst_enabled_flag) or the first intra non-separable transformation enabled flag (sps_intra_lfnst_enabled_flag) may be signaled from the SPS. According to Table 8, sps_intra_lfnst_enabled_flag may be signaled when the value of sps_lfnst_enabled_flag is 1 (i.e., sps_lfnst_enabled_flag indicates that non-separable transformation is enabled).

[0194] If the values ​​of sps_lfnst_enabled_flag and sps_intra_lfnst_enabled_flag are both 1, non-separable transformations can be applied (enabled) to intra-CUs and inter-CUs belonging to a sequence. In this case, non-separable transformations can be applied (enabled) to intra-CUs and inter-CUs belonging to I-slices and P / B-slices within a sequence.

[0195] When the value of sps_lfnst_enabled_flag is 1 and the value of sps_intra_lfnst_enabled_flag is 0, non-separable transformation can be applied (enabled) to inter-CUs belonging to a sequence, and non-separable transformation can not be applied (enabled) to intra-CUs belonging to a sequence.

[0196] Except for cases where non-separable transformations are not applied, the combinations examined through the SPS structures of Tables 4 to 8 are as shown in Table 9 below.

[0197] Intra-NSTInter-NSTI-SliceP / B-SliceP / B SliceTable 4OOOTable 5OOOOOOTable 6OOOOOOOOOOOOTable 7OOOOOOTable 8OOOO

[0198] As described above, the first higher-level syntax can control the overall configuration regarding the application (enabled) of the non-separable transformation. Additionally, the second higher-level syntax can control the configuration regarding the application (enabled) of the non-separable transformation to the corresponding slice (or picture). To set the non-separable transformation through the second higher-level syntax, the second higher-level syntax can define at least one of the following 1 to 5 syntax elements. For the convenience of explanation, it is assumed below that the second higher-level syntax is SH.

[0199] 1. Second non-separable conversion enable flag (sh_lfnst_enabled_flag)

[0200] The second non-separable transformation available flag may indicate whether the non-separable transformation is enabled for the slice corresponding to the current SH. For example, if the value of the second non-separable transformation available flag is 1, this may indicate that the non-separable transformation is enabled for the slice corresponding to the current SH. On the other hand, if the value of the second non-separable transformation available flag is 0, this may indicate that the non-separable transformation is not enabled for the slice corresponding to the current SH. Here, the non-separable transformation may include both the intra-NST and inter-NST described above.

[0201] If the value of the second non-separable transformation enabled flag is 0, the transformation index may not be signaled. In this case, the transformation index can be inferred to be a value (e.g., 0) indicating that non-separable transformation is not enabled.

[0202] If the second non-separable transformation enabled flag is not signaled or is not present, the value of the second non-separable transformation enabled flag may be inferred to be a value (e.g., 0) indicating that non-separable transformation is not enabled, or may be set to the same value as the first non-separable transformation enabled flag.

[0203] 2. Second intra-nonseparable conversion enable flag (sh_intra_lfnst_enabled_flag)

[0204] The second intra non-separable transformation enabled flag may indicate whether intra-NST is applied (enabled) for the slice corresponding to the current SH. For example, if the value of the second intra non-separable transformation enabled flag is 1, this may indicate that intra-NST is applied (enabled) for the slice corresponding to the current SH, and if the value of the second intra non-separable transformation enabled flag is 0, this may indicate that intra-NST is not applied (enabled) for the slice corresponding to the current SH.

[0205] If the value of the second intra non-separable transformation available flag is 0, the transformation index may not be signaled for the intra-CU. In this case, the value of the transformation index may be inferred to be a value (e.g., 0) indicating that the non-separable transformation is not applied.

[0206] If the second intra non-separable transformation enabled flag is not signaled or is not present, the value of the second intra non-separable transformation enabled flag may be inferred to be a value (e.g., 0) indicating that intra-NST is not enabled, or may be set to the same value as the first intra non-separable transformation enabled flag.

[0207] Alternatively, if the second intra non-separable transformation enabled flag is not signaled or does not exist, the value of the second intra non-separable transformation enabled flag may be set to the value of (sps_intra_lfnst_intra_slice_enabled_flag || sps_intra_lfnst_inter_slice_enabled_flag), where || may represent an OR operation.

[0208] Alternatively, if the second intra non-separable conversion enabled flag is not signaled or does not exist, the value of the second intra non-separable conversion enabled flag may be set to the value of ((sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag) || (sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag)), where || may represent an OR operation, and && may represent an AND operation. sh_slice_type may be a syntax element or a variable that represents the type of slice corresponding to the current SH. sh_slice_type may have a value of I, P, or B, which may represent an I-slice, a P-slice, or a B-slice, respectively. The value of the second intra non-separable conversion enabled flag may be set to 1 if sh_slice_type is I-slice and the value of sps_intra_lfnst_intra_slice_enabled_flag is 1 and / or if sh_slice_type is not I-slice and the value of sps_intra_lfnst_inter_slice_enabled_flag is 1. Otherwise, the value of the second intra non-separable conversion enabled flag may be set to 0.

[0209] 3. Second inter-separate conversion enable flag (sh_inter_lfnst_enabled_flag)

[0210] The second inter-non-separable transformation enabled flag may indicate whether inter-NST is enabled for the slice corresponding to the current SH. The second inter-non-separable transformation enabled flag may be signaled when the slice is an inter slice. For example, when the value of the second inter-non-separable transformation enabled flag is 1, this may indicate that inter-NST is enabled for the slice corresponding to the current SH, and when the value of the second inter-non-separable transformation enabled flag is 0, this may indicate that inter-NST is not enabled for the slice corresponding to the current SH.

[0211] If the value of the second inter-inseparable transformation available flag is 0, the transformation index may not be signaled for the inter-CU. In this case, the value of the transformation index may be inferred as a value (e.g., 0) indicating that the inseparable transformation is not applied.

[0212] If the second inter-non-separable conversion enabled flag is not signaled or does not exist, the value of the second inter-non-separable conversion enabled flag may be inferred to be a value (e.g., 0) indicating that inter-NST is not enabled, or may be set to the same value as the first inter-non-separable conversion enabled flag.

[0213] 4. Second intra slice non-separable conversion enable flag (sh_intra_lfnst_intra_slice_enabled_flag)

[0214] The second intra-slice non-separable transformation enabled flag may indicate whether intra-NST is applied (enabled) for the slice corresponding to the current SH. This may be the case when the slice is an I-slice. For example, if the value of the second intra-slice non-separable transformation enabled flag is 1, this may indicate that intra-NST is applied (enabled) for the slice corresponding to the current SH when it is an I-slice. On the other hand, if the value of the second intra-slice non-separable transformation enabled flag is 0, this may indicate that intra-NST is not applied (enabled) for the slice corresponding to the current SH when it is an I-slice.

[0215] If the value of the second intra-slice non-separable transformation available flag is 0, the transformation index may not be signaled for the intra-CU belonging to the I-slice. In this case, the value of the transformation index may be inferred as a value (e.g., 0) indicating that the non-separable transformation is not applied.

[0216] If the second intra slice non-separable transformation available flag is not signaled or is not present, the value of the second intra slice non-separable transformation available flag may be inferred to be a value (e.g., 0) indicating that intra-NST is not enabled, or may be set to the same value as the first intra slice non-separable transformation available flag or the first intra slice non-separable transformation available flag described above.

[0217] 5. Second inter-slice non-separable conversion enable flag (sh_intra_lfnst_inter_slice_enabled_flag)

[0218] The second inter-slice non-separable transformation enabled flag may indicate whether intra-NST is applied (enabled) for the slice corresponding to the current SH. This may be the case when the slice is a P / B-slice. For example, when the value of the second inter-slice non-separable transformation enabled flag is 1, this may indicate that intra-NST is applied (enabled) for the slice corresponding to the current SH when it is a P / B-slice. On the other hand, when the value of the second inter-slice non-separable transformation enabled flag is 0, this may indicate that intra-NST is not applied (enabled) for the slice corresponding to the current SH when it is a P / B-slice.

[0219] If the value of the second inter-slice non-separable transformation available flag is 0, the transformation index may not be signaled for the intra-CU belonging to the P / B-slice. In this case, the value of the transformation index can be inferred as a value (e.g., 0) indicating that the non-separable transformation is not applied.

[0220] If the second inter-slice non-separable transformation enabled flag is not signaled or does not exist, the value of the second inter-slice non-separable transformation enabled flag may be inferred to be a value (e.g., 0) indicating that intra-NST is not enabled, or may be set to the same value as the first intra-slice non-separable transformation enabled flag or the first inter-slice non-separable transformation enabled flag described above.

[0221] In SH, the combinations listed above can be implemented through the syntax structures presented in the following table based on the above syntax element(s).

[0222] slice_header() {...if( sps_lfnst_enabled_flag )sh_lfnst_enabled_flag...}

[0223] According to Table 10, a second non-separable transformation enabled flag (sh_lfnst_enabled_flag) may be signaled from SH. If the value of sh_lfnst_enabled_flag is 1, this may indicate that non-separable transformation is enabled for intra-CU and inter-CU belonging to the current slice. Alternatively, if the value of sh_lfnst_enabled_flag is 1, this may indicate that non-separable transformation is enabled for the current slice regardless of the type of the slice. On the other hand, if the value of sh_lfnst_enabled_flag is 0, this may indicate that non-separable transformation is not enabled for the current slice regardless of the type of the slice.

[0224] sh_lfnst_enabled_flag can be adaptively signaled based on the first non-separable conversion enable flag (sps_lfnst_enabled_flag). For example, sh_lfnst_enabled_flag can be signaled based on sps_lfnst_enabled_flag having a value of 1, and can be unsignaled based on sps_lfnst_enabled_flag having a value of 0.

[0225] slice_header( ) {...if( sps_lfnst_enabled_flag ) {sh_intra_lfnst_enabled_flagif( sh_slice_type != I )sh_inter_lfnst_enabled_flag}...}

[0226] According to Table 11, at least one of the second intra-lfnst-enabled_flag or the second inter-lfnst-enabled_flag may be signaled from SH.

[0227] If the values ​​of sh_intra_lfnst_enabled_flag and sh_inter_lfnst_enabled_flag are both 1, non-separable transformations can be applied (enabled) to the intra-CU and inter-CU belonging to the current slice.

[0228] If the value of sh_intra_lfnst_enabled_flag is 1 and the value of sh_inter_lfnst_enabled_flag is 0, non-separable transformation is applied (enabled) to the intra-CU belonging to the current slice, but non-separable transformation may not be applied (enabled) to the inter-CU belonging to the current slice.

[0229] If the value of sh_intra_lfnst_enabled_flag is 0 and the value of sh_inter_lfnst_enabled_flag is 1, non-separable transformation is not applied (enabled) to the intra-CU belonging to the current slice, but non-separable transformation can be applied (enabled) to the inter-CU belonging to the current slice.

[0230] If the values ​​of sh_intra_lfnst_enabled_flag and sh_inter_lfnst_enabled_flag are both 0, non-separable transformations may not be applied (enabled) to the intra-CU and inter-CU belonging to the current slice.

[0231] sh_intra_lfnst_enabled_flag can be adaptively signaled based on the first non-separable conversion enable flag (sps_lfnst_enabled_flag). For example, sh_intra_lfnst_enabled_flag can be signaled based on sps_lfnst_enabled_flag having a value of 1, and can be unsignaled based on sps_lfnst_enabled_flag having a value of 0.

[0232] sh_inter_lfnst_enabled_flag may be adaptively signaled based on the type of the current slice. For example, sh_inter_lfnst_enabled_flag may be signaled based on the type of the current slice being non-I-slice (i.e., sh_slice_type != I), and may not be signaled based on the type of the current slice being I-slice (i.e., sh_slice_type = I).

[0233] slice_header( ) {...if( sps_lfnst_enabled_flag ) {if( sh_slice_type == I )sh_intra_lfnst_intra_slice_enabled_flagif( sh_slice_type != I ) {sh_intra_lfnst_inter_slice_enabled_flagsh_inter_lfnst_enabled_flag}}...}

[0234] According to Table 12, at least one of the second intra-slice non-separable conversion enabled flag (sh_intra_lfnst_intra_slice_enabled_flag), the second inter-slice non-separable conversion enabled flag (sh_intra_lfnst_inter_slice_enabled_flag), or the second inter-slice non-separable conversion enabled flag (sh_inter_lfnst_enabled_flag) may be signaled from SH.

[0235] If the values ​​of sh_intra_lfnst_intra_slice_enabled_flag, sh_intra_lfnst_inter_slice_enabled_flag, and sh_inter_lfnst_enabled_flag are all 0, non-separable transformations may not be applied (enabled) to the intra-CU and inter-CU belonging to the current slice.

[0236] If the value of sh_intra_lfnst_intra_slice_enabled_flag is 1 and the values ​​of sh_intra_lfnst_inter_slice_enabled_flag and sh_inter_lfnst_enabled_flag are both 0, the non-separable transformation is applied (enabled) to the intra-CU belonging to the current slice, which is an I-slice, but the non-separable transformation may not be applied (enabled) to the intra-CU and inter-CU belonging to the current slice, which is a P / B-slice.

[0237] If the value of sh_intra_lfnst_inter_slice_enabled_flag is 1 and the values ​​of sh_intra_lfnst_intra_slice_enabled_flag and sh_inter_lfnst_enabled_flag are both 0, the non-separable transformation is applied (enabled) to the intra-CU belonging to the current slice which is a P / B-slice, but the non-separable transformation may not be applied (enabled) to the inter-CU belonging to the current slice which is a P / B-slice.

[0238] If the values ​​of sh_intra_lfnst_intra_slice_enabled_flag and sh_intra_lfnst_inter_slice_enabled_flag are both 0 and the value of sh_inter_lfnst_enabled_flag is 1, the non-separable transformation is not applied (enabled) to the intra-CU belonging to the current slice which is a P / B-slice, and the non-separable transformation can be applied (enabled) to the inter-CU belonging to the current slice which is a P / B-slice.

[0239] If the value of sh_intra_lfnst_intra_slice_enabled_flag is 0 and the values ​​of sh_intra_lfnst_inter_slice_enabled_flag and sh_inter_lfnst_enabled_flag are both 1, non-separable transformations can be applied (enabled) to intra-CUs and inter-CUs belonging to the current slice, which is a P / B-slice.

[0240] sh_intra_lfnst_intra_slice_enabled_flag, sh_intra_lfnst_inter_slice_enabled_flag, and sh_inter_lfnst_enabled_flag can be adaptively signaled based on the first non-separable conversion enabled flag (sps_lfnst_enabled_flag). For example, sh_intra_lfnst_intra_slice_enabled_flag, sh_intra_lfnst_inter_slice_enabled_flag, and sh_inter_lfnst_enabled_flag can be signaled based on the value of sps_lfnst_enabled_flag being 1, and can be unsignaled based on the value of sps_lfnst_enabled_flag being 0.

[0241] sh_intra_lfnst_intra_slice_enabled_flag, sh_intra_lfnst_inter_slice_enabled_flag, and sh_inter_lfnst_enabled_flag may be adaptively signaled based on the type of the current slice. For example, based on the type of the current slice being non-I-slice (i.e., sh_slice_type != I), sh_intra_lfnst_intra_slice_enabled_flag may not be signaled, and sh_intra_lfnst_inter_slice_enabled_flag and sh_inter_lfnst_enabled_flag may be signaled. On the other hand, based on the current slice's type being I-slice (i.e., sh_slice_type = I), sh_intra_lfnst_intra_slice_enabled_flag may be signaled, and sh_intra_lfnst_inter_slice_enabled_flag and sh_inter_lfnst_enabled_flag may not be signaled.

[0242] slice_header( ) {...if( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag )sh_intra_lfnst_intra_slice_enabled_flagif( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag )sh_intra_lfnst_inter_slice_enabled_flagif( sh_slice_type != I && sps_inter_lfnst_enabled_flag )sh_inter_lfnst_enabled_flag...}

[0243] According to Table 13, at least one of the second intra-slice non-separable conversion enabled flag (sh_intra_lfnst_intra_slice_enabled_flag), the second inter-slice non-separable conversion enabled flag (sh_intra_lfnst_inter_slice_enabled_flag), or the second inter-non-separable conversion enabled flag (sh_inter_lfnst_enabled_flag) may be signaled from SH. The application of non-separable conversion according to the values ​​of sh_intra_lfnst_intra_slice_enabled_flag, sh_intra_lfnst_inter_slice_enabled_flag, and sh_inter_lfnst_enabled_flag is as described with reference to Table 8.

[0244] However, sh_intra_lfnst_intra_slice_enabled_flag may be adaptively signaled based on at least one of the type of the current slice or the first intra slice non-separable conversion enabled flag (sps_intra_lfnst_intra_slice_enabled_flag). For example, sh_intra_lfnst_intra_slice_enabled_flag may be signaled if the type of the current slice is I-slice and the value of sps_intra_lfnst_intra_slice_enabled_flag is 1, and may not be signaled otherwise.

[0245] sh_intra_lfnst_inter_slice_enabled_flag may be adaptively signaled based on at least one of the type of the current slice or the first inter-slice non-separable conversion enabled flag (sps_intra_lfnst_inter_slice_enabled_flag). For example, sh_intra_lfnst_inter_slice_enabled_flag may be signaled if the type of the current slice is not I-slice and the value of sps_intra_lfnst_inter_slice_enabled_flag is 1, and may not be signaled otherwise.

[0246] sh_inter_lfnst_enabled_flag may be adaptively signaled based on at least one of the type of the current slice or the first inter-non-separable conversion enabled flag (sps_inter_lfnst_enabled_flag). For example, sh_inter_lfnst_enabled_flag may be signaled if the type of the current slice is not I-slice and the value of sps_inter_lfnst_enabled_flag is 1, and may not be signaled otherwise.

[0247] slice_header( ) {...if( ( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag ) || ( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag ) )sh_intra_lfnst_enabled_flagif( sh_slice_type != I && sps_inter_lfnst_enabled_flag )sh_inter_lfnst_enabled_flag...}

[0248] According to Table 14, at least one of the second intra-lfnst-enabled flag (sh_intra_lfnst_enabled_flag) or the second inter-lfnst-enabled flag (sh_inter_lfnst_enabled_flag) may be signaled from SH.

[0249] If the values ​​of sh_intra_lfnst_enabled_flag and sh_inter_lfnst_enabled_flag are both 0, non-separable transformations may not be applied (enabled) to intra-CUs and inter-CUs belonging to the current slice, regardless of the type of the slice.

[0250] If the value of sh_intra_lfnst_enabled_flag is 1 and the value of sh_inter_lfnst_enabled_flag is 0, non-separable transformation can be applied (enabled) to the intra-CU belonging to the current slice which is an I-slice. Or, if the value of sh_intra_lfnst_enabled_flag is 1 and the value of sh_inter_lfnst_enabled_flag is 0, non-separable transformation can be applied (enabled) to the intra-CU belonging to the current slice which is a P / B-slice, but non-separable transformation may not be applied (enabled) to the inter-CU belonging to the current slice which is a P / B-slice.

[0251] If the value of sh_intra_lfnst_enabled_flag is 0 and the value of sh_inter_lfnst_enabled_flag is 1, non-separable transformation is applied (enabled) to the inter-CU belonging to the current slice which is a P / B-slice, but non-separable transformation may not be applied (enabled) to the intra-CU belonging to the current slice which is a P / B-slice.

[0252] If the values ​​of sh_intra_lfnst_enabled_flag and sh_inter_lfnst_enabled_flag are both 1, non-separable transformations can be applied (enabled) to intra-CUs and inter-CUs belonging to the current slice, which is a P / B-slice.

[0253] sh_intra_lfnst_enabled_flag can be adaptively signaled based on at least one of the type of the current slice, the first intra-slice non-separable conversion enabled flag (sps_intra_lfnst_intra_slice_enabled_flag), or the first inter-slice non-separable conversion enabled flag (sps_intra_lfnst_inter_slice_enabled_flag). For example, sh_intra_lfnst_enabled_flag can be signaled based on at least one of the following: the type of the current slice is I-slice and the value of sps_intra_lfnst_intra_slice_enabled_flag is 1 (condition 1), or the type of the current slice is not I-slice and the value of sps_intra_lfnst_inter_slice_enabled_flag is 1 (condition 2). If conditions 1 and 2 above are not satisfied, sh_intra_lfnst_enabled_flag may not be signaled.

[0254] The signaling method of sh_inter_lfnst_enabled_flag is as shown in Table 13.

[0255] slice_header() {...if( sps_lfnst_enabled_flag )sh_intra_lfnst_enabled_flag...}

[0256] According to Table 15, a second intra-nonseparable transformation enabled flag (sh_intra_lfnst_enabled_flag) can be signaled from SH. As described above, based on the value of sh_intra_lfnst_enabled_flag, it can be determined whether nonseparable transformation is applied (enabled) to the intra-CU of the current slice regardless of the type of the slice. This syntax structure can be applied in cases where nonseparable transformation is not allowed for inter-CUs, or in cases where nonseparable transformation is always allowed for inter-CUs.

[0257] sh_intra_lfnst_enabled_flag can be adaptively signaled based on the first non-separable conversion enable flag (sps_lfnst_enabled_flag). For example, sh_intra_lfnst_enabled_flag can be signaled based on sps_lfnst_enabled_flag having a value of 1, and can be unsignaled based on sps_lfnst_enabled_flag having a value of 0.

[0258] slice_header() {...if( sps_intra_lfnst_enabled_flag )sh_intra_lfnst_enabled_flag...}

[0259] According to Table 16, the second intra-non-separable conversion enabled flag (sh_intra_lfnst_enabled_flag) can be signaled from SH, as seen with reference to Table 15.

[0260] However, sh_intra_lfnst_enabled_flag may be adaptively signaled based on the first intra non-separable conversion enable flag (sps_intra_lfnst_enabled_flag). For example, sh_intra_lfnst_enabled_flag may be signaled based on the value of sps_intra_lfnst_enabled_flag being 1, and may not be signaled based on the value of sps_intra_lfnst_enabled_flag being 0.

[0261] A high-level syntax structure can be constructed to control the settings of non-separable transformations by combining any of the aforementioned SPS structures with any of the aforementioned SH structures. Each HLS structure can fully or partially support the combinations listed above. Below, we will examine HLS structures that can be constructed by combining SPS and SH structures.

[0262] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flag...}slice_header( ) {...if( sps_lfnst_enabled_flag )sh_lfnst_enabled_flag...}

[0263] Table 17 can represent an HLS structure composed of a combination of the SPS structure of Table 4 and the SH structure of Table 10.

[0264] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flag...}slice_header( ) {...if( sps_lfnst_enabled_flag ) {sh_intra_lfnst_enabled_flagif( sh_slice_type != I )sh_inter_lfnst_enabled_flag}...}

[0265] Table 18 can represent an HLS structure composed of a combination of the SPS structure of Table 4 and the SH structure of Table 11.

[0266] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flag...}slice_header( ) {...if( sps_lfnst_enabled_flag ) {if( sh_slice_type == I )sh_intra_lfnst_intra_slice_enabled_flagif( sh_slice_type != I ) {sh_intra_lfnst_inter_slice_enabled_flagsh_inter_lfnst_enabled_flag}}...}

[0267] Table 19 can represent an HLS structure composed of a combination of the SPS structure of Table 4 and the SH structure of Table 12.

[0268] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flag...}slice_header( ) {...if( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag )sh_intra_lfnst_intra_slice_enabled_flagif( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag )sh_intra_lfnst_inter_slice_enabled_flagif( sh_slice_type != I && sps_inter_lfnst_enabled_flag )sh_inter_lfnst_enabled_flag...}

[0269] Table 20 can represent an HLS structure composed of a combination of the SPS structure of Table 4 and the SH structure of Table 13. As shown in Table 20, sps_intra_lfnst_intra_slice_enabled_flag, sps_intra_lfnst_inter_slice_enabled_flag, and sps_inter_lfnst_enabled_flag can be variables for signaling syntax elements defined in SH. At this time, sps_intra_lfnst_intra_slice_enabled_flag, sps_intra_lfnst_inter_slice_enabled_flag, and sps_inter_lfnst_enabled_flag can be configured to have the same value as sps_lfnst_enabled_flag.

[0270] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flag...}slice_header( ) {...if( ( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag ) || ( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag ) )sh_intra_lfnst_enabled_flagif( sh_slice_type != I && sps_inter_lfnst_enabled_flag )sh_inter_lfnst_enabled_flag...}

[0271] Table 21 can represent an HLS structure composed of a combination of the SPS structure of Table 4 and the SH structure of Table 14. In Table 21, sps_intra_lfnst_intra_slice_enabled_flag, sps_intra_lfnst_inter_slice_enabled_flag, and sps_inter_lfnst_enabled_flag can be variables for signaling syntax elements defined in SH. At this time, sps_intra_lfnst_intra_slice_enabled_flag, sps_intra_lfnst_inter_slice_enabled_flag, and sps_inter_lfnst_enabled_flag can be configured to have the same value as sps_lfnst_enabled_flag.

[0272] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flag...}slice_header( ) {...if( sps_lfnst_enabled_flag )sh_intra_lfnst_enabled_flag...}

[0273] Table 22 can represent an HLS structure composed of a combination of the SPS structure of Table 4 and the SH structure of Table 15. Table 22 can be an HLS structure in which inter-NST is always allowed and intra-NST is optionally allowed when the value of sps_lfnst_enabled_flag is 1. In this case, whether intra-NST is applied to the current slice (regardless of the slice type) can be determined based on sh_intra_lfnst_enabled_flag signaled in SH.

[0274] If you want to indicate that intra-NST is enabled for an intra-CU belonging to an I-slice, you can signal it by setting the value of sh_intra_lfnst_enabled_flag to 1 when the slice corresponding to the SH is an I-slice. Alternatively, if you want to indicate that intra-NST is enabled for an intra-CU belonging to a P / B-slice, you can signal it by setting the value of sh_intra_lfnst_enabled_flag to 1 when the slice corresponding to the SH is a P-slice or B-slice.

[0275] Therefore, the HLS structure according to Table 22 can support combinations of the above-mentioned [Configuration A-2], ([Configuration A-3], [Configuration B-1]), ([Configuration A-3], [Configuration B-2]) and ([Configuration A-3], [Configuration B-3]).

[0276] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flag...}slice_header( ) {...if( sps_intra_lfnst_enabled_flag )sh_intra_lfnst_enabled_flag...}

[0277] Table 23 can represent an HLS structure composed of a combination of the SPS structure of Table 4 and the SH structure of Table 16. In Table 23, sps_intra_lfnst_enabled_flag can be a variable for signaling sh_intra_lfnst_enabled_flag defined in SH. At this time, sps_intra_lfnst_enabled_flag can be configured to have the same value as sps_lfnst_enabled_flag.

[0278] As with the HLS structure according to Table 22, if it is desired to indicate that intra-NST is enabled for an intra-CU belonging to an I-slice, it can be signaled by setting the value of sh_intra_lfnst_enabled_flag to 1 when the slice corresponding to the SH is an I-slice. Alternatively, if it is desired to indicate that intra-NST is enabled for an intra-CU belonging to a P / B-slice, it can be signaled by setting the value of sh_intra_lfnst_enabled_flag to 1 when the slice corresponding to the SH is a P-slice or B-slice.

[0279] Therefore, the HLS structure according to Table 23 can support combinations of the above-mentioned [Configuration A-2], ([Configuration A-3], [Configuration B-1]), ([Configuration A-3], [Configuration B-2]) and ([Configuration A-3], [Configuration B-3]).

[0280] seq_parameter_set_rbsp( ) {...sps_intra_lfnst_enabled_flagsps_inter_lfnst_enabled_flag...}slice_header( ) {...if( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag )sh_intra_lfnst_intra_slice_enabled_flagif( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag )sh_intra_lfnst_inter_slice_enabled_flagif( sh_slice_type != I && sps_inter_lfnst_enabled_flag )sh_inter_lfnst_enabled_flag...}

[0281] Table 24 can represent an HLS structure composed of a combination of the SPS structure of Table 5 and the SH structure of Table 13. In Table 24, sps_intra_lfnst_intra_slice_enabled_flag and sps_intra_lfnst_inter_slice_enabled_flag can be variables for signaling syntax elements defined in SH. At this time, sps_intra_lfnst_intra_slice_enabled_flag and sps_intra_lfnst_inter_slice_enabled_flag can be configured to have the same value as sps_intra_lfnst_enabled_flag.

[0282] seq_parameter_set_rbsp( ) {...sps_intra_lfnst_enabled_flagsps_inter_lfnst_enabled_flag...}slice_header( ) {...if( ( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag ) || ( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag ) )sh_intra_lfnst_enabled_flagif( sh_slice_type != I && sps_inter_lfnst_enabled_flag )sh_inter_lfnst_enabled_flag...}

[0283] Table 25 can represent an HLS structure composed of a combination of the SPS structure of Table 5 and the SH structure of Table 14. In Table 25, sps_intra_lfnst_intra_slice_enabled_flag and sps_intra_lfnst_inter_slice_enabled_flag can be variables for signaling sh_intra_lfnst_enabled_flag defined in SH. At this time, sps_intra_lfnst_intra_slice_enabled_flag and sps_intra_lfnst_inter_slice_enabled_flag can be configured to have the same value as sps_intra_lfnst_enabled_flag.

[0284] seq_parameter_set_rbsp( ) {...sps_intra_lfnst_enabled_flagsps_inter_lfnst_enabled_flag...}slice_header( ) {...if( sps_intra_lfnst_enabled_flag )sh_intra_lfnst_enabled_flag...}

[0285] Table 26 can represent an HLS structure composed of a combination of the SPS structure of Table 5 and the SH structure of Table 16.

[0286] seq_parameter_set_rbsp( ) {...sps_intra_lfnst_intra_slice_enabled_flagsps_intra_lfnst_inter_slice_enabled_flagsps_inter_lfnst_enabled_flag...}slice_header( ) {...if( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag )sh_intra_lfnst_intra_slice_enabled_flagif( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag )sh_intra_lfnst_inter_slice_enabled_flagif( sh_slice_type != I && sps_inter_lfnst_enabled_flag )sh_inter_lfnst_enabled_flag...}

[0287] 표 27는 표 6의 SPS 구조와 표 13의 SH 구조의 조합으로 구성되는 HLS 구조를 나타낼 수 있다.

[0288] seq_parameter_set_rbsp( ) {...sps_intra_lfnst_intra_slice_enabled_flagsps_intra_lfnst_inter_slice_enabled_flagsps_inter_lfnst_enabled_flag...}slice_header( ) {...if( ( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag ) || ( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag ) )sh_intra_lfnst_enabled_flagif( sh_slice_type != I && sps_inter_lfnst_enabled_flag )sh_inter_lfnst_enabled_flag...}

[0289] Table 28 can represent an HLS structure composed of a combination of the SPS structure of Table 6 and the SH structure of Table 14.

[0290] seq_parameter_set_rbsp( ) {...sps_intra_lfnst_intra_slice_enabled_flagsps_intra_lfnst_inter_slice_enabled_flagsps_inter_lfnst_enabled_flag...}slice_header( ) {...if( sps_intra_lfnst_enabled_flag )sh_intra_lfnst_enabled_flag...}

[0291] Table 29 may represent an HLS structure composed of a combination of the SPS structure of Table 6 and the SH structure of Table 16. In Table 29, sps_intra_lfnst_enabled_flag may be a variable for signaling sh_intra_lfnst_enabled_flag defined in SH. At this time, sh_intra_lfnst_enabled_flag may be determined based on at least one of the type of the current slice, sps_intra_lfnst_intra_slice_enabled_flag, or sps_intra_lfnst_inter_slice_enabled_flag. For example, sh_intra_lfnst_enabled_flag may be determined as in the following mathematical expression 4.

[0292] [Equation 4]

[0293] sps_intra_lfnst_enabled_flag = ( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag ) || ( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag )

[0294] According to mathematical expression 4, if the type of the current slice is I-slice and the value of sps_intra_lfnst_intra_slice_enabled_flag is 1, or if the type of the current slice is not I-slice and the value of sps_intra_lfnst_inter_slice_enabled_flag is 1, the value of sps_intra_lfnst_enabled_flag can be determined as 1. Otherwise, the value of sps_intra_lfnst_enabled_flag can be determined as 0.

[0295] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_inter_slice_enabled_flag...}slice_header( ) {...if( sps_lfnst_enabled_flag )sh_lfnst_enabled_flag...}

[0296] Table 30 can represent an HLS structure composed of a combination of the SPS structure of Table 7 and the SH structure of Table 10.

[0297] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_inter_slice_enabled_flag...}slice_header( ) {...if( sps_lfnst_enabled_flag ) {sh_intra_lfnst_enabled_flagif( sh_slice_type != I )sh_inter_lfnst_enabled_flag}...}

[0298] Table 31 can represent an HLS structure composed of a combination of the SPS structure of Table 7 and the SH structure of Table 11.

[0299] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_inter_slice_enabled_flag...}slice_header( ) {...if( sps_lfnst_enabled_flag ) {if( sh_slice_type == I )sh_intra_lfnst_intra_slice_enabled_flagif( sh_slice_type != I ) {sh_intra_lfnst_inter_slice_enabled_flagsh_inter_lfnst_enabled_flag}}...}

[0300] 표 32는 표 7의 SPS 구조와 표 12의 SH 구조의 조합으로 구성되는 HLS 구조를 나타낼 수 있다.

[0301] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_inter_slice_enabled_flag...}slice_header( ) {...if( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag )sh_intra_lfnst_intra_slice_enabled_flagif( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag )sh_intra_lfnst_inter_slice_enabled_flagif( sh_slice_type != I && sps_inter_lfnst_enabled_flag )sh_inter_lfnst_enabled_flag...}

[0302] Table 33 may represent an HLS structure composed of a combination of the SPS structure of Table 7 and the SH structure of Table 13. In Table 33, sps_intra_lfnst_intra_slice_enabled_flag may be a variable for signaling sh_intra_lfnst_intra_slice_enabled_flag defined in SH. At this time, sps_intra_lfnst_intra_slice_enabled_flag may be configured to have the same value as sps_lfnst_enabled_flag.

[0303] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_inter_slice_enabled_flag...}slice_header( ) {...if( ( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag ) || ( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag ) )sh_intra_lfnst_enabled_flagif( sh_slice_type != I && sps_inter_lfnst_enabled_flag )sh_inter_lfnst_enabled_flag...}

[0304] Table 34 can represent an HLS structure composed of a combination of the SPS structure of Table 7 and the SH structure of Table 14. In Table 34, sps_intra_lfnst_intra_slice_enabled_flag can be a variable for signaling sh_intra_lfnst_enabled_flag defined in SH. At this time, sps_intra_lfnst_intra_slice_enabled_flag can be configured to have the same value as sps_lfnst_enabled_flag. sps_inter_lfnst_enabled_flag can be a variable for signaling sh_inter_lfnst_enabled_flag defined in SH. At this time, sps_inter_lfnst_enabled_flag can be configured to have the same value as sps_lfnst_enabled_flag.

[0305] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_inter_slice_enabled_flag...}slice_header( ) {...if( sps_lfnst_enabled_flag )sh_intra_lfnst_enabled_flag...}

[0306] Table 35 can represent an HLS structure composed of a combination of the SPS structure of Table 7 and the SH structure of Table 15.

[0307] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_inter_slice_enabled_flag...}slice_header( ) {...if( sps_intra_lfnst_enabled_flag )sh_intra_lfnst_enabled_flag...}

[0308] Table 36 may represent an HLS structure composed of a combination of the SPS structure of Table 7 and the SH structure of Table 16. In Table 36, sps_intra_lfnst_enabled_flag may be a variable for signaling sh_intra_lfnst_enabled_flag defined in SH. At this time, sps_intra_lfnst_enabled_flag may be determined based on at least one of the type of the current slice, sps_intra_lfnst_intra_slice_enabled_flag, or sps_intra_lfnst_inter_slice_enabled_flag. Here, sps_intra_lfnst_intra_slice_enabled_flag may be a variable configured to have the same value as sps_lfnst_enabled_flag. For example, sps_intra_lfnst_enabled_flag can be determined as in the following mathematical expression 5, which is the same as that in mathematical expression 4.

[0309] [Equation 5]

[0310] sps_intra_lfnst_enabled_flag = ( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag ) || ( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag )

[0311] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_enabled_flag...}slice_header( ) {...if( sps_lfnst_enabled_flag )sh_lfnst_enabled_flag...}

[0312] Table 37 can represent an HLS structure composed of a combination of the SPS structure of Table 8 and the SH structure of Table 10.

[0313] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_enabled_flag...}slice_header( ) {...if( sps_lfnst_enabled_flag ) {sh_intra_lfnst_enabled_flagif( sh_slice_type != I )sh_inter_lfnst_enabled_flag}...}

[0314] Table 38 can represent an HLS structure composed of a combination of the SPS structure of Table 8 and the SH structure of Table 11.

[0315] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_enabled_flag...}slice_header( ) {...if( sps_lfnst_enabled_flag ) {if( sh_slice_type == I )sh_intra_lfnst_intra_slice_enabled_flagif( sh_slice_type != I ) {sh_intra_lfnst_inter_slice_enabled_flagsh_inter_lfnst_enabled_flag}}...}

[0316] Table 39 can represent an HLS structure composed of a combination of the SPS structure of Table 8 and the SH structure of Table 12.

[0317] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_enabled_flag...}slice_header( ) {...if( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag )sh_intra_lfnst_intra_slice_enabled_flagif( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag )sh_intra_lfnst_inter_slice_enabled_flagif( sh_slice_type != I && sps_inter_lfnst_enabled_flag )sh_inter_lfnst_enabled_flag...}

[0318] Table 40 can represent an HLS structure composed of a combination of the SPS structure of Table 8 and the SH structure of Table 13. In Table 40, sps_intra_lfnst_intra_slice_enabled_flag, sps_intra_lfnst_inter_slice_enabled_flag, and sps_inter_lfnst_enabled_flag can be variables for signaling syntax elements defined in SH. At this time, sps_intra_lfnst_intra_slice_enabled_flag and sps_intra_lfnst_inter_slice_enabled_flag can be configured to have the same value as sps_intra_lfnst_enabled_flag. sps_inter_lfnst_enabled_flag can be configured to have the same value as sps_lfnst_enabled_flag.

[0319] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_enabled_flag...}slice_header( ) {...if( ( sh_slice_type == I && sps_intra_lfnst_intra_slice_enabled_flag ) || ( sh_slice_type != I && sps_intra_lfnst_inter_slice_enabled_flag ) )sh_intra_lfnst_enabled_flagif( sh_slice_type != I && sps_inter_lfnst_enabled_flag )sh_inter_lfnst_enabled_flag...}

[0320] Table 41 can represent an HLS structure composed of a combination of the SPS structure of Table 8 and the SH structure of Table 14. In Table 41, sps_intra_lfnst_intra_slice_enabled_flag, sps_intra_lfnst_inter_slice_enabled_flag, and sps_inter_lfnst_enabled_flag can be variables for signaling syntax elements defined in SH. At this time, sps_intra_lfnst_intra_slice_enabled_flag and sps_intra_lfnst_inter_slice_enabled_flag can be configured to have the same value as sps_intra_lfnst_enabled_flag. sps_inter_lfnst_enabled_flag can be configured to have the same value as sps_lfnst_enabled_flag.

[0321] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_enabled_flag...}slice_header( ) {...if( sps_lfnst_enabled_flag )sh_intra_lfnst_enabled_flag...}

[0322] Table 42 can represent an HLS structure composed of a combination of the SPS structure of Table 8 and the SH structure of Table 15.

[0323] seq_parameter_set_rbsp( ) {...sps_lfnst_enabled_flagif( sps_lfnst_enabled_flag )sps_intra_lfnst_enabled_flag...}slice_header( ) {...if( sps_intra_lfnst_enabled_flag )sh_intra_lfnst_enabled_flag...}

[0324] Table 43 can represent an HLS structure composed of a combination of the SPS structure of Table 8 and the SH structure of Table 16.

[0325] The examples described above describe how to control whether non-separable transformations are enabled by defining separate syntax elements in SPS and SH. However, these are merely examples, and the syntax elements for controlling whether non-separable transformations are enabled may be defined elsewhere in the bitstream.

[0326] For example, the syntax element(s) defined in SPS can be defined in parameter sets of other units that compose a bitstream, such as VPS, PPS, APS, and SH, to control whether non-separable transformation is applied (enabled) to units other than sequences. Similarly, the syntax element(s) defined in SH can be defined in positions that represent other units that compose a bitstream, such as PPS, APS, and Slice Data, to control whether non-separable transformation is applied (enabled) to units other than slices.

[0327] Just as the aforementioned syntax elements defined through SPS and SH have a hierarchical relationship with each other, the hierarchical relationship can be maintained even if the positions where each syntax element is defined change. That is, even if the positions of the syntax elements defined in SPS change, they can be positioned at a higher level than the syntax elements defined in SH, thereby indicating a subordinate relationship.

[0328] In the example described above, the overall configuration of whether non-separable transformation is enabled is controlled in the SPS, and whether non-separable transformation is enabled for the slice corresponding to the SH is controlled through the SH. At this time, the settings through the SH can update (or overwrite, override) the settings in the SPS. In other words, the settings through the SH can be configured to have a higher priority than the settings in the SPS.

[0329] Referring to FIG. 4, the current block can be restored based on the residual sample of the current block (S420).

[0330] Based on the intra prediction mode of the current block, a prediction sample for the current block can be derived. Based on the prediction sample and residual sample of the current block, a reconstruction sample for the current block can be generated.

[0331] FIG. 6 illustrates a schematic configuration of a decoding device (300) that performs an image decoding method according to the present disclosure.

[0332] Referring to FIG. 6, a decoding device (300) according to the present disclosure may include a transform coefficient derivation unit (600), a residual sample derivation unit (610), and a restoration block generation unit (620). The transform coefficient derivation unit (600) may be configured in the entropy decoding unit (310) of FIG. 3, the residual sample derivation unit (610) may be configured in the residual processing unit (320) of FIG. 3, and the restoration block generation unit (620) may be configured in the adding unit (340) of FIG. 3.

[0333] The transform coefficient derivation unit (600) can obtain residual information of the current block from the bitstream and decode it to derive the transform coefficient of the current block.

[0334] The residual sample derivation unit (610) can derive a residual sample of the current block by performing at least one of inverse quantization or inverse transformation on the transform coefficient of the current block.

[0335] The residual sample derivation unit (610) can determine a transformation kernel for the inverse transformation of the current block through a predetermined transformation kernel determination method, and derive the residual sample of the current block based on this. This has been described with reference to FIG. 4, and a detailed description thereof will be omitted here.

[0336] The restoration block generation unit (620) can restore the current block based on the residual sample of the current block.

[0337] FIG. 7 illustrates an image encoding method performed by an encoding device (200) as an embodiment according to the present disclosure.

[0338] Referring to FIG. 7, residual samples of the current block can be derived (S700).

[0339] The residual samples of the current block can be derived by differentiating prediction samples from the original samples of the current block. Here, the prediction samples can be derived based on a predetermined intra prediction mode.

[0340] Referring to FIG. 7, transform coefficients of the current block can be derived by performing at least one of transformation or quantization on the residual sample of the current block (S710).

[0341] The conversion method according to the present disclosure can be understood as the reverse process of the inverse conversion examined with reference to FIG. 4.

[0342] The transformation according to the present disclosure can be performed based on a non-separable transformation (e.g., LFNST or NSPT). At least one of the syntax elements related to whether the non-separable transformation is enabled, as discussed with reference to FIG. 4, can be generated, and the generated syntax element(s) can be encoded into a bitstream using the aforementioned SPS structure, SH structure, or HLS structure.

[0343] Referring to Fig. 7, a bitstream can be generated by encoding the transform coefficients of the current block (S720).

[0344] Based on the transform coefficient of the current block, residual information about the transform coefficient can be generated, and a bitstream can be generated by encoding the residual information.

[0345] FIG. 8 illustrates a schematic configuration of an encoding device (200) that performs an image encoding method according to the present disclosure.

[0346] Referring to FIG. 8, an encoding device (200) according to the present disclosure may include a residual sample derivation unit (800), a transform coefficient derivation unit (810), and a transform coefficient encoding unit (820). The residual sample derivation unit (800) and the transform coefficient derivation unit (810) may be configured in the residual processing unit (230) of FIG. 2, and the transform coefficient encoding unit (820) may be configured in the entropy encoding unit (240) of FIG. 2.

[0347] The residual sample derivation unit (800) can derive a residual sample of the current block by differentiating a predicted sample from an original sample of the current block. Here, the predicted sample may be derived based on a predetermined intra prediction mode.

[0348] The transform coefficient derivation unit (810) can derive the transform coefficient of the current block by performing at least one of transform and quantization on the residual sample of the current block.

[0349] The transform coefficient encoding unit (820) can generate a bitstream by encoding the transform coefficient of the current block.

[0350] In the embodiments described above, the methods are described based on a flowchart as a series of steps or blocks. However, the embodiments are not limited to the order of the steps, and some steps may occur in a different order or simultaneously with other steps described above. Furthermore, those skilled in the art will understand that the steps depicted in the flowchart are not exclusive, and other steps may be included, or one or more steps in the flowchart may be deleted without affecting the scope of the embodiments of this document.

[0351] The method according to the embodiments of the present document described above can be implemented in the form of software, and the encoding device and / or decoding device according to the present document can be included in a device that performs image processing, such as a TV, a computer, a smartphone, a set-top box, a display device, etc.

[0352] When the embodiments in this document are implemented as software, the above-described method can be implemented as a module (process, function, etc.) that performs the above-described function. The module can be stored in memory and executed by a processor. The memory can be internal or external to the processor and can be connected to the processor by various well-known means. The processor can include an application-specific integrated circuit (ASIC), another chipset, logic circuit, and / or data processing device. The memory can include a read-only memory (ROM), a random access memory (RAM), flash memory, a memory card, a storage medium, and / or other storage devices. That is, the embodiments described in this document can be implemented and performed on a processor, a microprocessor, a controller, or a chip. For example, the functional units illustrated in each drawing can be implemented and performed on a computer, a processor, a microprocessor, a controller, or a chip. In this case, information for implementation (e.g., information on instructions) or an algorithm can be stored on a digital storage medium.

[0353] In addition, the decoding device and encoding device to which the embodiment(s) of the present specification are applied may be included in a multimedia broadcasting transmitting and receiving device, a mobile communication terminal, a home cinema video device, a digital cinema video device, a surveillance camera, a video conversation device, a real-time communication device such as a video communication, a mobile streaming device, a storage medium, a camcorder, a video-on-demand (VoD) service providing device, an OTT (Over the top video) device, an Internet streaming service providing device, a three-dimensional (3D) video device, a VR (virtual reality) device, an AR (argumente reality) device, a video phone video device, a transportation terminal (ex. a vehicle (including an autonomous vehicle) terminal, an airplane terminal, a ship terminal, etc.), and a medical video device, and may be used to process a video signal or a data signal. For example, the OTT (Over the top video) device may include a game console, a Blu-ray player, an Internet-connected TV, a home theater system, a smartphone, a tablet PC, a DVR (Digital Video Recorder), etc.

[0354] In addition, the processing method to which the embodiment(s) of the present specification are applied can be produced in the form of a computer-executable program and can be stored in a computer-readable recording medium. Multimedia data having a data structure according to the embodiment(s) of the present specification can also be stored in a computer-readable recording medium. The computer-readable recording medium includes all types of storage devices and distributed storage devices in which computer-readable data is stored. The computer-readable recording medium can include, for example, a Blu-ray disc (BD), a universal serial bus (USB), a ROM, a PROM, an EPROM, an EEPROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, and an optical data storage device. In addition, the computer-readable recording medium includes a medium implemented in the form of a carrier wave (e.g., transmission via the Internet). In addition, a bitstream generated by an encoding method can be stored in a computer-readable recording medium or transmitted via a wired or wireless communication network.

[0355] Additionally, the embodiments of the present disclosure may be implemented as a computer program product by program code, and the program code may be executed on a computer by the embodiments of the present disclosure. The program code may be stored on a computer-readable carrier.

[0356] FIG. 9 illustrates an example of a content streaming system to which embodiments of the present disclosure can be applied.

[0357] Referring to FIG. 9, a content streaming system to which the embodiment(s) of the present specification are applied may largely include an encoding server, a streaming server, a web server, a media storage, a user device, and a multimedia input device.

[0358] The encoding server compresses content input from multimedia input devices such as smartphones, cameras, and camcorders into digital data, generates a bitstream, and transmits it to the streaming server. Alternatively, if multimedia input devices such as smartphones, cameras, and camcorders directly generate bitstreams, the encoding server may be omitted.

[0359] The above bitstream can be generated by an encoding method or a bitstream generation method to which the embodiment(s) of the present specification are applied, and the streaming server can temporarily store the bitstream during the process of transmitting or receiving the bitstream.

[0360] The streaming server transmits multimedia data to a user device based on a user request via a web server, and the web server acts as an intermediary to inform the user of available services. When a user requests a desired service from the web server, the web server transmits the request to the streaming server, and the streaming server transmits the multimedia data to the user. At this time, the content streaming system may include a separate control server, in which case the control server controls commands / responses between each device within the content streaming system.

[0361] The streaming server can receive content from a media repository and / or an encoding server. For example, when receiving content from the encoding server, the content can be received in real time. In this case, to provide a smooth streaming service, the streaming server can store the bitstream for a certain period of time.

[0362] Examples of the user devices may include mobile phones, smart phones, laptop computers, digital broadcasting terminals, personal digital assistants (PDAs), portable multimedia players (PMPs), navigation devices, slate PCs, tablet PCs, ultrabooks, wearable devices (e.g., smartwatches, smart glasses, HMDs), digital TVs, desktop computers, digital signage, etc.

[0363] Each server within the above content streaming system can be operated as a distributed server, in which case data received from each server can be processed in a distributed manner.

[0364] The claims set forth in this specification may be combined in various ways. For example, the technical features of the method claims of this specification may be combined and implemented as a device, and the technical features of the device claims of this specification may be combined and implemented as a method. Furthermore, the technical features of the method claims and the technical features of the device claims of this specification may be combined and implemented as a device, and the technical features of the method claims and the technical features of the device claims of this specification may be combined and implemented as a method.

Claims

1. A step of obtaining residual information from a bitstream; A step of deriving transform coefficients of the current block based on the residual information; A step of deriving residual samples of the current block by performing an inverse transformation on the transform coefficients of the current block; and A step of restoring the current block based on residual samples of the current block, The above inverse transformation is performed based on a non-separable transform, A method in which the above non-separable transformation is performed based on a syntax element regarding whether the above non-separable transformation is enabled.

2. In paragraph 1, A method wherein the syntax element includes a first non-separable transformation availability flag indicating whether the non-separable transformation is enabled.

3. In paragraph 1, A method, wherein the syntax element comprises a first intra non-separable transform available flag indicating whether a non-separable transform applicable to an intra coding unit is enabled and a first inter non-separable transform available flag indicating whether a non-separable transform applicable to an inter coding unit is enabled.

4. In paragraph 1, A method, wherein the syntax element comprises a first intra-slice non-separable transform available flag indicating whether a non-separable transform applicable to an intra coding unit is enabled for an intra slice, a first inter-slice non-separable transform available flag indicating whether a non-separable transform applicable to the intra coding unit is enabled for an inter slice, and a first inter-slice non-separable transform available flag indicating whether a non-separable transform applicable to an inter coding unit is enabled for an inter slice.

5. In paragraph 1, A method according to claim 1, wherein the syntax element comprises a first non-separable transform availability flag indicating whether the non-separable transform is enabled and a first inter-slice non-separable transform availability flag indicating whether the non-separable transform applicable to the intra coding unit is enabled to be applied to the inter-slice.

6. In paragraph 1, A method wherein the syntax element comprises a first non-separable transformation availability flag indicating whether the non-separable transformation is enabled and a first intra non-separable transformation availability flag indicating whether the non-separable transformation that can be applied to the intra coding unit is enabled.

7. In paragraph 1, A method wherein the syntax element includes a second non-separable transformation enabled flag indicating whether the non-separable transformation is enabled for the slice corresponding to the current slice header.

8. In paragraph 1, A method according to claim 1, wherein the syntax element comprises a second intra non-separable transform available flag indicating whether a non-separable transform applicable to an intra coding unit is enabled for a slice corresponding to the current slice header, and a second inter non-separable transform available flag indicating whether a non-separable transform applicable to an inter coding unit is enabled for a slice corresponding to the current slice header.

9. In paragraph 1, A method according to claim 1, wherein the syntax element comprises a second intra-slice non-separable transform available flag indicating whether a non-separable transform applicable to an intra coding unit for an intra slice is enabled, a second inter-slice non-separable transform available flag indicating whether a non-separable transform applicable to an intra coding unit for an inter slice is enabled, and a second inter-slice non-separable transform available flag indicating whether a non-separable transform applicable to an inter coding unit for a slice corresponding to a current slice header is enabled.

10. In paragraph 1, A method according to claim 1, wherein the syntax element includes a second intra non-separable transform enabled flag indicating whether a non-separable transform applicable to an intra coding unit for a slice corresponding to the current slice header is enabled.

11. Step of deriving residual samples of the current block; A step of deriving transform coefficients of the current block by performing a transform on residual samples of the current block; and Including a step of encoding the transform coefficients of the current block, The above transformation is performed based on a non-separable transform, A method in which a syntax element regarding whether the above non-separable transformation is enabled is encoded in a bitstream.

12. A computer-readable storage medium storing a bitstream generated by the video encoding method according to Article 11.

13. A step of obtaining a bitstream for image information; wherein the bitstream is generated by deriving residual samples of a current block, performing a transformation on the residual samples of the current block to derive transform coefficients, and encoding the transform coefficients of the current block, and Including a step of transmitting data including the above bitstream, The above transformation is performed based on a non-separable transform, A method for transmitting data for image information, wherein a syntax element regarding whether the above non-separable transformation is enabled is encoded in a bitstream.

Citation Information

Patent Citations

  • Video decoding method and apparatus by chroma-multi-transform, and video encoding method and apparatus by chroma-multi-transform

    KR1020180101711A

  • Method and apparatus for control of vehicle

    KR1020230110041A

  • Image coding method on basis of non-separable secondary transform and device therefor

    KR102605673B1

  • Composition for the treatment of asthma, comprising purified fractions of fermented bellflower as an active ingredient

    KR102642232B1