Sign data hiding related video decoding method and apparatus
The video decoding method optimizes coding efficiency by using TSRC flags to determine residual coding availability, reducing the number of bits transmitted and enhancing overall coding efficiency for high-resolution videos.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- LG ELECTRONICS INC
- Filing Date
- 2026-04-16
- Publication Date
- 2026-07-02
AI Technical Summary
The increasing demand for high-resolution and high-quality videos has led to a surge in the amount of information to be transmitted and stored, necessitating a more efficient video compression technology to reduce costs.
A video decoding method and apparatus that utilize sign data hiding and Transform Skip Residual Coding (TSRC) flags to determine the availability of residual coding, optimizing the coding process by preventing unnecessary use of sign data hiding where TSRC is unavailable, thereby reducing the number of bits coded.
This approach enhances coding efficiency by minimizing the amount of bits transmitted, improving overall residual coding efficiency.
Smart Images

Figure 2026110629000001_ABST
Abstract
Description
Technical Field
[0001] This document relates to video coding technology. More specifically, it relates to a video decoding method and apparatus for coding flag information indicating whether TSRC can be used based on flag information indicating whether SDH can be used when coding residual data of a block in a video coding system, and the apparatus thereof. Background Art
[0002] In recent years, the demand for high-resolution and high-quality videos such as HD (High Definition) videos and UHD (Ultra High Definition) videos has been increasing in various fields. As video data becomes higher in resolution and quality, the amount of information or bits to be transmitted increases compared to existing video data. Therefore, when transmitting video data using media such as existing wired and wireless broadband lines or storing video data using existing storage media, the costs associated with transmission and storage increase.
[0003] Therefore, in order to effectively transmit, store, and reproduce information of high-resolution and high-quality videos, a highly efficient video compression technology is required.
Summary of the Invention
Problems to be Solved by the Invention
[0004] The technical problem of this document is to provide a method and apparatus for increasing video coding efficiency.
[0005] Another technical problem of this document is to provide a method and apparatus for increasing the efficiency of residual coding.
Means for Solving the Problems
[0006] According to one embodiment of this document, a video decoding method performed by a decoding device is provided. The method includes the steps of: obtaining a sign data hiding availability flag to determine whether sign data hiding is currently available for a slice; obtaining a TSRC availability flag to determine whether TSRC (Transform Skip Residual Coding) is available for a transform skip block of the current slice; obtaining residual coding information for the transform skip block based on the TSRC availability flag; deriving a residual sample for the transform skip block based on the residual coding information; and generating a restored picture based on the residual sample, wherein the TSRC availability flag is obtained based on the sign data hiding availability flag.
[0007] According to other embodiments of this document, a decoding device for video decoding is provided. The decoding device includes an entropy decoding unit that acquires a sign data hiding availability flag to determine whether sign data hiding is currently available for a slice, an entropy decoding unit that acquires a TSRC availability flag to determine whether TSRC (Transform Skip Residual Coding) is available for a transform skip block of the current slice, and acquires residual coding information for the transform skip block based on the TSRC availability flag, a residual processing unit that derives residual samples for the transform skip block based on the residual coding information, and an addition unit that generates a restored picture based on the residual samples, wherein the TSRC availability flag is acquired based on the sign data hiding availability flag.
[0008] Further embodiments of this document provide a video encoding method performed by an encoding device. The method is characterized by comprising the steps of: encoding a sign data hiding availability flag indicating whether sign data hiding is currently available for a slice; encoding a TSRC availability flag indicating whether Transform Skip Residual Coding (TSRC) is available for a transform skip block of the current slice based on the sign data hiding availability flag; encoding residual information for the transform skip block based on the TSRC availability flag; and generating a bitstream containing the sign data hiding availability flag, the TSRC availability flag, and the residual information.
[0009] Further embodiments of this document provide a video encoding device. The encoding device includes an entropy encoding unit that encodes a sign data hiding availability flag indicating whether sign data hiding is currently available for a slice, encodes a TSRC availability flag indicating whether Transform Skip Residual Coding (TSRC) is available for a transform skip block of the current slice based on the sign data hiding availability flag, encodes residual information for the transform skip block based on the TSRC availability flag, and generates a bitstream containing the sign data hiding availability flag, the TSRC availability flag, and the residual information.
[0010] Further embodiments of this document provide a computer-readable digital storage medium storing a bitstream containing video information for performing a video decoding method. In the computer-readable digital storage medium, the video decoding method includes the steps of: obtaining a sign data hiding availability flag to determine whether sign data hiding is currently available for a slice; obtaining a Transform Skip Residual Coding (TSRC) availability flag to determine whether TSRC is available for a transform skip block of the current slice; obtaining residual coding information for the transform skip block based on the TSRC availability flag; deriving a residual sample for the transform skip block based on the residual coding information; and generating a restored picture based on the residual sample, wherein the TSRC availability flag is obtained based on the sign data hiding availability flag. [Effects of the Invention]
[0011] According to this document, the efficiency of residual coding can be increased.
[0012] According to this document, the TSRC availability flag can be signaled in opposition to the sign data hiding availability flag, thereby improving coding efficiency by preventing sign data hiding from being used for conversion skip blocks where TSRC is unavailable, reducing the amount of bits coded and improving overall residual coding efficiency.
[0013] According to this document, the TSRC availability flag can be signaled in dependency of the conversion skip availability flag and the sign data hiding availability flag. This improves coding efficiency by preventing sign data hiding from being used for conversion skip blocks where TSRC is unavailable, thereby reducing the amount of bits coded and improving overall residual coding efficiency. [Brief explanation of the drawing]
[0014] [Figure 1] This diagram schematically illustrates an example of a video / image coding system to which the embodiments described in this document can be applied. [Figure 2] This figure schematically illustrates the configuration of a video / image encoding device to which the embodiments described in this document can be applied. [Figure 3] This figure schematically illustrates the configuration of a video / image decoding device to which the embodiments described in this document can be applied. [Figure 4] This diagram illustrates CABAC (context-adaptive binary arithmetic coding) for encoding syntax elements. [Figure 5] This figure shows an example of a conversion coefficient within a 4x4 block. [Figure 6] This diagram schematically illustrates the video encoding method using the encoding device described in this document. [Figure 7] This diagram schematically shows an encoding device that performs the video encoding method described in this document. [Figure 8] This diagram schematically illustrates the video decoding method using the decoding device described in this document. [Figure 9] This diagram schematically shows a decoding device that performs the video decoding method described in this document. [Figure 10] This is a structural diagram of a content streaming system to which the examples in this document are applied.
Best Mode for Carrying Out the Invention
[0015] This document can be modified in various ways and can have various embodiments. Specific embodiments are illustrated in the drawings and described in detail below. However, this is not intended to limit the embodiments of this document to specific embodiments. The terms commonly used in this specification are only used to explain specific embodiments and are not intended to limit the technical idea of this document. Singular expressions include plural expressions as well, unless otherwise specified in the context. In this specification, terms such as "including" or "having" are used to specify the presence of features, numbers, steps, operations, components, parts, or combinations thereof described in the specification, and should be understood as not precluding the possibility of the presence or addition of one or more other features, numbers, steps, operations, components, parts, or combinations thereof.
[0016] On the other hand, each configuration on the drawings described in this document is shown independently for the convenience of explaining different characteristic functions, and does not mean that each configuration is embodied as separate hardware or separate software. For example, two or more of these configurations may be combined to form one configuration, or one configuration may be divided into multiple configurations. Embodiments in which each configuration is integrated and / or separated are also included in the scope of rights of this document, as long as they do not depart from the essence of this document.
[0017] Hereinafter, referring to the accompanying drawings, preferred embodiments of this document will be described in more detail. Hereinafter, the same reference numerals will be given to the same components on the drawings, and duplicate descriptions of the same components will be omitted.
[0018] FIG. 1 schematically shows an example of a video / video coding system to which embodiments of this document are applicable.
[0019] Referring to FIG. 1, a video / image coding system can include a first device (source device) and a second device (receiving device). The source device can transmit encoded video / image information or data to the receiving device in the form of a file or a stream via a digital storage medium or a network.
[0020] The source device can include a video source, an encoding device, and a transmitting unit. The receiving device can include a receiving unit, 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. A transmitter may be included in the encoding device. A receiver may be included in the decoding device. The renderer can also include a display unit, and the display unit may be configured as a separate device or an external component.
[0021] The video source can obtain video / image through processes such as video / image capture, synthesis, or generation. The video source can include a video / image capture device and / or a video / image generation device. The video / image capture device can include, for example, one or more cameras, a video / image archive including previously captured video / image, etc. The video / image generation device can include, for example, a computer, a tablet, and a smartphone, etc., and can (electronically) generate video / image. For example, virtual video / image may be generated by a computer or the like, and in this case, the video / image capture process may be replaced by the process of generating related data.
[0022] An encoding device can encode input video / image data. The encoding device can perform a series of steps, such as prediction, transformation, and quantization, for compression and coding efficiency. The encoded data (encoded video / image information) may be output in the form of a bitstream.
[0023] The transmitting 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, and SSD. The transmitting unit may include elements for generating media files in a predetermined file format and may include elements for transmission via a broadcast / communication network. The receiving unit can receive / extract the bitstream and transmit it to a decoding device.
[0024] A decoding device can decode video / images by performing a series of steps, such as inverse quantization, inverse transformation, and prediction, corresponding to the operation of an encoding device.
[0025] The renderer can render the decoded video / image. The rendered video / image may be displayed on the display unit.
[0026] This document relates to video / image coding. For example, the methods / examples disclosed in this document may be applied to methods disclosed in the VVC (versatile video coding) standard, EVC (essential video coding) standard, AV1 (AOMedia Video1) standard, AVS2 (2nd generation of audio video coding standard), or next-generation video / image coding standards (e.g., H.267 or H.268).
[0027] This document presents various embodiments of video / image coding, and unless otherwise specified, these embodiments may be combined with each other.
[0028] In this document, "video" can mean a collection of images over time. "Picture" generally refers to a unit representing a single image at a specific time point, while "subpicture," "slice," and "tile" are units that constitute part of a picture in coding. A subpicture, slice, or tile can contain one or more coding tree units (CTUs). A single picture may consist of one or more subpictures, slices, or tiles. A single picture may consist of one or more tile groups. A tile group can contain one or more tiles. A brick can represent a rectangular area of a CTU row within a picture tile. A tile may be partitioned into multiple bricks, and each brick may consist of one or more CTU rows within that tile. A tile that is not partitioned into multiple bricks can also be called a brick. A brick scan can represent a specific sequential ordering of CTUs that partition a picture, where these CTUs may be aligned by a CTU raster scan within a brick, where bricks within a tile may be aligned consecutively by a raster scan of the bricks in the tile, and where tiles within a picture may be aligned consecutively by a raster scan of the tiles in the picture. A subpicture can represent a rectangular area of one or more slices within a picture; that is, a subpicture may include one or more slices that collectively cover a rectangular area of the picture. A tile is a rectangular area of CTUs within a specific tile row and a specific tile column in a picture. The tile column is a rectangular area of CTUs, where the rectangular area has the same height as the height of the picture, and its width may be specified by a syntax element in the picture parameter set. The tile row is a rectangular area of CTUs, where the rectangular area has the width specified by a syntax element in the picture parameter set, and its height may be the same as the height of the picture.A tile scan can represent a specific sequential ordering of CTUs that partition a picture, wherein the CTUs may be aligned consecutively within the tile by a CTU raster scan, and the tiles within the picture may be aligned consecutively by a raster scan of the tiles in the picture. A slice may contain an integer number of bricks of a picture, wherein the integer number of bricks may be contained in a single NAL unit. A slice may consist of multiple complete tiles, or a consecutive sequence of complete bricks of a single tile. In this document, tile group and slice may be used interchangeably. For example, in this document, tile group / tile group header may be referred to as slice / slice header.
[0029] A pixel or PEL (pel) can refer to the smallest unit that makes up a picture (or image). Alternatively, the term "sample" may be used as a counterpart to "pixel." A sample can generally represent a pixel or a pixel value, and may represent only the luma component pixel / pixel value, or only the chroma component pixel / pixel value.
[0030] A unit can represent a basic unit of image processing. A unit can contain at least one of the following: a specific region of a picture and information associated with that region. A unit can contain one luma block and two chroma (e.g., cb, cr) blocks. The term unit may be used interchangeably with terms such as block or area. In general, an MxN block can contain a sample (or sample array) or a set (or array) of transform coefficients consisting of M columns and N rows.
[0031] In this specification, "A or B" can mean "A only," "B only," or "both A and B." In other words, in this specification, "A or B" can be interpreted as "A and / or B." For example, in this specification, "A, B or C" can mean "A only," "B only," "C only," or "any combination of A, B and C."
[0032] As used herein, slashes ( / ) and commas can mean "and / or". For example, "A / B" can mean "A and / or B". Therefore, "A / B" can mean "A only", "B only", or "both A and B". For example, "A, B, C" can mean "A, B or C".
[0033] In this specification, "at least one of A and B" can mean "A only," "B only," or "both A and B." Furthermore, in this specification, the expressions "at least one of A or B" and "at least one of A and / or B" may be interpreted as equivalent to "at least one of A and B."
[0034] Furthermore, in this specification, "at least one of A, B and C" can mean "A only," "B only," "C only," or "any combination of A, B and C." Also, "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."
[0035] Furthermore, the parentheses used in this specification can mean "for example." Specifically, when "prediction (intra prediction)" is displayed, "intra prediction" may be proposed as an example of "prediction." In other words, "prediction" in this specification is not limited to "intra prediction," and "intra prediction" may be proposed as an example of "prediction." Similarly, when "prediction (i.e., intra prediction)" is displayed, "intra prediction" may be proposed as an example of "prediction."
[0036] In this specification, technical features described individually in a single drawing may be embodied individually or simultaneously.
[0037] The following drawings are provided to illustrate a specific example of this specification. The names of specific devices or signals / messages / fields shown in the drawings are presented illustratively, and the technical features of this specification are not limited to the specific names shown in the following drawings.
[0038] Figure 2 is a schematic diagram illustrating the configuration of a video / image encoding device to which the embodiments described in this document can be applied. Hereinafter, the term "video encoding device" may include an image encoding device.
[0039] Referring to Figure 2, the encoding device 200 may be configured to include an image partitioner (210), a predictor (220), a residual processor (230), an entropy encoder (240), an adder (250), a filter (260), and a memory (270). The predictor (220) may include an inter-predictor (221) and an intra-predictor (222). The residual processor (230) may include a transformer (232), a quantizer (233), a dequantizer (234), and an inverse transformer (235). The residual processor (230) may further include a subtractor (231). The addition unit 250 may also be called a reconstructor or a reconstructed block generator. The video splitting unit 210, prediction unit 220, residual processing unit 230, entropy encoding unit 240, addition unit 250, and filtering unit 260 described above may be composed of one or more hardware components (e.g., an encoder chipset or processor) depending on the embodiment. The memory 270 may also include a DPB (decoded picture buffer) and may be composed of a digital storage medium. The hardware components may further include the memory 270 as an internal / external component.
[0040] The video splitting unit 210 can split the input video (or picture, frame) input to the encoding device 200 into one or more processing units. For example, the processing units can be called coding units (CUs). In this case, the coding units may be recursively split from a coding tree unit (CTU) or the largest coding unit (LCU) using a QTBTTT (Quad-tree binary-tree ternary-tree) structure. For example, one coding unit may be split into multiple coding units of deeper depth based on a quad-tree structure, a binary tree structure, and / or a Tannery structure. In this case, for example, the quad-tree structure may be applied first, followed by the binary tree structure and / or the Tannery structure. Alternatively, the binary tree structure may be applied first. The coding procedure according to this document may be performed based on the final coding unit that is not further split. In this case, based on coding efficiency due to video characteristics, the largest coding unit may be immediately used as the final coding unit, or, if necessary, the coding unit may be recursively divided into coding units of lower depth, and the coding unit of optimal size may be used as the final coding unit. Here, the coding procedure may include procedures such as prediction, transformation, and reconstruction, which will be described later. As another example, the processing unit may further include a prediction unit (PU) or a transformation unit (TU). In this case, the prediction unit and the transformation unit may be divided or partitioned from the final coding unit described above. The prediction unit may be a unit of sample prediction, and the transformation unit may be a unit that derives transformation coefficients and / or a unit that derives a residual signal from transformation coefficients.
[0041] The term "unit" may, depending on the context, be used interchangeably with terms such as "block" or "area." 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 may represent only the pixel / pixel value of the lumen component, or only the pixel / pixel value of the chroma component. A sample may be used as a term corresponding to a single picture (or image) for a pixel or pel.
[0042] The encoding device 200 can generate a residual signal (residual block, residual sample array) by subtracting the prediction signal (prediction block, prediction sample array) output from the inter-prediction unit 221 or intra-prediction unit 222 from the input video signal (original block, original sample array), and the generated residual signal is transmitted to the conversion unit 232. In this case, as shown in the figure, the unit in the encoding device 200 that subtracts the prediction signal (prediction block, prediction sample array) from the input video signal (original block, original sample array) may be called the subtraction unit 231. The prediction unit can make predictions for the block to be processed (hereinafter referred to as the current block) and generate a predicted block that includes predicted samples for the current block. The prediction unit can determine whether intra-prediction or inter-prediction is applied on a current block or CU basis. As will be described later in the explanation of each prediction mode, the prediction unit can generate various prediction-related information such as prediction mode information and transmit it to the entropy encoding unit 240. Information regarding the prediction may be encoded by the entropy encoding unit 240 and output in the form of a bitstream.
[0043] The intra-prediction unit 222 can predict the current block by referring to a sample in the current picture. The referenced sample may be located in the vicinity (neighbor) or at a distance from the current block, depending on the prediction mode. In intra-prediction, the prediction mode can include multiple non-directional modes and multiple directional modes. Non-directional modes can include, for example, DC mode and planar mode. Directional modes can include, for example, 33 directional prediction modes or 65 directional prediction modes, depending on the degree of detail of the prediction direction. However, this is an example, and more or fewer directional prediction modes may be used depending on the settings. The intra-prediction unit 222 can also determine the prediction mode to be applied to the current block using the prediction modes applied to the surrounding blocks.
[0044] The interprediction unit 221 can guide a predicted block for the current block based on a reference block (reference sample array) identified by a motion vector on the reference picture. At this time, in order to reduce the amount of motion information transmitted in interprediction mode, motion information can be predicted in units of blocks, subblocks, or samples based on the correlation of motion information between the surrounding block and the current block. The motion information may include a motion vector and a reference picture index. The motion information may further include interprediction direction information (L0 prediction, L1 prediction, Bi prediction, etc.). In interprediction, the surrounding block may include a spatial neighboring block existing in the current picture and a temporal neighboring block existing in the reference picture. The reference picture containing the reference block and the reference picture containing the temporal neighboring block may be the same or different. The temporal neighboring block may also be called a collocated reference block, colCU, etc., and the reference picture containing the temporal neighboring block may also be called a collocated picture (colPic). For example, the interpretation unit 221 can construct a motion information candidate list based on surrounding blocks and generate information indicating which candidate is used to derive the motion vector and / or reference picture index of the current block. Interpretation may be performed based on various prediction modes; for example, in skip mode and merge mode, the interpretation unit 221 can use the motion information of surrounding blocks as the motion information of the current block. In skip mode, unlike merge mode, the residual signal does not need to be transmitted.In motion vector prediction (MVP) mode, the motion vectors of surrounding blocks are used as motion vector predictors, and the motion vector difference is signaled to indicate the motion vector of the current block.
[0045] The prediction unit 220 can generate prediction signals based on various prediction methods described later. For example, the prediction unit can apply intra-prediction or inter-prediction for prediction of a single block, or it can apply intra-prediction and inter-prediction simultaneously. This can be called CIIP (combined inter and intra prediction). The prediction unit may also 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 may be used for coding content video / moving images such as games, for example, in SCC (screen content coding). IBC basically performs prediction within the current picture, but it may be performed similarly to inter-prediction in that it derives a reference block within the current picture. That is, IBC can use at least one of the inter-prediction methods described in this document. Palette mode can be considered an example of intra-coding or intra-prediction. When palette mode is applied, in-picture sample values can be signaled based on information about the palette table and palette index.
[0046] The prediction signal generated by the prediction unit (including the inter-prediction unit 221 and / or the intra-prediction unit 222) may be used to generate a reconstructed signal or a residual signal. The transformation unit 232 can generate transformation coefficients by applying a transformation method to the residual signal. For example, the transformation method may include at least one of DCT (Discrete Cosine Transform), DST (Discrete Sine Transform), KLT (Karhunen-Loeve Transform), GBT (Graph-Based Transform), or CNT (Conditionally Non-linear Transform). Here, GBT means a transformation obtained from a graph when the relationship information between pixels is represented by this graph. CNT means a transformation obtained by generating a prediction signal using all previously reconstructed pixels and based on that. Furthermore, the transformation process may be applied to pixel blocks of the same size that are square, or to blocks of variable size other than squares.
[0047] The quantization unit 233 quantizes the conversion coefficients and transmits them to the entropy encoding unit 240, which can encode the quantized signal (information about the quantized conversion coefficients) and output it as a bitstream. The information about the quantized conversion coefficients can be called residual information. The quantization unit 233 can rearrange the block-shaped quantized conversion coefficients into a one-dimensional vector based on the coefficient scan order, and can also generate information about the quantized conversion coefficients based on the one-dimensional vector-shaped quantized conversion coefficients. The entropy encoding unit 240 can perform various encoding methods, such as exponential Golomb, CAVLC (context-adaptive variable length coding), and CABAC (context-adaptive binary arithmetic coding). In addition to the quantized conversion coefficients, the entropy encoding unit 240 can also encode information necessary for video / image restoration (e.g., the values of syntax elements) together with or separately from the quantized conversion coefficients. The encoded information (e.g., encoded video / image information) may be transmitted or stored in the form of a bitstream in units of network abstraction layer (NAL) units. The video / image information may further include information about various parameter sets, such as an adaptation parameter set (APS), picture parameter set (PPS), sequence parameter set (SPS), or video parameter set (VPS). The video / image information may also further include general constraint information. In this document, information and / or syntax elements transmitted / signaled by the encoding device to the decoding device may be included in the video / image information. The video / image information may be encoded by the encoding procedure described above and included in the bitstream.The bitstream may be transmitted over a network or stored in a digital storage medium. Here, the network may include broadcasting networks and / or communication networks, and the digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, and SSD. A transmitting unit (not shown) that transmits the signal output from the entropy encoding unit 240 and / or a storage unit (not shown) that stores it may be configured as an internal / external element of the encoding device 200, or the transmitting unit may be included in the entropy encoding unit 240.
[0048] The quantized conversion coefficients output from the quantization unit 233 may be used to generate a prediction signal. For example, the residual signal (residual block or residual sample) can be reconstructed by applying inverse quantization and inverse transformation to the quantized conversion coefficients in the inverse quantization unit 234 and the inverse transformation unit 235. The adder 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 may be used as the reconstructed block. The adder unit 250 may be called the reconstruction unit or the reconstructed block generation unit. The generated reconstructed signal may be used for intra-prediction of the next block to be processed in the current picture, or, as described later, may be used for inter-prediction of the next picture after filtering.
[0049] On the other hand, LMCS (luma mapping with chroma scaling) may be applied during the picture encoding and / or restoration process.
[0050] The filtering unit 260 can improve subjective / objective image quality by applying filtering to the restored signal. For example, the filtering unit 260 can apply various filtering methods to the restored picture to generate a modified restored picture, and the modified restored picture can be stored in the memory 270, specifically in the DPB of the memory 270. The various filtering methods can include, for example, deblocking filtering, sample adaptive offset, adaptive loop filter, and bilateral filter. The filtering unit 260 can generate various filtering-related information and transmit it to the entropy encoding unit 240, as will be described later in the description of each filtering method. The filtering-related information may be encoded by the entropy encoding unit 240 and output in the form of a bitstream.
[0051] The corrected restored picture transmitted to memory 270 may be used as a reference picture in the interpretation unit 221. This allows the encoding device to avoid prediction mismatches between the encoding device 200 and the decoding device 300 when interpretation is applied, and also improves encoding efficiency.
[0052] The DPB in memory 270 can store the corrected restored picture for use as a reference picture in the inter-prediction unit 221. Memory 270 can store motion information of blocks from which motion information in the picture has been derived (or encoded) and / or motion information of blocks in the picture that have already been restored. The stored motion information can be transmitted to the inter-prediction unit 221 for use as motion information of spatially surrounding blocks or motion information of temporally surrounding blocks. Memory 270 can store restored samples of blocks that have been restored in the picture and transmit them to the intra-prediction unit 222.
[0053] Figure 3 is a schematic diagram illustrating the configuration of a video / image decoding device to which the embodiments described in this document can be applied.
[0054] Referring to Figure 3, the decoding device 300 may 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-predictor (331) and an intra-predictor (332). The residual processor (320) may include a dequantizer (321) and an inverse transformer (322). The entropy decoder (310), residual processor (320), predictor (330), adder (340), and filter (350) described above may be configured by a single hardware component (e.g., a decoder chipset or processor) depending on the embodiment. The memory (360) may include a decoded picture buffer (DPB) and may be configured by a digital storage medium. The aforementioned hardware component may further include memory 360 as an internal / external component.
[0055] When a bitstream containing video / image information is input, the decoding device 300 can reconstruct the image in a manner corresponding to the process by which the video / image information was processed in the encoding device shown in Figure 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 the processing units applied in the encoding device. Therefore, the decoding processing unit may be, for example, a coding unit, which may be divided into a quad-tree structure, a binary tree structure, and / or a Tannerly tree structure from a coding tree unit or a maximum coding unit. One or more conversion units may be derived from the coding unit. The reconstructed video signal decoded and output by the decoding device 300 may then be played back by a playback device.
[0056] The decoding device 300 can receive the signal output from the encoding device shown in Figure 2 in the form of a bitstream, and the received signal may be decoded by the entropy decoding unit 310. For example, the entropy decoding unit 310 can parse the bitstream and derive information necessary for video restoration (or picture restoration) (e.g., video / image information). The video / image information may further include information about various parameter sets such as the adaptation parameter set (APS), picture parameter set (PPS), sequence parameter set (SPS), or video parameter set (VPS). The video / image information may also further include general constraint information. The decoding device can decode the picture based on the parameter set information and / or the general constraint information. The signaling / received information and / or syntax elements described later in this document may be decoded by the decoding procedure and obtained from the bitstream. For example, the entropy decoding unit 310 can decode information within a bitstream based on a coding method such as exponential Golomb coding, CAVLC, or CABAC, and output the values of syntax elements necessary for image restoration and the quantized values of conversion coefficients related to the residual. More specifically, the CABAC entropy decoding method receives bins corresponding to each syntax element from the bitstream, determines a context model using the syntax element information to be decoded, the decoding information of the surrounding and decoded blocks, or the symbol / bin information decoded in a previous stage, predicts the probability of bin occurrence based on the determined context model, performs arithmetic decoding of the bins, and generates symbols corresponding to the values of each syntax element. At this time, after determining the context model, the CABAC entropy decoding method can update the context model using the symbol / bin information decoded for the context model of the next symbol / bin.Information related to prediction from the information decoded by the entropy decoding unit 310 is provided to the prediction unit 330 (inter-prediction unit 332 and intra-prediction unit 331), and residual values that have been entropy decoded by the entropy decoding unit 310, i.e., quantized conversion coefficients and related parameter information, may be input to the residual processing unit 320. The residual processing unit 320 can derive residual signals (residual blocks, residual samples, residual sample arrays). In addition, information related to filtering from the information decoded by the entropy decoding unit 310 may be provided to the filtering unit 350. On the other hand, a receiving unit (not shown) that receives signals output from the encoding device may be further configured as an internal / external element of the decoding device 300, or the receiving unit may be a component of the entropy decoding unit 310. On the other hand, the decoding device relating to this document can be called a video / image / picture decoding device, and the decoding device can be distinguished into an information decoder (video / image / picture information decoder) and a sample decoder (video / image / picture sample decoder). The information decoder may include the entropy decoding unit 310, and the sample decoder may include at least one of the inverse quantization unit 321, inverse transformation unit 322, addition unit 340, filtering unit 350, memory 360, inter-prediction unit 332, and intra-prediction unit 331.
[0057] The inverse quantization unit 321 can inverse quantize the quantized transformation coefficients and output the transformation coefficients. The inverse quantization unit 321 can rearrange the quantized transformation coefficients in the form of two-dimensional blocks. In this case, the rearrangement can be performed based on the coefficient scan order performed by the encoding device. The inverse quantization unit 321 can perform inverse quantization on the quantized transformation coefficients using quantization parameters (e.g., quantization step size information) and obtain the transformation coefficients.
[0058] In the inverse conversion unit 322, the conversion coefficients are inversely converted to obtain residual signals (residual blocks, residual sample arrays).
[0059] The prediction unit can make predictions for the current block and generate a predicted block containing prediction samples for the current block. Based on the prediction information output from the entropy decoding unit 310, the prediction unit can determine whether intra-prediction or inter-prediction is applied to the current block and determine a specific intra / inter-prediction mode.
[0060] The prediction unit 320 can generate prediction signals based on various prediction methods described later. For example, the prediction unit can apply intra-prediction or inter-prediction for prediction of a single block, or it can apply intra-prediction and inter-prediction simultaneously. This can be called CIIP (combined inter and intra prediction) mode. The prediction unit may also be based on intra-block copy (IBC) prediction mode or palette mode for prediction of a block. The IBC prediction mode or palette mode may be used for coding content video / moving images such as games, for example, as in SCC (screen content coding). IBC basically performs prediction within the current picture, but it may be performed similarly to inter-prediction in that it derives a reference block within the current picture. That is, IBC can use at least one of the inter-prediction methods described in this document. Palette mode can be considered an example of intra-coding or intra-prediction. When palette mode is applied, information regarding the palette table and palette index may be included in the video / image information and signaled.
[0061] The intra-prediction unit 331 can predict the current block by referring to a sample in the current picture. Depending on the prediction mode, the referenced sample may be located in the vicinity (neighbor) of the current block or at a distance. In intra-prediction, the prediction mode may include multiple non-directional modes and multiple directional modes. The intra-prediction unit 331 can also determine the prediction mode to be applied to the current block using the prediction modes applied to the surrounding blocks.
[0062] The interprediction unit 332 can derive a predicted block relative to the current block based on a reference block (reference sample array) identified by motion vectors on the reference picture. In this case, in order to reduce the amount of motion information transmitted in interprediction mode, motion information can be predicted in units of blocks, subblocks, or samples based on the correlation of motion information between surrounding blocks and the current block. The motion information may include motion vectors and reference picture indices. The motion information may further include interprediction direction information (L0 prediction, L1 prediction, Bi prediction, etc.). In interprediction, surrounding blocks may include spatial neighboring blocks present in the current picture and temporal neighboring blocks present in the reference picture. For example, the interprediction unit 332 can construct a motion information candidate list based on surrounding blocks and derive the motion vector and / or reference picture index of the current block based on the received candidate selection information. Interprediction may be performed based on various prediction modes, and the prediction information may include information indicating the interprediction mode for the current block.
[0063] The adder 340 can generate a restored signal (restored picture, restored block, restored sample array) by adding the acquired residual signal to the predicted signal (predicted block, predicted 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 predicted block may be used as the restored block.
[0064] The summing unit 340 can be called a restoration unit or a restoration block generation unit. The generated restoration signal may be used for intra-prediction of the next block to be processed in the current picture, and may be output after filtering as described later, or may be used for intra-prediction of the next picture.
[0065] On the other hand, LMCS (luma mapping with chroma scaling) may be applied during the picture decoding process.
[0066] The filtering unit 350 can apply filtering to the restored signal to improve subjective / objective image quality. 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 may include, for example, deblocking filtering, sample adaptive offset, adaptive loop filter, and bilateral filter.
[0067] The restored picture stored (modified) in the DPB of memory 360 may be used as a reference picture in the inter-prediction unit 332. Memory 360 can store motion information of blocks from which motion information in the current picture has been derived (or decoded), and / or motion information of blocks in the picture that have already been restored. This stored motion information can be transmitted to the inter-prediction unit 260 for use as motion information of spatially surrounding blocks or motion information of temporally surrounding blocks. Memory 360 can store restored samples of restored blocks in the current picture and transmit them to the intra-prediction unit 331.
[0068] In this specification, the embodiments described for the filtering unit 260, inter-prediction unit 221, and intra-prediction unit 222 of the encoding device 200 may be applied identically or in a corresponding manner to the filtering unit 350, inter-prediction unit 332, and intra-prediction unit 331 of the decoding device 300, respectively.
[0069] In this document, at least one of quantization / inverse quantization and / or transformation / inverse transformation may be omitted. When quantization / inverse quantization is omitted, the quantized transformation coefficient may be called a transformation coefficient. When transformation / inverse transformation is omitted, the transformation coefficient may also be called a coefficient or residual coefficient, or may continue to be called a transformation coefficient for consistency of expression.
[0070] Furthermore, in this document, quantized transformation coefficients and transformation coefficients can be referred to as transformation coefficients and scaled transformation coefficients, respectively. In this case, residual information may include information about the transformation coefficients, and such information about the transformation coefficients may be signaled by residual coding syntax. Transformation coefficients may be derived based on the residual information (or information about the transformation coefficients), and scaled transformation coefficients may be derived by an inverse transformation (scaling) of the transformation coefficients. Residual samples may be derived based on an inverse transformation (transformation) of the scaled transformation coefficients. This may be applied / expressed identically in other parts of this document.
[0071] As described above, the encoding device can perform various encoding methods, such as exponential Golomb, CAVLC (context-adaptive variable length coding), and CABAC (context-adaptive binary arithmetic coding). The decoding device can decode the information within the bitstream based on coding methods such as exponential Golomb coding, CAVLC, or CABAC, and output the values of the syntax elements necessary for image restoration and the quantized values of the conversion coefficients related to the residuals.
[0072] For example, the coding method described above may be carried out as described later.
[0073] Figure 4 illustrates CABAC (context-adaptive binary arithmetic coding) for encoding a syntax element. For example, in the CABAC encoding process, if the input signal is a syntax element that is not a binary value, the encoding device can convert the input signal into a binary value by binaryizing the value of the input signal. If the input signal is already a binary value (i.e., the value of the input signal is a binary value), binaryization may be bypassed. Here, each binary number 0 or 1 that makes up the binary value can be called a bin. For example, if the binary string after binaryization is 110, then 1, 1, and 0 are each called one bin. The bins for a syntax element can represent the value of the syntax element.
[0074] Subsequently, the binary-encoded bins of the syntax elements may be input to a regular encoding engine or a bypass encoding engine. The regular encoding engine of the encoding device can assign a context model that reflects probability values to the bins and encode the bins based on the assigned context model. The regular encoding engine of the encoding device can update the context model for each bin after encoding it. The bins encoded as described above can be called context-coded bins.
[0075] On the other hand, when the binary-evolved bins of the syntax elements are input to the bypass encoding engine, they may be encoded as follows: For example, the bypass encoding engine of the encoding device omits the steps of estimating probabilities for the input bins and updating the probability model applied to the bins after encoding. When bypass encoding is applied, the encoding device can encode the input bins by applying a uniform probability distribution instead of assigning a context model, thereby improving the encoding speed. The bins encoded as described above can be called bypass bins.
[0076] Entropy decoding can be described as a process that performs the steps in entropy encoding described above in reverse order.
[0077] For example, when a syntax element is decoded based on a context model, the decoding device can receive a bin corresponding to the syntax element via a bitstream, determine a context model using the syntax element and the decoding information of the block to be decoded or surrounding blocks, or symbol / bin information decoded in a previous step, predict the probability of the received bin occurring based on the determined context model, perform arithmetic decoding of the bin, and derive the value of the syntax element. Subsequently, the context model of the next bin to be decoded may be updated to the determined context model.
[0078] Furthermore, for example, when a syntax element is bypass-decoded, the decoding device can receive the bins corresponding to the syntax element using a bitstream and decode the input bins by applying a uniform probability distribution. In this case, the decoding device can omit the procedure for deriving the context model of the syntax element and the procedure for updating the context model applied to the bins after decoding.
[0079] As described above, the residual sample may be derived as a quantized transformation coefficient through a transformation and quantization process. The quantized transformation coefficient can also be called the transformation coefficient. In this case, the transformation coefficient within a block may be signaled in the form of residual information. The residual information may include residual coding syntax. That is, an encoding device can construct residual coding syntax with the residual information, encode it, and output it in the form of a bitstream, and a decoding device can decode the residual coding syntax from the bitstream to derive the residual (quantized) transformation coefficient. The residual coding syntax may include syntax elements that indicate whether a transformation was applied to the block, the position of the last effective transformation coefficient within the block, whether effective transformation coefficients exist within subblocks, the size / sign of the effective transformation coefficients, etc., as will be described later.
[0080] For example, syntax elements related to residual data encoding / decoding can be represented as shown in the following table.
[0081] [Table 1-1]
[0082] [Table 1-2]
[0083] [Table 1-3]
[0084] The transform_skip_flag indicates whether a transformation is omitted in the associated block. The transform_skip_flag may be a syntax element of the transformation skip flag. The associated block may be a CB (coding block) or a TB (Transform block). With respect to transformation (and quantization) and residual coding procedures, CB and TB may be used interchangeably. For example, as mentioned above, a residual sample may be derived for a CB, and a (quantized) transformation coefficient may be derived by transformation and quantization of the residual sample. The residual coding procedure may generate and signal information (e.g., a syntax element) that efficiently indicates the position, size, sign, etc., of the (quantized) transformation coefficient. The quantized transformation coefficient can simply be called the transformation coefficient. In general, if the CB is not larger than the maximum TB, the size of the CB may be the same as the size of the TB, in which case the block to be transformed (and quantized) and residual coded can be called the CB or TB. On the other hand, if the CB is greater than the maximum TB, the block that is transformed (and quantized) and resistively coded can be called the TB. Below, the syntax elements related to resistive coding will be explained assuming that they are signaled in units of transformed blocks (TB), but this is an example, and as mentioned above, the TB may be used interchangeably with the coding block (CB).
[0085] On the other hand, the syntax elements that are signaled after the conversion skip flag is signaled may be the same as the syntax elements disclosed in Table 2 and / or Table 3, which will be described later. A specific description of the syntax elements will be given later.
[0086] Table 2-1
[0087] Table 2-2
[0088] Table 2-3
[0089] Table 2-4
[0090] Table 2-5
[0091] Table 2-6
[0092] Table 3-1
[0093] Table 3-2
[0094] Table 3-3
[0095] In this embodiment, as shown in Table 1, residual coding may be branched based on the value of the transform_skip_flag syntax element. That is, different syntax elements may be used for residual coding based on the value of the transform_skip_flag (whether or not a transform is skipped). Residual coding used when a transform skip is not applied (i.e., when a transform is applied) can be called Regular Residual Coding (RRC), and residual coding used when a transform skip is applied (i.e., when a transform is not applied) can be called Transform Skip Residual Coding (TSRC). Regular residual coding can also be called general residual coding. Regular residual coding can also be called a Regular Residual Coding syntax structure, and transform skip residual coding can also be called a Transform Skip Residual Coding syntax structure. Table 2 can represent the syntax elements of the residual coding when the value of transform_skip_flag is 0, i.e., when the transformation is applied, and Table 3 can represent the syntax elements of the residual coding when the value of transform_skip_flag is 1, i.e., when the transformation is not applied.
[0096] Specifically, for example, a conversion skip flag indicating whether or not to skip the conversion of a conversion block may be parsed, and it may be determined whether or not the conversion skip flag is 1. If the value of the conversion skip flag is 0, the syntax elements last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_suffix, sb_coded_flag, sig_coeff_flag, abs_level_gtx_flag, par_level_flag, abs_remainder, coeff_sign_flag and / or dec_abs_level for the residual coefficients of the conversion block may be parsed, as shown in Table 2, and the residual coefficients may be derived based on the syntax elements. In this case, the syntax elements may be parsed sequentially, and the parsing order may be changed. Furthermore, the abs_level_gtx_flag can represent abs_level_gt1_flag and / or abs_level_gt3_flag. For example, abs_level_gtx_flag[n][0] may be an example of the first conversion coefficient level flag (abs_level_gt1_flag), and abs_level_gtx_flag[n][1] may be an example of the second conversion coefficient level flag (abs_level_gt3_flag).
[0097] Referring to Table 2 above, last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_suffix, sb_coded_flag, sig_coeff_flag, abs_level_gt1_flag, par_level_flag, abs_level_gt3_flag, abs_remainder, coeff_sign_flag, and / or dec_abs_level may be encoded / decoded. On the other hand, sb_coded_flag can also be represented as coded_sub_block_flag.
[0098] In one embodiment, the encoding device can encode the (x,y) position information of the last non-zero conversion coefficient in the conversion block based on the syntax elements last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, and last_sig_coeff_y_suffix. More specifically, last_sig_coeff_x_prefix represents the prefix of the column position of the last significant coefficient in the scanning order within the transformation block, last_sig_coeff_y_prefix represents the prefix of the row position of the last significant coefficient in the scanning order within the transformation block, last_sig_coeff_x_suffix represents the suffix of the column position of the last significant coefficient in the scanning order within the transformation block, and last_sig_coeff_y_suffix represents the row position of the last significant coefficient in the scanning order within the transformation block. This represents the suffix of the position. Here, the effective coefficient can represent the non-zero coefficient. The scan order may be a diagonal scan order pointing upwards to the right. Alternatively, the scan order may be a horizontal scan order or a vertical scan order. The scan order may be determined based on whether intra / inter prediction is applied to the target block (CB, or CB including TB) and / or a specific intra / inter prediction mode.
[0099] Subsequently, the encoding device divides the conversion block into 4x4 sub-blocks, and then uses a 1-bit syntax element, coded_sub_block_flag, for each 4x4 sub-block to indicate whether or not there are currently non-zero coefficients within the sub-block.
[0100] If the value of coded_sub_block_flag is 0, there is no further information to transmit, and the encoding device can terminate the encoding process for the subblock. Conversely, if the value of coded_sub_block_flag is 1, the encoding device can continue the encoding process for sig_coeff_flag. Subblocks containing the last non-zero coefficient do not require encoding of coded_sub_block_flag, and subblocks containing DC information of the conversion block are highly likely to contain non-zero coefficients, so coded_sub_block_flag is not encoded and its value can be assumed to be 1.
[0101] If the value of coded_sub_block_flag is 1, and it is determined that there is a non-zero coefficient in the subblock, the encoding device can encode sig_coeff_flag, which has a binary value, in the reverse scan order. The encoding device can encode a 1-bit syntax element sig_coeff_flag for each conversion coefficient in the scan order. If the value of the conversion coefficient at the current scan position is not 0, the value of sig_coeff_flag can be 1. Here, in the case of a subblock containing the last non-zero coefficient, there is no need to encode sig_coeff_flag for the last non-zero coefficient, so the encoding process for that subblock may be omitted. Level information encoding may be performed only when sig_coeff_flag is 1, and four syntax elements may be used in the level information encoding process. More specifically, each sig_coeff_flag[xC][yC] can indicate whether the level (value) of the conversion coefficient at each conversion coefficient position (xC,yC) in the current TB is non-zero. In one embodiment, the sig_coeff_flag may be an example of a syntax element of an effectiveness coefficient flag that indicates whether the quantized conversion coefficient is a non-zero effectiveness coefficient.
[0102] The remaining level value after encoding for sig_coeff_flag may be derived as follows. That is, the syntax element remAbsLevel, which indicates the level value that must be encoded, may be derived as follows.
[0103]
number
[0104] Here, coeff represents the actual conversion coefficient value.
[0105] Furthermore, abs_level_gt1_flag can indicate whether the remAbsLevel at the scanning position (n) is greater than 1. For example, if the value of abs_level_gt1_flag is 0, the absolute value of the conversion coefficient at that position may be 1. Also, if the value of abs_level_gt1_flag is 1, the remAbsLevel, which indicates the level value that must be encoded later, may be updated as shown in the following formula.
[0106]
number
[0107] Furthermore, the least significant coefficient (LSB) value of remAbsLevel described in Equation 2 above may be encoded by par_level_flag as shown in Equation 3 below.
[0108]
number
[0109] Here, par_level_flag[n] can indicate the parity of the transformation coefficient level (value) at scanning position n.
[0110] The conversion coefficient level value remAbsLevel, which must be encoded after par_leve_flag encoding, may be updated as follows:
[0111]
number
[0112] abs_level_gt3_flag can indicate whether the remAbsLevel at the scanning position (n) is greater than 3. Encoding for abs_remainder may only be performed if abs_level_gt3_flag is 1. The relationship between the actual conversion coefficient value coeff and each syntax element is as follows:
[0113]
number
[0114] The following table also shows examples related to Equation 5 described above.
[0115] [Table 4]
[0116] Here, |coeff| represents the conversion coefficient level (value), and may be denoted as AbsLevel for the conversion coefficient. Furthermore, the sign of each coefficient may be encoded using a 1-bit symbol, coeff_sign_flag.
[0117] Furthermore, for example, if the value of the conversion skip flag is 1, the syntax elements sb_coded_flag, sig_coeff_flag, coeff_sign_flag, abs_level_gtx_flag, par_level_flag and / or abs_remainder for the residual coefficients of the conversion block may be parsed, as shown in Table 3, and the residual coefficients may be derived based on the syntax elements. In this case, the syntax elements may be parsed sequentially, and the parsing order may be changed. Also, abs_level_gtx_flag can represent abs_level_gt1_flag, abs_level_gt3_flag, abs_level_gt5_flag, abs_level_gt7_flag and / or abs_level_gt9_flag. For example, abs_level_gtx_flag[n][j] may be a flag indicating whether the absolute value or level (value) of the conversion coefficient at scanning position n is greater than (j<<1)+1. The (j<<1)+1 may be replaced by predetermined critical values such as the first critical value and the second critical value, depending on the circumstances.
[0118] On the other hand, while CABAC offers high performance, it suffers from poor throughput. This is due to CABAC's normal encoding engine, which uses previously updated probabilistic states and ranges through bin encoding, resulting in high data dependency and potentially long processing times to read the probabilistic intervals and determine the current state. CABAC's throughput problem can be solved by limiting the number of context-coded bins. For example, as shown in Table 2 above, the sum of bins used to represent sig_coeff_flag, abs_level_gt1_flag, par_level_flag, and abs_level_gt3_flag may be limited to a number determined by the size of the block. Furthermore, as shown in Table 3 above, the sum of the bins used to represent sig_coeff_flag, coeff_sign_flag, abs_level_gt1_flag, par_level_flag, abs_level_gt3_flag, abs_level_gt5_flag, abs_level_gt7_flag, and abs_level_gt9_flag may be limited to a number determined by the size of the block. For example, if the block is a 4x4 size block, the sum of bins for sig_coeff_flag, abs_level_gt1_flag, par_level_flag, abs_level_gt3_flag or sig_coeff_flag, coeff_sign_flag, abs_level_gt1_flag, par_level_flag, abs_level_gt3_flag, abs_level_gt5_flag, abs_level_gt7_flag, abs_level_gt9_flag may be limited to 32 (or, for example, 28), and if the block is a 2x2 size block, the sum of bins for sig_coeff_flag, abs_level_gt1_flag, par_level_flag, abs_level_gt3_flag may be limited to 8 (or, for example, 7).The limited number of bins can be indicated by remBinsPass1 or RemCcbs. Alternatively, for example, to increase CABAC processing capacity, the number of context coded bins may be limited for a block (CB or TB) containing the CG to be coded. In other words, the number of context coded bins may be limited on a block (CB or TB) basis. For example, if the current block size is 16x16, the number of context coded bins for the current block may be limited to 1.75 times the number of pixels in the current block, i.e., 448, regardless of the current CG.
[0119] In this case, if the encoding device has used all of the limited number of context coding bins to encode the context elements, it can bypass coding the remaining coefficients by binary coding them using the binary coding method for the coefficients described below, without using context coding. In other words, for example, if the number of context coding bins coded for a 4x4 CG is 32 (or, for example, 28), or the number of context coding bins coded for a 2x2 CG is 8 (or, for example, 7), then sig_coeff_flag, abs_level_gt1_flag, par_level_flag, and abs_level_gt3_flag that would otherwise be coded into context coding bins do not need to be coded further and may be immediately coded into dec_abs_level. Alternatively, for example, if the number of context-coded bins coded for a 4x4 block is limited to 1.75 times the total number of pixels in the block, i.e., 28, then any further sig_coeff_flag, abs_level_gt1_flag, par_level_flag, and abs_level_gt3_flag coded into context-coded bins do not need to be coded, and may be immediately coded into dec_abs_level as shown in Table 5 below.
[0120] [Table 5]
[0121] The |coeff| value may be derived based on dec_abs_level. In this case, the conversion coefficient value |coeff| may be derived as shown in the following equation.
[0122]
number
[0123] Furthermore, the coeff_sign_flag can indicate the sign of the conversion coefficient level at the scanning position (n). In other words, the coeff_sign_flag can indicate the sign of the conversion coefficient at the scanning position (n).
[0124] Figure 5 shows an example of the conversion coefficients within a 4x4 block.
[0125] The 4x4 block in Figure 5 represents an example of quantized coefficients. The block shown in Figure 5 may be a 4x4 transformation block, or a 4x4 subblock of an 8x8, 16x16, 32x32, or 64x64 transformation block. The 4x4 block in Figure 5 can represent a luma block or a chroma block.
[0126] On the other hand, as described above, if the input signal is a syntax element that is not a binary value, the encoding device can convert the input signal to a binary value by binaryizing the value of the input signal. The decoding device can decode the syntax element and derive the binaryized value of the syntax element (i.e., the binaryized bin), and can derive the value of the syntax element by inverse binaryizing the binaryized value. The binaryization process may be carried out using the truncated rice (TR) binary process, the k-th order Exp-Golomb (EGk) binary process, the k-th order limited Exp-Golomb (EGk), or the fixed-length (FL) binary process, as described later. Furthermore, the inverse binary evolution process can represent a process that derives the value of the syntax element based on the TR binary evolution process, the EGk binary evolution process, or the FL binary evolution process.
[0127] For example, the TR binary evolution process may be carried out as follows.
[0128] The input to the TR binary process may be a request for the TR binary and cMax and cRiceParam for the syntax element. The output to the TR binary process may be the TR binary for the value symbolVal corresponding to the binstring.
[0129] Specifically, as an example, if a suffix binstring exists for a syntax element, the TR binstring for the syntax element may be a concatenation of a prefix binstring and a suffix binstring. If the suffix binstring does not exist, the TR binstring for the syntax element may be the prefix binstring. For example, the prefix binstring may be derived as described below.
[0130] The prefix value of symbolVal for the syntax element may be derived as follows:
[0131]
number
[0132] Here, prefixVal can represent the prefix value of symbolVal. The prefix of the TR binstring of the syntax element (i.e., the prefix binstring) may be derived as described below.
[0133] For example, if prefixVal is less than cMax>>cRiceParam, the prefix binstring may be a bit string of length prefixVal+1 that is indexed by binIdx. That is, if prefixVal is less than cMax>>cRiceParam, the prefix binstring may be a bit string of prefixVal+1 bits indicated by binIdx. The bin for a binIdx smaller than prefixVal may be the same as 1. Also, the bin for a binIdx that is the same as prefixVal may be the same as 0.
[0134] For example, the bit string derived by unary binarization for the prefixVal may be as shown in the following table.
[0135]
Table 6
[0136] On the other hand, when the prefixVal is not smaller than cMax >> cRiceParam, the prefix bit string may be a bit string with a length of cMax >> cRiceParam and all bits being 1.
[0137] Also, when cMax is larger than symbolVal and cRiceParam is larger than 0, a suffix bit string of the TR bit string may exist. For example, the suffix bit string may be derived as follows.
[0138] The suffix value of the symbolVal for the syntax element may be derived as follows.
[0139]
Equation
[0140] Here, suffixVal can represent the suffix value of the symbolVal.
[0141] The suffix of the TR bit string (i.e., the suffix bit string) may be derived based on the FL binarization process for suffixVal where the cMax value is (1 << cRiceParam) - 1.
[0142] On the other hand, if the value of the input parameter cRiceParam is 0, the TR binary may be exactly truncated unary binarization, and the same cMax value as the maximum possible value of the decoded syntax element may always be used.
[0143] Furthermore, for example, the EGk binary evolution process may be carried out as follows: The syntax element coded in ue(v) may be an Exp-Golomb coded syntax element.
[0144] As an example, the 0th-order Exp-Golomb (EG0) binary evolution process may be carried out as follows.
[0145] The parsing process for the syntax element may begin by reading the bit containing the first non-zero bit, starting from the current position of the bitstream, and counting the number of leading bits such as zero. This process can be represented as shown in the following table.
[0146] [Table 7]
[0147] Furthermore, the variable codeNum may be derived as follows:
[0148]
number
[0149] Here, the value returned by read_bits(leadingZeroBits), that is, the value indicated by read_bits(leadingZeroBits), can be interpreted as the binary representation of the unsigned integer for the most significant bit that was recorded first.
[0150] The structure of the Exp-Golomb code, which separates the bit string into "prefix" bits and "suffix" bits, can be represented as shown in the following table.
[0151] [Table 8]
[0152] The "prefix" bits may be the bits parsed as described above for the leadingZeroBits calculation and may be represented as 0 or 1 in the bit string in Table 8. That is, the bit strings represented as 0 or 1 in Table 8 can represent the prefix bit string. The "suffix" bits may be the bits parsed in the codeNum calculation and may be represented as xi in Table 8. That is, the bit strings represented as xi in Table 8 can represent the suffix bit string. Here, i may be a value in the range of 0 to LeadingZeroBits-1. Also, each xi may be the same as 0 or 1.
[0153] The bit string assigned to the aforementioned codeNum may be as shown in the following table.
[0154] [Table 9]
[0155] When the descriptor of a syntax element is ue(v), that is, when the syntax element is coded with ue(v), the value of the syntax element may be the same as codeNum.
[0156] Furthermore, for example, the EGk binary evolution process may be carried out as follows.
[0157] The input to the EGk binary process may be a request for EGk binary. The output to the EGk binary process may be EGk binary for the value symbolVal corresponding to the binstring.
[0158] The bit string of the EGk binary evolution process for symbolVal may be derived as follows:
[0159] [Table 10]
[0160] Referring to Table 10 above, each call of put(X) can be used to append the binary value X to the end of the binstring. Here, X can be 0 or 1.
[0161] Furthermore, for example, the limited EGk binary evolution process may be carried out as follows.
[0162] The input to the limitedEGk binary process may be a request for the limitedEGk binary, a rice parameter riceParam, a variable log2TransformRange representing the binary logarithm of the maximum value, and a variable maxPreExtLen representing the maximum prefix extension length. The output to the limitedEGk binary process may be the limitedEGk binary for the value symbolVal corresponding to the binstring.
[0163] The bit string for the limited EGk binary evolution process for symbolVal may be derived as follows:
[0164] [Table 11]
[0165] Furthermore, for example, the FL binary evolution process may be carried out as follows.
[0166] The input to the FL binary process may be a request for FL binary and cMax for the syntax element. The output to the FL binary process may be the FL binary for the value symbolVal corresponding to the binstring.
[0167] FL binary may be constructed using a bit string having a fixed length of bits corresponding to the symbol value symbolVal. Here, the fixed-length bits may be an unsigned integer bit string. That is, a bit string for the symbol value symbolVal may be derived by FL binary, and the bit length (i.e., number of bits) of the bit string may be fixed length.
[0168] For example, the fixed length may be derived as shown in the following equation.
[0169]
number
[0170] The bin indexing for FL binary may use a method that increases the values in order from the most significant bit to the least significant bit. For example, the bin index associated with the most significant bit may be binIdx=0.
[0171] On the other hand, for example, the binary evolution process for the syntax element abs_remainder among the residual information may be carried out as follows.
[0172] The input to the binary evolution process for the abs_remainder may be the binary evolution request for the syntax element abs_remainder[n], the color component cIdx, and the luma position (x0, y0). The luma position (x0, y0) can indicate the top-left sample of the current luma transformation block, relative to the top-left luma sample of the picture.
[0173] The output of the binary evolution process for the abs_remainder may be the binary evolution of the abs_remainder (i.e., the binary evolution binstring of the abs_remainder). The binary evolution process may derive the available binstrings for the abs_remainder.
[0174] The Rice parameter cRiceParam for the abs_remainder[n] may be derived by a Rice parameter derivation process that takes the hue component cIdx, luma position (x0, y0), current coefficient scan position (xC, yC), log2TbWidth (the binary logarithm of the width of the transformation block), and log2TbHeight (the binary logarithm of the height of the transformation block) as inputs. A detailed explanation of the Rice parameter derivation process will be given later.
[0175] Furthermore, for example, the cMax for the currently coded abs_remainder[n] may be derived based on the rice parameter cRiceParam. The cMax may be derived as follows:
[0176]
number
[0177] On the other hand, the binary representation of abs_remainder, that is, the binstring for abs_remainder, may be a concatenation of a prefix binstring and a suffix binstring if a suffix binstring exists. Also, if the suffix binstring does not exist, the binstring for abs_remainder may be the prefix binstring.
[0178] For example, the prefix binstring may be derived as described below.
[0179] The prefix value prefixVal of abs_remainder[n] may be derived as follows:
[0180]
number
[0181] The prefix of the binstring in abs_remainder[n] (i.e., the prefix binstring) may be derived by a TR binary process on prefixVal using cMax and cRiceParam as inputs.
[0182] If the prefix binstring is identical to a bitstring where all bits are 1 and the bit length is 6, then a suffix binstring of the binstring in abs_remainder[n] may exist and may be derived as described below.
[0183] The process for deriving the Rice parameter for abs_remainder[n] can be as follows.
[0184] The inputs to the Rice parameter derivation process may be the color component index cIdx, the luma position (x0, y0), the current coefficient scan position (xC, yC), the binary logarithm of the width of the transformation block log2TbWidth, and the binary logarithm of the height of the transformation block log2TbHeight. The luma position (x0, y0) can indicate the upper left sample of the current luma transformation block, relative to the upper left luma sample of the picture. The output of the Rice parameter derivation process may be the Rice parameter cRiceParam.
[0185] For example, based on the array AbsLevel[x][y] for a transformation block having a given component index cIdx and the upper left corner position (x0, y0), the variable locSumAbs may be derived as shown in the pseudocode in the following table.
[0186] [Table 12]
[0187] Subsequently, based on the given variable locSumAbs, the rice parameter cRiceParam may be derived as shown in the following table.
[0188] [Table 13]
[0189] Furthermore, for example, in the process of deriving the Rice parameters for abs_remainder[n], baseLevel may be set to 4.
[0190] Alternatively, the rice parameter cRiceParam may be determined based on whether or not the transformation of the current block is skipped. That is, if no transformation is applied to the current TB containing the current CG, in other words, if a transform skip is applied to the current TB containing the current CG, the rice parameter cRiceParam may be derived as 1.
[0191] Furthermore, the suffix value (suffixVal) of abs_remainder may be derived as follows:
[0192]
number
[0193] The suffix binstring of the abs_remainder may be derived by a limited EGk binary evolution process for the suffixVal, where k is set to cRiceParam+1, riceParam is set to cRiceParam, log2TransformRange is set to 15, and maxPreExtLen is set to 11.
[0194] On the other hand, for example, the binary evolution process for the syntax element dec_abs_level among the residual information may be carried out as follows.
[0195] The input to the binary evolution process for dec_abs_level may be the binary evolution request for the syntax element dec_abs_level[n], the color component cIdx, the luma position (x0, y0), the current coefficient scan position (xC, yC), log2TbWidth which is the binary logarithm of the width of the transformation block, and log2TbHeight which is the binary logarithm of the height of the transformation block. The luma position (x0, y0) can indicate the top-left sample of the current luma transformation block relative to the top-left luma sample of the picture.
[0196] The output of the binary evolution process for dec_abs_level may be the binary evolution of dec_abs_level (i.e., the binary evolution of the dec_abs_level binstring). The binary evolution process may derive the available binstrings for dec_abs_level.
[0197] The Rice parameter cRiceParam for dec_abs_level[n] may be derived by a Rice parameter derivation process that takes the hue component cIdx, luma position (x0, y0), current coefficient scan position (xC, yC), log2TbWidth (the binary logarithm of the width of the transformation block), and log2TbHeight (the binary logarithm of the height of the transformation block) as inputs. A detailed explanation of the Rice parameter derivation process will be given later.
[0198] Furthermore, for example, cMax for dec_abs_level[n] may be derived based on the rice parameter cRiceParam. cMax may be derived as follows:
[0199]
number
[0200] On the other hand, the binary representation of dec_abs_level[n], that is, the binstring for dec_abs_level[n], may be a concatenation of a prefix binstring and a suffix binstring if a suffix binstring exists. Also, if the suffix binstring does not exist, the binstring for dec_abs_level[n] may be the prefix binstring.
[0201] For example, the prefix binstring may be derived as described below.
[0202] The prefix value prefixVal of dec_abs_level[n] may be derived as follows:
[0203]
number
[0204] The prefix of the binstring in dec_abs_level[n] (i.e., the prefix binstring) may be derived by a TR binary process on prefixVal using cMax and cRiceParam as inputs.
[0205] If the prefix binstring is identical to a bitstring where all bits are 1 and the bit length is 6, then a suffix binstring of the binstring in dec_abs_level[n] may exist and may be derived as described below.
[0206] The process for deriving the Rice parameter for the aforementioned dec_abs_level[n] is as follows:
[0207] The inputs to the Rice parameter derivation process may be the color component index cIdx, the luma position (x0, y0), the current coefficient scan position (xC, yC), the binary logarithm of the width of the transformation block log2TbWidth, and the binary logarithm of the height of the transformation block log2TbHeight. The luma position (x0, y0) can indicate the upper left sample of the current luma transformation block, relative to the upper left luma sample of the picture. The output of the Rice parameter derivation process may be the Rice parameter cRiceParam.
[0208] For example, based on the array AbsLevel[x][y] for a transformation block having a given component index cIdx and the upper left corner position (x0, y0), the variable locSumAbs may be derived as shown in the pseudocode in the following table.
[0209] [Table 14]
[0210] Subsequently, based on the given variable locSumAbs, the rice parameter cRiceParam may be derived as shown in the following table.
[0211] [Table 15]
[0212] Furthermore, for example, in the process of deriving the Rice parameter for dec_abs_level[n], baseLevel may be set to 0, and ZeroPos[n] may be derived as shown in the following formula.
[0213]
number
[0214] Furthermore, the suffix value suffixVal of dec_abs_level[n] may be derived as follows:
[0215]
number
[0216] The suffix binstring of the binstring in dec_abs_level[n] may be derived by a limited EGk binary process for the suffixVal, where k is set to cRiceParam+1, trunkSuffixLen is set to 15, and maxPreExtLen is set to 11.
[0217] On the other hand, the RRC and TSRC mentioned above may have the following differences.
[0218] - For example, in TSRC, the rice parameter for the syntax element abs_remainder[] may be derived as 1. In RRC, the rice parameter cRiceParam of the syntax element abs_remainder[] may be derived based on lastAbsRemainder and lastRiceParam as described above, but the rice parameter cRiceParam of the syntax element abs_remainder[] in TSRC may be derived as 1. That is, for example, when a transform skip is applied to the current block (e.g., the current TB), the rice parameter cRiceParam for abs_remainder[] in TSRC for the current block may be derived as 1.
[0219] - Also, for example, referring to Tables 3 and 4, RRC may signal abs_level_gtx_flag[n][0] and / or abs_level_gtx_flag[n][1], while TSRC may signal abs_level_gtx_flag[n][0], abs_level_gtx_flag[n][1], abs_level_gtx_flag[n][2], abs_level_gtx_flag[n][3] and abs_level_gtx_flag[n][4]KA. Here, abs_level_gtx_flag[n][0] can be represented as abs_level_gt1_flag or the first coefficient level flag, abs_level_gtx_flag[n][1] can be represented as abs_level_gt3_flag or the second coefficient level flag, abs_level_gtx_flag[n][2] can be represented as abs_level_gt5_flag or the third coefficient level flag, abs_level_gtx_flag[n][3] can be represented as abs_level_gt7_flag or the fourth coefficient level flag, and abs_level_gtx_flag[n][4] can be represented as abs_level_gt9_flag or the fifth coefficient level flag. Specifically, the first coefficient level flag may be a flag indicating whether the coefficient level is greater than a first critical value (e.g., 1), the second coefficient level flag may be a flag indicating whether the coefficient level is greater than a second critical value (e.g., 3), the third coefficient level flag may be a flag indicating whether the coefficient level is greater than a third critical value (e.g., 5), the fourth coefficient level flag may be a flag indicating whether the coefficient level is greater than a fourth critical value (e.g., 7), and the fifth coefficient level flag may be a flag indicating whether the coefficient level is greater than a fifth critical value (e.g., 9).As described above, TSRC can include abs_level_gtx_flag[n][2], abs_level_gtx_flag[n][3], and abs_level_gtx_flag[n][4] in addition to abs_level_gtx_flag[n][0] and abs_level_gtx_flag[n][1], compared to RRC.
[0220] - Also, for example, in RRC, the syntax element coeff_sign_flag may be bypassed, but in TSRC, the syntax element coeff_sign_flag may be bypassed or context-coded.
[0221] - Also, for example, if the context coding bins for the current block are exhausted, RRC may code it as the syntax element dec_abs_level, while TSRC may code it as the syntax element abs_remainder.
[0222] - Also, for example, the parsing order of the transformation coefficients in RRC may be parsed in a promised order from the bottom right to the top left, based on the last non-zero coefficient, but in TSRC, it may be parsed in a promised order from the top left to the bottom right, and the position of the last non-zero coefficient may be omitted.
[0223] - Furthermore, for example, RRC may apply dependent quantization (DQ) or sign data hiding (SDH) methods, but TSRC does not require the use of dependent quantization or sign data hiding methods.
[0224] Furthermore, a Sign Data Hiding (SDH) method can be proposed in relation to residual coding. The Sign Data Hiding method may be as follows.
[0225] When deriving a transformation coefficient, the sign of the transformation coefficient may be derived based on a 1-bit sign flag (the syntax element coeff_sign_flag mentioned above). In connection with this, SDH can represent a technique to improve coding efficiency by omitting the explicit signaling of coeff_sign_flag for the first effective transformation coefficient in a Coefficient Group (CG). Here, the value of coeff_sign_flag for the first effective transformation coefficient may be derived based on the sum of the absolute levels (i.e., absolute values) of the effective transformation coefficients in the subblock / coefficient group. That is, the sign of the first effective transformation coefficient may be derived based on the sum of the absolute levels of the effective transformation coefficients in the subblock / coefficient group. On the other hand, an effective transformation coefficient can mean a non-zero transform coefficient whose (absolute) value is not zero. For example, if the sum of the absolute levels of the effective conversion coefficients is even, the value of coeff_sign_flag for the first effective conversion coefficient may be derived as 1, and if the sum of the absolute levels of the effective conversion coefficients is odd, the value of coeff_sign_flag for the first effective conversion coefficient may be derived as 0. In other words, for example, if the sum of the absolute levels of the effective conversion coefficients is even, the sign of the first effective conversion coefficient may be derived as a negative value, and if the sum of the absolute levels of the effective conversion coefficients is odd, the sign of the first effective conversion coefficient may be derived as a positive value. Alternatively, for example, if the sum of the absolute levels of the effective conversion coefficients is even, the value of coeff_sign_flag for the first effective conversion coefficient may be derived as 0, and if the sum of the absolute levels of the effective conversion coefficients is odd, the value of coeff_sign_flag for the first effective conversion coefficient may be derived as 1.In other words, for example, if the sum of the absolute levels of the effective conversion coefficients is even, the sign of the first effective conversion coefficient may be derived to be positive, and if the sum of the absolute levels of the effective conversion coefficients is odd, the sign of the first effective conversion coefficient may be derived to be negative.
[0226] For example, the SDH in residual syntax can be represented as shown in the following table.
[0227] [Table 16]
[0228] Referring to Table 16, the variable signHiddenFlag can indicate whether or not the SDH applies. The variable signHiddenFlag can also be called signHidden. For example, if the value of the variable signHiddenFlag is 0, it can indicate that the SDH does not apply, and if the value of the variable signHiddenFlag is 1, it can indicate that the SDH applies. For example, the value of the variable signHiddenFlag may be set based on signaled flag information (e.g., sh_sign_data_hiding_used_flag or pic_sign_data_hiding_enabled_flag or sps_sign_data_hiding_enabled_flag). Alternatively, for example, the value of the variable signHiddenFlag may be set based on lastSigScanPosSb and firstSigScanPosSb. Here, lastSigScanPosSb can indicate the last effective transformed coefficient position searched within the subblock / coefficient group by the scan order, and firstSigScanPosSb can indicate the first effective transformed coefficient position searched within the subblock / coefficient group by the scan order. Generally, lastSigScanPosSb may be located in the high-frequency component region relative to firstSigScanPosSb. Therefore, when lastSigScanPosSb-firstSigScanPosSb is greater than a predetermined critical value, the signHidden value may be derived to 1 (i.e., SDH application), and in other cases, the signHidden value may be derived to 0 (i.e., SDH calculus). Here, for example, referring to Table 35, the critical value may be set to 3.
[0229] Furthermore, referring to Table 16, even if the value of signHiddenFlag is 0 (i.e., !signHiddenFlag), if the current coefficient is not the first effective coefficient within the (sub)block according to the scan order (i.e., n !=firstSigScanPosSb), coeff_sign_flag[n] for the current coefficient may be explicitly signaled.
[0230] Furthermore, referring to Table 16, if the value of signHiddenFlag is 1 and the current coefficient is the first effective coefficient within the (sub)block according to the scan order (i.e., n = first SigScanPosSb), then explicit signaling of coeff_sign_flag[n] for the current coefficient may be omitted. In this case, the value of coeff_sign_flag[n] for the current coefficient (i.e., the first effective coefficient) may be derived as follows. For example, the value of coeff_sign_flag[n] for the first effective coefficient may be derived based on the value of coeff_sign_flag[n] for the effective coefficient within the (sub)block. For example, if the sum of the coeff_sign_flag[n] values for the effective coefficients is even, then coeff_sign_flag[n] for the initial effective coefficient may be derived as 1. If the sum of the coeff_sign_flag[n] values for the remaining effective coefficients excluding the initial effective coefficient is odd, then coeff_sign_flag[n] for the initial effective coefficient may be derived as 0. Alternatively, as another example, if the sum of the coeff_sign_flag[n] values for the effective coefficients is even, then coeff_sign_flag[n] for the initial effective coefficient may be derived as 0. If the sum of the coeff_sign_flag[n] values for the effective coefficients is odd, then coeff_sign_flag[n] for the initial effective coefficient may be derived as 1.
[0231] On the other hand, when the above-mentioned sign data hiding is activated in high-level syntax (VPS, SPS, PPS, slice header syntax, etc.) or low-level syntax (slice data syntax, coding unit syntax, conversion unit syntax, etc.), and the sh_ts_residual_coding_disabled_flag is 1, the RRC sign data hiding process may be used in lossless coding. Therefore, lossless coding may become impossible due to incorrect settings in the encoding device. Alternatively, when loss coding (i.e., an irreversible coding method) is applied instead of lossless coding, and BDPCM is applied simultaneously while a residual signal with conversion skipping applied is coded with RRC, coding loss may occur because BDPCM performs SDH in accordance with the SDH application conditions, even though there are more intervals where the residual value becomes 0 due to the difference between residuals than in the general case. Specifically, for example, if there are effective conversion coefficients (non-zero resistive data) at positions 0 and 15 within the CG, and the conversion coefficients at the remaining positions within the CG are 0, then SDH may be applied to the CG according to the SDH application conditions described above. Therefore, the sign data (i.e., the coding of the sign flag) for the first effective conversion coefficient of the CG may be omitted. Consequently, in this case, due to the omission of the sign data, the parity of only two resistive data points in the CG may be adjusted during the quantization stage, which may result in greater coding loss compared to when SDH is not applied. Such cases can also occur in blocks to which BDPCM is not applied, but due to the characteristics of BDPCM, the level is reduced using the difference with surrounding resistives, which can lead to more frequent problems when applying SDH.
[0232] Therefore, this document proposes an embodiment of setting the dependency / constraint between the above two technologies in order to prevent the SDH and the residual coding when sh_ts_residual_coding_disabled_flag = 1 (that is, coding the residual samples of the transform skip block in the current slice with RRC) from causing unintended coding loss or malfunctioning together.
[0233] On the other hand, as described above, the residual data coding method may include Regular Residual Coding (RRC) and Transform Skip Residual Coding (TSRC).
[0234] Among the above two methods, the residual data coding method for the current block may be determined based on the values of transform_skip_flag and sh_ts_residual_coding_disabled_flag as shown in Table 1. Here, the syntax element sh_ts_residual_coding_disabled_flag can indicate whether the TSRC is available. Therefore, even when the transform_skip_flag indicates that transform skip is performed, if sh_ts_residual_coding_disabled_flag indicates that the TSRC is not available, the syntax element by RRC for the transform skip block may be signaled. That is, RRC may be used when the value of transform_skip_flag is 0 or the value of sh_ts_residual_coding_disabled_flag is 1, and TSRC may be used in other cases.
[0235] This document proposes, as one embodiment, a method by which sh_ts_residual_coding_disabled_flag is dependent on pic_sign_data_hiding_enabled_flag. For example, the syntax elements proposed in this embodiment may be as shown in the following table.
[0236] [Table 17]
[0237] Here, for example, the pic_sign_data_hiding_enabled_flag may be a flag indicating whether sign data hiding is enabled or disabled. For example, the pic_sign_data_hiding_enabled_flag can indicate whether sign data hiding is enabled or disabled. That is, for example, the pic_sign_data_hiding_enabled_flag can indicate whether sign data hiding is enabled for a sequence or picture header (i.e., picture_header_structure()). For example, the pic_sign_data_hiding_enabled_flag can indicate whether a sign data hiding enabled flag can exist that indicates whether sign data hiding is currently used for a slice. For example, a pic_sign_data_hiding_enabled_flag with a value of 1 can indicate that sign data hiding is enabled, and a pic_sign_data_hiding_enabled_flag with a value of 0 can indicate that sign data hiding is disabled. For example, a value of 1 for pic_sign_data_hiding_enabled_flag can indicate that a sign flag to which sign data hiding is applied can exist, and a value of 0 for pic_sign_data_hiding_enabled_flag can indicate that a sign flag to which sign data hiding is applied does not exist.
[0238] According to Table 17 above, sh_ts_residual_coding_disabled_flag may be signaled only if sign data hiding is unavailable. Also, if sign data hiding is available, sh_ts_residual_coding_disabled_flag may not be signaled, and the value of sh_ts_residual_coding_disabled_flag may be considered (inferred) to be 0 (currently coding the residual samples of the conversion skip blocks in the slice with TSRC syntax) or 1 (currently coding the residual samples of the conversion skip blocks in the slice with RRC syntax).
[0239] Here, for example, the pic_sign_data_hiding_enabled_flag may be signaled as picture header syntax or slice header syntax. For example, if the pic_sign_data_hiding_enabled_flag is signaled as syntax other than picture header syntax, it may be called by another name. For example, the pic_sign_data_hiding_enabled_flag can also be called slice_sign_data_hiding_enabled_flag. Also, the sh_ts_residual_coding_disabled_flag may be signaled as slice header syntax, or as other high-level syntax (HLS) (e.g., SPS syntax / VPS syntax / PPS syntax / PH syntax / DPS syntax, etc.) or low-level (CU / TU) syntax instead of slice header syntax. Regardless of the hierarchical relationship or position in the syntax being signaled, if the residual coding method is determined by whether or not SDH is available, it may be interpreted as conforming to this embodiment.
[0240] On the other hand, according to existing image / video coding, SDH is activated at high-level syntax (SPS syntax / VPS syntax / PPS syntax / DPS syntax / picture header syntax / slice header syntax, etc.) or low-level (CU / TU), and when sh_ts_residual_coding_disabled_flag is 1, the SDH in RRC described above may be used for lossless coding, which can make lossless coding impossible due to incorrect settings on the encoding device. Therefore, this document proposes an implementation in which, when transform_skip_flag is 1, SDH is not used when coding the level of the transformation coefficients, in order to prevent unintended coding loss or malfunctions that can occur when SDH and residual coding (i.e., coding the residual samples of the transformation skip block in the slice with RRC) are used together when sh_ts_residual_coding_disabled_flag=1. The residual coding syntax for the proposed embodiment may be as shown in the following table.
[0241] [Table 18-1]
[0242] [Table 18-2]
[0243] [Table 18-3]
[0244] [Table 18-4]
[0245]
Table 18-5
[0246]
Table 18-6
[0247] Referring to Table 18 above, a variable signHidden indicating whether the SDH is applied may be derived based on the value of transform_skip_flag. For example, when the value of transform_skip_flag is 1, the value of signHidden may be derived as 0. That is, for example, when the value of transform_skip_flag is 1, the SDH may not be applied when deriving the sign of the transform coefficient of the current block.
[0248] In addition, this document proposes an embodiment in which when both the SDH and the residual coding (i.e., coding the residual samples of the transform skip block in the current slice with RRC) in the case of sh_ts_residual_coding_disabled_flag = 1 are used, in order to prevent causing unintended coding loss or malfunction, when the value of BdpcmFlag is 1, the SDH is not used when coding the level of the transform coefficient. The residual coding syntax according to the proposed embodiment may be as follows in the following table.
[0249] <*0000977*>
Table 19-1
[0250]
Table19-2
[0251]
Table 19-3
[0252] [Table 19-4]
[0253] [Table 19-5]
[0254] [Table 19-6]
[0255] Referring to Table 19 above, the variable signHidden, which indicates whether or not the SDH applies, may be derived based on the value of the variable BdpcmFlag, which indicates whether or not the BDPCM applies. For example, if the value of BdpcmFlag is 1, the value of signHidden may be derived to be 0. That is, for example, if the value of BdpcmFlag is 1 (when the BDPCM is applied to the current block), the SDH does not need to be applied when deriving the sign of the conversion coefficient of the current block.
[0256] Referring to Table 19, if BdpcmFlag is 1, SDH for TSRC is permitted when loss coding is applied, but SDH does not need to be used when BDPCM is applied.
[0257] Furthermore, this document proposes various implementations related to the signaling of the syntax element sh_ts_residual_coding_disabled_flag mentioned above.
[0258] For example, as mentioned above, sh_ts_residual_coding_disabled_flag is a syntax element that defines whether or not TSRC is unavailable, and therefore does not need to be signaled if the conversion skip block is not used. In other words, it may only be meaningful to signal sh_ts_residual_coding_disabled_flag if the syntax element for whether or not to use the conversion skip block indicates that the conversion skip block will be used.
[0259] Therefore, this document proposes an implementation in which sh_ts_residual_coding_disabled_flag is signaled only when sps_transform_skip_enabled_flag is 1. The syntax for this implementation is shown in the following table.
[0260] [Table 20]
[0261] Referring to Table 20, if sps_transform_skip_enabled_flag is 1, sh_ts_residual_coding_disabled_flag may be signaled, and if sps_transform_skip_enabled_flag is 0, sh_ts_residual_coding_disabled_flag may not be signaled. Here, for example, sps_transform_skip_enabled_flag can indicate whether or not a transformation skip block is used. That is, for example, sps_transform_skip_enabled_flag can indicate whether or not transformation skipping is available. For example, if the value of sps_transform_skip_enabled_flag is 1, sps_transform_skip_enabled_flag can indicate that a transform_skip_flag can exist in the transform unit syntax, and if the value of sps_transform_skip_enabled_flag is 0, sps_transform_skip_enabled_flag can indicate that a transform_skip_flag does not exist in the transform unit syntax. On the other hand, if sh_ts_residual_coding_disabled_flag is not signaled, sh_ts_residual_coding_disabled_flag may be considered 0 (infer). Furthermore, the aforementioned sps_transform_skip_enabled_flag may be signaled in SPS, or in other high-level syntax (such as VPS, PPS, picture header syntax, slice header syntax, etc.) or low-level syntax (such as slice data syntax, coding unit syntax, or transformation unit syntax, etc.) instead of SPS.Furthermore, this signal may be issued before the sh_ts_residual_coding_disabled_flag.
[0262] Furthermore, this document proposes an embodiment that combines the above embodiments in relation to the signaling of sh_ts_residual_coding_disabled_flag. For example, an embodiment that signals sh_ts_residual_coding_disabled_flag as shown in the following table may be proposed.
[0263] [Table 21]
[0264] Referring to Table 21, if sps_transform_skip_enabled_flag is 1 and pic_sign_data_hiding_enabled_flag is 0, sh_ts_residual_coding_disabled_flag may be signaled; otherwise, sh_ts_residual_coding_disabled_flag may not be signaled. On the other hand, if sh_ts_residual_coding_disabled_flag is not signaled, sh_ts_residual_coding_disabled_flag may be considered 0 (infer).
[0265] Alternatively, for example, an implementation in which sh_ts_residual_coding_disabled_flag is signaled as shown in the following table may be proposed.
[0266] [Table 22]
[0267] Referring to Table 22, if pic_sign_data_hiding_enabled_flag is 0 or sps_transform_skip_enabled_flag is 1, sh_ts_residual_coding_disabled_flag may be signaled; otherwise, sh_ts_residual_coding_disabled_flag may not be signaled. On the other hand, if sh_ts_residual_coding_disabled_flag is not signaled, sh_ts_residual_coding_disabled_flag may be considered 0 (infer).
[0268] Furthermore, according to this embodiment, for example, a method may be proposed in which the syntax elements ph_dep_quant_enabled_flag and sh_ts_residual_coding_disabled_flag are signaled using the same high-level or low-level syntax. For example, referring to Table 22 above, both ph_dep_quant_enabled_flag and sh_ts_residual_coding_disabled_flag may be signaled using the picture header syntax. In this case, sh_ts_residual_coding_disabled_flag can be called ph_ts_residual_coding_disabled_flag. On the other hand, ph_dep_quant_enabled_flag may be a flag indicating whether or not dependent quantization is enabled. For example, ph_dep_quant_enabled_flag can indicate whether or not dependent quantization is enabled. That is, for example, ph_dep_quant_enabled_flag can indicate whether dependent quantization is available for a block of pictures within a sequence. For example, ph_dep_quant_enabled_flag can indicate whether a dependent quantization enabled flag can exist that indicates whether dependent quantization is currently used for a slice. For example, a value of 1 for ph_dep_quant_enabled_flag can indicate that dependent quantization is available, and a value of 0 for ph_dep_quant_enabled_flag can indicate that dependent quantization is not available. Also, for example, ph_dep_quant_enabled_flag can be called sh_dep_quant_enabled_flag by the syntax in which it is signaled.
[0269] Alternatively, for example, an implementation in which sh_ts_residual_coding_disabled_flag is signaled as shown in the following table may be proposed.
[0270] [Table 23]
[0271] Referring to Table 23, if pic_sign_data_hiding_enabled_flag is 0 and sps_transform_skip_enabled_flag is 1, sh_ts_residual_coding_disabled_flag may be signaled; otherwise, sh_ts_residual_coding_disabled_flag may not be signaled. On the other hand, if sh_ts_residual_coding_disabled_flag is not signaled, sh_ts_residual_coding_disabled_flag may be considered 0 (infer). Also, for example, referring to Table 23 above, both ph_dep_quant_enabled_flag and sh_ts_residual_coding_disabled_flag may be signaled in the picture header syntax. In this case, the aforementioned sh_ts_residual_coding_disabled_flag can be called ph_ts_residual_coding_disabled_flag.
[0272] Furthermore, this document proposes an example of signaling the aforementioned syntax elements ph_dep_quant_enabled_flag, pic_sign_data_hiding_enabled_flag, and / or sh_ts_residual_coding_disabled_flag using the same high-level syntax (VPS, SPS, PPS, picture header, slice header, etc.) or low-level syntax (slice data, coding unit, transformation unit, etc.).
[0273] For example, an implementation may be proposed in which both pic_sign_data_hiding_enabled_flag and sh_ts_residual_coding_disabled_flag are signaled in the picture header syntax, as shown in the following table.
[0274] [Table 24]
[0275] In this case, the sh_ts_residual_coding_disabled_flag can be called ph_ts_residual_coding_disabled_flag.
[0276] According to this embodiment, the syntax element indicating whether residual coding (i.e., TSRC) for translation skip blocks is available (i.e., sh_ts_residual_coding_disabled_flag) may be signaled only if the value of the syntax element indicating whether SDH is available in the same HLS (i.e., pic_sign_data_hiding_enabled_flag) is 0. For example, referring to Table 24, pic_sign_data_hiding_enabled_flag may be signaled in the picture header syntax, and if the value of pic_sign_data_hiding_enabled_flag is 0, ph_ts_residual_coding_disabled_flag may be signaled in the picture header syntax. On the other hand, if the value of pic_sign_data_hiding_enabled_flag is 1, for example, ph_ts_residual_coding_disabled_flag may not be signaled. If sh_ts_residual_coding_disabled_flag is not signaled, sh_ts_residual_coding_disabled_flag may be inferred to be 0. Also, if the value of sps_sign_data_hiding_enabled_flag is 1, pic_sign_data_hiding_enabled_flag may be signaled in the picture header syntax.
[0277] The examples shown in Table 24 above are merely illustrative, and both syntax elements may be signaled by other high-level syntax (such as VPS, SPS, PPS, or slice headers) or low-level syntax (such as slice data, coding units, or transformation units) instead of a picture header.
[0278] Alternatively, an embodiment may be proposed in which, for example, as shown in the following table, the syntax element indicating whether SDH is available is signaled only when the value of the syntax element indicating whether registered coding (i.e., TSRC) for the conversion skip block is available is 0 (i.e., TSRC is available).
[0279] [Table 25]
[0280] Referring to Table 25, if the value of ph_ts_residual_coding_disabled_flag is 0, then pic_sign_data_hiding_enabled_flag may be signaled in the picture header syntax. On the other hand, if the value of ph_ts_residual_coding_disabled_flag is 1, then pic_sign_data_hiding_enabled_flag may not be signaled. Also, if pic_sign_data_hiding_enabled_flag is not signaled, then pic_sign_data_hiding_enabled_flag may be considered 0 by the decoding device (infer).
[0281] The examples shown in Table 25 above are merely illustrative, and both syntax elements may be signaled by other high-level syntax (such as VPS, SPS, PPS, or slice headers) or low-level syntax (such as slice data, coding units, or transformation units) instead of a picture header.
[0282] Alternatively, for example, a method may be proposed to restrict pic_sign_data_hiding_enabled_flag and / or ph_dep_quant_enabled_flag based on ph_ts_residual_coding_disabled_flag.
[0283] For example, an embodiment may be proposed in which the pic_sign_data_hiding_enabled_flag and ph_dep_quant_enabled_flag are signaled only when the value of ph_ts_residual_coding_disabled_flag is 0, as shown in the following table.
[0284] [Table 26]
[0285] Referring to Table 26, if the value of ph_ts_residual_coding_disabled_flag is 0, then pic_sign_data_hiding_enabled_flag and ph_dep_quant_enabled_flag may be signaled in the picture header syntax. On the other hand, if, for example, the value of ph_ts_residual_coding_disabled_flag is 1, then pic_sign_data_hiding_enabled_flag and ph_dep_quant_enabled_flag do not need to be signaled. Also, for example, if pic_sign_data_hiding_enabled_flag and ph_dep_quant_enabled_flag are not signaled, then pic_sign_data_hiding_enabled_flag and ph_dep_quant_enabled_flag may be considered 0 by the decoding device (infer).
[0286] Furthermore, as shown in Table 26 above, for example, ph_ts_residual_coding_disabled_flag, pic_sign_data_hiding_enabled_flag, and ph_dep_quant_enabled_flag may all be signaled in the picture header syntax.
[0287] Furthermore, this document proposes an embodiment that combines the above embodiments in relation to the signaling of sh_ts_residual_coding_disabled_flag. For example, an embodiment that signals sh_ts_residual_coding_disabled_flag as shown in the following table may be proposed.
[0288] [Table 27]
[0289] Referring to Table 27, if pic_sign_data_hiding_enabled_flag is 0 or sps_transform_skip_enabled_flag is 1, ph_ts_residual_coding_disabled_flag may be signaled; otherwise, ph_ts_residual_coding_disabled_flag may not be signaled. On the other hand, if ph_ts_residual_coding_disabled_flag is not signaled, ph_ts_residual_coding_disabled_flag may be considered 0 by the decoding device (infer). Also, if the value of sps_sign_data_hiding_enabled_flag is 1, pic_sign_data_hiding_enabled_flag may be signaled in the picture header syntax.
[0290] Alternatively, for example, an implementation in which sh_ts_residual_coding_disabled_flag is signaled as shown in the following table may be proposed.
[0291] [Table 28]
[0292] Referring to Table 28, if pic_sign_data_hiding_enabled_flag is 0 and sps_transform_skip_enabled_flag is 1, ph_ts_residual_coding_disabled_flag may be signaled; otherwise, ph_ts_residual_coding_disabled_flag may not be signaled. On the other hand, if ph_ts_residual_coding_disabled_flag is not signaled, ph_ts_residual_coding_disabled_flag may be considered 0 by the decoding device (infer). Also, if the value of sps_sign_data_hiding_enabled_flag is 1, pic_sign_data_hiding_enabled_flag may be signaled in the picture header syntax.
[0293] Alternatively, for example, an implementation in which sh_ts_residual_coding_disabled_flag is signaled as shown in the following table may be proposed.
[0294] [Table 29]
[0295] Referring to Table 29, if sps_transform_skip_enabled_flag is 1, ph_ts_residual_coding_disabled_flag may be signaled, otherwise ph_ts_residual_coding_disabled_flag may not be signaled. Also referring to Table 29, if ph_ts_residual_coding_disabled_flag is 0, pic_sign_data_hiding_enabled_flag may be signaled, otherwise pic_sign_data_hiding_enabled_flag may not be signaled. On the other hand, if ph_ts_residual_coding_disabled_flag is not signaled, ph_ts_residual_coding_disabled_flag may be considered 0 by the decoding device (infer). Also, if pic_sign_data_hiding_enabled_flag is not signaled, pic_sign_data_hiding_enabled_flag may be considered 0 by the decoding device (infer).
[0296] Alternatively, for example, an implementation in which sh_ts_residual_coding_disabled_flag is signaled as shown in the following table may be proposed.
[0297] [Table 30]
[0298] Referring to Table 30, if sps_transform_skip_enabled_flag is 1, ph_ts_residual_coding_disabled_flag may be signaled, otherwise ph_ts_residual_coding_disabled_flag may not be signaled. Also referring to Table 30, if ph_ts_residual_coding_disabled_flag is 0, pic_sign_data_hiding_enabled_flag and ph_dep_quant_enabled_flag may be signaled, otherwise pic_sign_data_hiding_enabled_flag and ph_dep_quant_enabled_flag may not be signaled. On the other hand, if ph_ts_residual_coding_disabled_flag is not signaled, ph_ts_residual_coding_disabled_flag may be considered 0 by the decoding device (infer). Furthermore, if pic_sign_data_hiding_enabled_flag and ph_dep_quant_enabled_flag are not signaled, they may be considered 0 by the decoding device (infer).
[0299] On the other hand, as described above, the information (syntax elements) in the syntax table disclosed in this document may be included in video information, configured / encoded by an encoding device, and transmitted to a decoding device in the form of a bitstream. The decoding device can parse / decode the information (syntax elements) in the syntax table. The decoding device can perform block / video restoration procedures based on the decoded information.
[0300] Figure 6 schematically shows a video encoding method using the encoding device relating to this document. The method disclosed in Figure 6 may be performed using the encoding device disclosed in Figure 2. Specifically, for example, steps S600 to S630 in Figure 6 may be performed by the entropy encoding unit of the encoding device. Furthermore, although not shown, the process of deriving predicted samples for a conversion skip block may be performed by the prediction unit of the encoding device, the process of deriving residual samples for a conversion skip block based on the original samples and predicted samples for the conversion skip block may be performed by the subtraction unit of the encoding device, and the process of generating restored samples and restored pictures for a conversion skip block based on the residual samples and predicted samples for the conversion skip block may be performed by the addition unit of the encoding device.
[0301] The encoding device encodes a sign data hiding availability flag indicating whether sign data hiding is currently available for a slice (S600). The encoding device can encode a sign data hiding availability flag indicating whether sign data hiding is currently available for a slice. Video information can include a sign data hiding availability flag. For example, the encoding device can determine whether sign data hiding is available for a block of picture in a sequence and encode a sign data hiding availability flag indicating whether sign data hiding is available. For example, the sign data hiding availability flag may be a flag indicating whether sign data hiding is available or not. For example, the sign data hiding availability flag may indicate whether sign data hiding is available for a block of picture in a sequence. For example, the sign data hiding availability flag can indicate whether a sign data hiding usage flag can exist, which indicates whether sign data hiding is currently used for a slice. For example, a sign data hiding availability flag with a value of 1 can indicate that sign data hiding is available, and a sign data hiding availability flag with a value of 0 can indicate that sign data hiding is not available. For example, a sign data hiding availability flag with a value of 1 can indicate that a sign flag to which sign data hiding is applied can exist, and a sign data hiding availability flag with a value of 0 can indicate that no sign flag to which sign data hiding is applied does not exist.Furthermore, for example, the sign data hiding enabled flag may be signaled using SPS (Sequence Parameter Set) syntax. Alternatively, for example, the sign data hiding enabled flag may be signaled using picture header syntax or slice header syntax. The syntax element of the sign data hiding enabled flag may be the sps_sign_data_hiding_enabled_flag described above.
[0302] The encoding device encodes a TSRC availability flag based on the sign data hiding availability flag, indicating whether TSRC (Transform Skip Residual Coding) is available for the transform skip block of the current slice (S610). The video information may include the TSRC availability flag.
[0303] For example, an encoding device can encode the TSRC availability flag based on the sign data hiding availability flag. For example, the TSRC availability flag may be encoded based on the sign data hiding availability flag, which has a value of 0. That is, for example, if the value of the sign data hiding availability flag is 0 (i.e., the sign data hiding availability flag indicates that sign data hiding is not available), the TSRC availability flag may be encoded. In other words, for example, if the value of the sign data hiding availability flag is 0 (i.e., the sign data hiding availability flag indicates that sign data hiding is not available), the TSRC availability flag may be signaled. Also, for example, if the value of the sign data hiding availability flag is 1, the TSRC availability flag does not need to be encoded, and the decoding device may derive a value of 0 for the TSRC availability flag. In other words, for example, if the value of the sign data hiding enable flag is 1, the TSRC enable flag does not need to be signaled, and the decoding device may derive the value of the TSRC enable flag as 0.
[0304] Here, for example, the TSRC availability flag may be a flag indicating whether or not TSRC is available. That is, for example, the TSRC availability flag may be a flag indicating whether or not TSRC is available for a block within a slice. In other words, for example, the TSRC availability flag may be a flag indicating whether or not TSRC is available for a transform skip block within a slice. Here, the block may be a coding block (CB) or a transform block (TB). For example, a value of 1 for the TSRC availability flag may indicate that TSRC is unavailable, and a value of 0 for the TSRC availability flag may indicate that TSRC is available. Also, for example, the TSRC availability flag may be signaled in the slice header syntax. The syntax element of the TSRC availability flag may be the sh_ts_residual_coding_disabled_flag described above. The TSRC availability flag can also be called a TSRC disavailability flag.
[0305] On the other hand, for example, an encoding device can determine whether dependent quantization is available for a block of pictures within a sequence, and can encode a dependent quantization availability flag indicating whether dependent quantization is available or not. The video information may include the dependent quantization availability flag. For example, the dependent quantization availability flag may be a flag indicating whether dependent quantization is available or not. For example, the dependent quantization availability flag may indicate whether dependent quantization is available for a block of pictures within a sequence. For example, the dependent quantization availability flag may indicate whether a dependent quantization usage flag exists that indicates whether dependent quantization is currently used for a slice. For example, a dependent quantization availability flag with a value of 1 may indicate that dependent quantization is available, and a dependent quantization availability flag with a value of 0 may indicate that dependent quantization is not available. Furthermore, for example, the dependent quantization enabled flag may be signaled using SPS syntax or slice header syntax. The syntax element of the dependent quantization enabled flag may be the sps_dep_quant_enabled_flag described above.
[0306] Furthermore, for example, an encoding device can encode a transform skip availability flag indicating whether or not transform skipping is available for the current slice. Video information can include a transform skip availability flag. For example, an encoding device can determine whether transform skipping is available for a block of pictures in a sequence and encode a transform skip availability flag indicating whether or not transform skipping is available. For example, the transform skip availability flag may be a flag indicating whether or not transform skipping is available. For example, the transform skip availability flag can indicate whether or not transform skipping is available. That is, for example, the transform skip availability flag can indicate whether or not transform skipping is available for a block of pictures in a sequence. For example, the transform skip availability flag can indicate whether or not a transform skip flag can exist. For example, a transform skip availability flag with a value of 1 can indicate that transform skipping is available, and a transform skip availability flag with a value of 0 can indicate that transform skipping is not available. That is, for example, a transformation skip enable flag with a value of 1 can indicate that the transformation skip flag can exist, and a transformation skip enable flag with a value of 0 can indicate that the transformation skip flag does not exist. Also, for example, the transformation skip enable flag may be signaled using SPS (Sequence Parameter Set) syntax. The syntax element of the transformation skip enable flag may be the sps_transform_skip_enabled_flag described above.
[0307] Furthermore, for example, the TSRC availability flag may be encoded based on the sign data hiding availability flag and / or the conversion skip availability flag. For example, the TSRC availability flag may be encoded based on the sign data hiding availability flag, which has a value of 0, and the conversion skip availability flag, which has a value of 1. That is, for example, if the value of the sign data hiding availability flag is 0 (i.e., the sign data hiding availability flag indicates that sign data hiding is not available) and the value of the conversion skip availability flag is 1 (i.e., the conversion skip availability flag indicates that conversion skipping is available), the TSRC availability flag may be encoded (or signaled). Also, for example, if the value of the conversion skip availability flag is 0, the TSRC availability flag does not need to be encoded, and the value of the TSRC availability flag may be derived to be 0. That is, for example, if the value of the conversion skip availability flag is 0, the TSRC availability flag does not need to be signaled, and the value of the TSRC availability flag may be derived to be 0.
[0308] The encoding device encodes the residual information for the conversion skip block based on the TSRC availability flag (S620). The encoding device can encode the residual information for the conversion skip block based on the TSRC availability flag.
[0309] For example, an encoding device can determine the residual coding syntax for the transformation skip block based on the TSRC availability flag. For example, an encoding device can determine the residual coding syntax for the transformation skip block based on the TSRC availability flag to be one of the following: Regular Residual Coding (RRC) syntax and Transform Skip Residual Coding (TSRC) syntax. RRC syntax can represent syntax using RRC, and TSRC syntax can represent syntax using TSRC.
[0310] For example, based on the TSRC availability flag, which has a value of 1, the residual coding syntax for the transformation skip block may be determined to be Regular Residual Coding (RRC) syntax. In this case, for example, a transformation skip flag indicating whether or not to skip the transformation of the transformation skip block may be encoded, and the value of the transformation skip flag may be 1. For example, the video information may include a transformation skip flag for the transformation skip block. The transformation skip flag can indicate whether or not the transformation of the transformation skip block is skipped. That is, the transformation skip flag can indicate whether or not a transformation has been applied to the transformation coefficients of the transformation skip block. The syntax element indicating the transformation skip flag may be the transform_skip_flag described above. For example, if the value of the transformation skip flag is 1, the transformation skip flag can indicate that no transformation is applied to the transformation skip block (i.e., the transformation is skipped), and if the value of the transformation skip flag is 0, the transformation skip flag can indicate that a transformation is applied to the transformation skip block. For example, if the current block within the slice is a conversion skip block, the value of the conversion skip flag for that block may be 1.
[0311] Furthermore, for example, based on the TSRC availability flag having a value of 0, the residual coding syntax for the transform skip block may be determined to be Transform Skip Residual Coding (TSRC) syntax. Also, for example, a transform skip flag indicating whether or not to skip the transformation of the transform skip block may be encoded, and based on the transform skip flag having a value of 1 and the TSRC availability flag having a value of 0, the residual coding syntax for the transform skip block may be determined to be Transform Skip Residual Coding (TSRC) syntax. Also, for example, a transform skip flag indicating whether or not to skip the transformation of a block may be encoded, and based on the transform skip flag having a value of 0 and the TSRC availability flag having a value of 0, the residual coding syntax for the block may be determined to be Regular Residual Coding (RRC) syntax.
[0312] Subsequently, for example, the encoding device can encode the residual information of the determined residual coding syntax for the conversion skip block. The encoding device can derive the residual samples for the conversion skip block and encode the residual information of the determined residual coding syntax for the residual samples of the conversion skip block. For example, based on the TSRC availability flag having a value of 1, the residual information of the Regular Residual Coding (RRC) syntax for the conversion skip block may be encoded, or based on the TSRC availability flag having a value of 0, the residual information of the TSRC syntax for the conversion skip block may be encoded. The video information may include the residual information.
[0313] For example, the encoding device can decide whether to perform interpretation or intrapretation on the conversion skip block, and can determine a specific interpretation mode or specific intrapretation mode based on the RD cost. Depending on the determined mode, the encoding device can derive predicted samples for the conversion skip block, and can derive residual samples for the conversion skip block by subtracting the original samples and the predicted samples for the conversion skip block.
[0314] Subsequently, for example, the encoding device can derive the conversion coefficients for the conversion skip block based on the residual samples. For example, the encoding device can determine whether or not a conversion is applied to the conversion skip block. That is, the encoding device can determine whether or not a conversion is applied to the residual samples of the conversion skip block. The encoding device can determine whether or not a conversion is applied to the conversion skip block, taking coding efficiency into consideration. For example, the encoding device can determine that no conversion is applied to the conversion skip block. On the other hand, blocks to which no conversion is applied can also be called conversion skip blocks.
[0315] If no transformation is applied to the transformation skip block, i.e., if no transformation is applied to the residual sample, the encoding device can derive the derived residual sample as the transformation coefficient of the transformation skip block. If a transformation is applied to the transformation skip block, i.e., if a transformation is applied to the residual sample, the encoding device can perform a transformation on the residual sample to derive the transformation coefficient of the transformation skip block. The transformation skip block may contain a plurality of subblocks or coefficient groups (CG). The size of the subblocks of the transformation skip block may be 4x4 or 2x2. That is, the subblocks of the transformation skip block may contain a maximum of 16 non-zero transformation coefficients or a maximum of 4 non-zero transformation coefficients. Here, the transformation skip block may be a coding block (CB) or a transform block (TB). The transform coefficient can also be called a residual coefficient.
[0316] For example, if the residual coding syntax for the conversion skip block is determined to be the RRC syntax, the encoding device can encode the residual information of the RRC syntax for the conversion skip block. For example, the residual information of the RRC syntax may include the syntax elements disclosed in Table 2 above.
[0317] For example, the residual information of the RRC syntax may include syntax elements for the transformation coefficients of the transformation skip block. Here, the transformation coefficient can also be called the residual coefficient.
[0318] For example, the syntax element may include syntax elements such as last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_suffix, sb_coded_flag, sig_coeff_flag, abs_level_gt1_flag, par_level_flag, abs_level_gtX_flag, abs_remainder, dec_abs_level, and / or coeff_sign_flag.
[0319] Specifically, for example, the syntax element may include position information indicating the position of the last non-zero conversion coefficient in the residual coefficient array of the conversion skip block. That is, the syntax element may include position information indicating the position of the last non-zero conversion coefficient in the scanning order of the conversion skip block. The position information may include information indicating the column position prefix of the last non-zero conversion coefficient, information indicating the row position prefix of the last non-zero conversion coefficient, information indicating the column position suffix of the last non-zero conversion coefficient, and information indicating the row position suffix of the last non-zero conversion coefficient. The syntax elements for the aforementioned position information may be last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, and last_sig_coeff_y_suffix. On the other hand, the non-zero conversion coefficient can also be called the significant coefficient.
[0320] Furthermore, for example, the syntax element may include a coded subblock flag indicating whether the subblock of the conversion skip block contains a non-zero conversion coefficient, an effective coefficient flag indicating whether the conversion coefficient of the conversion skip block is a non-zero conversion coefficient, a first coefficient level flag indicating whether the coefficient level of the conversion coefficient is greater than a first critical value, a parity level flag indicating the parity of the coefficient level, and / or a second coefficient level flag indicating whether the coefficient level of the conversion coefficient is greater than a second critical value. Here, the coded subblock flag may be sb_coded_flag or coded_sub_block_flag, the effective coefficient flag may be sig_coeff_flag, the first coefficient level flag may be abs_level_gt1_flag or abs_level_gtx_flag, the parity level flag may be par_level_flag, and the second coefficient level flag may be abs_level_gt3_flag or abs_level_gtx_flag.
[0321] Furthermore, for example, the syntax element may include coefficient value-related information for the conversion coefficients of the conversion skip block. The coefficient value-related information may be abs_remainder and / or dec_abs_level.
[0322] Furthermore, for example, the syntax element may include a sign flag indicating the sign of the conversion coefficient. The sign flag may be coeff_sign_flag.
[0323] On the other hand, for example, when sign data hiding is applied to the conversion skip block, the sign flag of the first effective conversion coefficient of the current CG (coefficient group) within the conversion skip block does not need to be encoded and signaled. That is, for example, when sign data hiding is applied to the conversion skip block, the syntax element does not need to include a sign flag indicating the sign of the first effective conversion coefficient. On the other hand, for example, whether or not sign data hiding is applied to the conversion skip block may be derived based on the sign data hiding enabled flag and / or the first and last effective conversion coefficient positions of the current CG of the conversion skip block. For example, if the value of the sign data hiding enabled flag is 1 and the value obtained by subtracting the first effective conversion coefficient position from the last effective conversion coefficient position is greater than 3 (i.e., the value of the sign data hiding enabled flag is 1 and the number of effective conversion coefficients in the current CG is greater than 3), then sign data hiding may be applied to the current CG of the conversion skip block.
[0324] Furthermore, for example, if the residual coding syntax for the conversion skip block is determined to be the TSRC syntax, the encoding device can encode the residual information of the TSRC syntax for the conversion skip block. For example, the residual information of the TSRC syntax may include the syntax elements disclosed in Table 3 above.
[0325] For example, the residual information of the TSRC syntax may include syntax elements for the transformation coefficients of the transformation skip block. Here, the transformation coefficient can also be called the residual coefficient.
[0326] For example, the syntax element may include context-coded and / or bypass-coded syntax elements for conversion coefficients. The syntax element may include syntax elements such as sig_coeff_flag, coeff_sign_flag, abs_level_gt1_flag, par_level_flag, abs_level_gtX_flag and / or abs_remainder.
[0327] For example, the context-coded syntax element for the conversion coefficient may include a valid coefficient flag indicating whether the conversion coefficient is a non-zero conversion coefficient, a sign flag indicating the sign of the conversion coefficient, a first coefficient level flag indicating whether the coefficient level of the conversion coefficient is greater than a first critical value, and / or a parity level flag indicating the parity of the coefficient level of the conversion coefficient. Furthermore, for example, the context-coded syntax element may include a second coefficient level flag indicating whether the coefficient level of the conversion coefficient is greater than a second critical value, a third coefficient level flag indicating whether the coefficient level of the conversion coefficient is greater than a third critical value, a fourth coefficient level flag indicating whether the coefficient level of the conversion coefficient is greater than a fourth critical value, and / or a fifth coefficient level flag indicating whether the coefficient level of the conversion coefficient is greater than a fifth critical value. Here, the effective coefficient flag may be sig_coeff_flag, the sign flag may be coeff_sign_flag, the first coefficient level flag may be abs_level_gt1_flag, and the parity level flag may be par_level_flag. Also, the second coefficient level flag may be abs_level_gt3_flag or abs_level_gtx_flag, the third coefficient level flag may be abs_level_gt5_flag or abs_level_gtx_flag, the fourth coefficient level flag may be abs_level_gt7_flag or abs_level_gtx_flag, and the fifth coefficient level flag may be abs_level_gt9_flag or abs_level_gtx_flag.
[0328] Furthermore, for example, the bypass-coded syntax element for the conversion coefficient may include coefficient level information for the value (or coefficient level) of the conversion coefficient and / or a sign flag indicating the sign for the conversion coefficient. The coefficient level information may be abs_remainder and / or dec_abs_level, and the sign flag may be ceff_sign_flag.
[0329] The encoding device generates a bitstream including the sign data hiding enable flag, the TSRC enable flag, and the residual information (S630). For example, the encoding device can output video information including the sign data hiding enable flag, the TSRC enable flag, and the residual information as a bitstream. The bitstream may include the sign data hiding enable flag, the TSRC enable flag, and the residual information. The bitstream may further include the dependent quantization enable flag and / or the conversion skip enable flag.
[0330] On the other hand, the video information may include prediction-related information for the conversion skip block. The prediction-related information may include prediction mode information for the inter-prediction mode or intra-prediction mode performed on the conversion skip block.
[0331] On the other hand, the bitstream may be transmitted to a decoding device via a network or (digital) storage medium. Here, the network may include broadcast networks and / or communication networks, and the digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc.
[0332] Figure 7 schematically shows an encoding device that performs the video encoding method relating to this document. The method disclosed in Figure 6 may be performed by the encoding device disclosed in Figure 7. Specifically, for example, the entropy encoding unit of the encoding device in Figure 7 can perform steps S600 to S630 in Figure 6. Furthermore, although not shown, the process of deriving predicted samples for the conversion skip block may be performed by the prediction unit of the encoding device, the process of deriving residual samples for the conversion skip block based on the original samples and predicted samples for the conversion skip block may be performed by the subtraction unit of the encoding device, and the process of generating restored samples and restored pictures for the conversion skip block based on the residual samples and predicted samples for the conversion skip block may be performed by the addition unit of the encoding device.
[0333] Figure 8 schematically shows a video decoding method using a decoding device relating to this document. The method disclosed in Figure 8 may be performed using the decoding device disclosed in Figure 3. Specifically, for example, steps S800 to S820 in Figure 8 may be performed by the entropy decoding unit of the decoding device, step S830 in Figure 8 may be performed by the residual processing unit of the decoding device, and step S840 may be performed by the addition unit of the decoding device. Furthermore, although not shown, the process of receiving prediction information for conversion skip blocks may be performed by the entropy decoding unit of the decoding device, and the process of deriving prediction samples for conversion skip blocks may be performed by the prediction unit of the decoding device.
[0334] The decoding device obtains a sign data hiding availability flag (S800) indicating whether sign data hiding is currently available for the slice. The decoding device can obtain video information including the sign data hiding availability flag using a bitstream. The video information may include the sign data hiding availability flag. For example, the sign data hiding availability flag may be a flag indicating whether sign data hiding is available. For example, the sign data hiding availability flag may indicate whether sign data hiding is available for a block of pictures within a sequence. For example, the sign data hiding availability flag may indicate whether a sign data hiding usage flag exists that indicates whether sign data hiding is currently used for the slice. For example, a sign data hiding availability flag with a value of 1 may indicate that sign data hiding is available, and a sign data hiding availability flag with a value of 0 may indicate that sign data hiding is not available. For example, a sign data hiding enabled flag with a value of 1 can indicate that a sign flag to which sign data hiding is applied can exist, and a sign data hiding enabled flag with a value of 0 can indicate that no sign flag to which sign data hiding is applied does not exist. Alternatively, for example, the sign data hiding enabled flag may be signaled using SPS (Sequence Parameter Set) syntax. Or, for example, the sign data hiding enabled flag may be signaled using picture header syntax or slice header syntax. The syntax element of the sign data hiding enabled flag may be the sps_sign_data_hiding_enabled_flag described above.
[0335] The decoding device obtains a TSRC availability flag (S810) indicating whether TSRC (Transform Skip Residual Coding) is available for the transform skip block of the current slice. The video information may include the TSRC availability flag.
[0336] For example, the decoding device can obtain the TSRC availability flag based on the sign data hiding availability flag. For example, the TSRC availability flag may be obtained based on the sign data hiding availability flag having a value of 0. That is, for example, if the value of the sign data hiding availability flag is 0 (i.e., the sign data hiding availability flag indicates that sign data hiding is not available), the TSRC availability flag may be obtained. In other words, for example, if the value of the sign data hiding availability flag is 0 (i.e., the sign data hiding availability flag indicates that sign data hiding is not available), the TSRC availability flag may be signaled. Also, for example, if the value of the sign data hiding availability flag is 1, the TSRC availability flag does not need to be obtained, and the value of the TSRC availability flag may be derived to be 0. That is, for example, if the value of the sign data hiding availability flag is 1, the TSRC availability flag does not need to be signaled, and the value of the TSRC availability flag may be derived to be 0.
[0337] Here, for example, the TSRC availability flag may be a flag indicating whether or not TSRC is available. That is, for example, the TSRC availability flag may be a flag indicating whether or not TSRC is available for a block within a slice. In other words, for example, the TSRC availability flag may be a flag indicating whether or not TSRC is available for a transform skip block within a slice. Here, the block may be a coding block (CB) or a transform block (TB). For example, a value of 1 for the TSRC availability flag may indicate that TSRC is unavailable, and a value of 0 for the TSRC availability flag may indicate that TSRC is available. Also, for example, the TSRC availability flag may be signaled in the slice header syntax. The syntax element of the TSRC availability flag may be the sh_ts_residual_coding_disabled_flag described above. The TSRC availability flag can also be called a TSRC disavailability flag.
[0338] On the other hand, for example, a decoding device can obtain a dependent quantization availability flag. The decoding device can obtain video information including the dependent quantization availability flag using a bitstream. The video information may include the dependent quantization availability flag. For example, the dependent quantization availability flag may be a flag indicating whether or not dependent quantization is available. For example, the dependent quantization availability flag can indicate whether or not dependent quantization is available for a block of pictures within a sequence. For example, the dependent quantization availability flag can indicate whether or not a dependent quantization usage flag exists that indicates whether or not dependent quantization is currently used for a slice. For example, a dependent quantization availability flag with a value of 1 can indicate that dependent quantization is available, and a dependent quantization availability flag with a value of 0 can indicate that dependent quantization is not available. Furthermore, for example, the dependent quantization enabled flag may be signaled using SPS syntax or slice header syntax. The syntax element of the dependent quantization enabled flag may be the sps_dep_quant_enabled_flag described above.
[0339] Furthermore, for example, a decoding device can obtain a transform skip availability flag. The decoding device can obtain video information including the transform skip availability flag using a bitstream. The video information may include the transform skip availability flag. For example, the transform skip availability flag may be a flag indicating whether or not transform skipping is available. For example, the transform skip availability flag can indicate whether or not transform skipping is available. That is, for example, the transform skip availability flag can indicate whether or not transform skipping is available for a block of pictures within a sequence. For example, the transform skip availability flag can indicate whether or not a transform skip flag can exist. For example, a transform skip availability flag with a value of 1 can indicate that transform skipping is available, and a transform skip availability flag with a value of 0 can indicate that transform skipping is not available. That is, for example, a transform skip availability flag with a value of 1 can indicate that transform skipping is available, and a transform skip availability flag with a value of 0 can indicate that transform skipping does not exist. Furthermore, for example, the transformation skip enable flag may be signaled using SPS (Sequence Parameter Set) syntax. The syntax element of the transformation skip enable flag may be the sps_transform_skip_enabled_flag described above.
[0340] Furthermore, for example, the TSRC availability flag may be obtained based on the sign data hiding availability flag and / or the conversion skip availability flag. For example, the TSRC availability flag may be obtained based on the sign data hiding availability flag, which has a value of 0, and the conversion skip availability flag, which has a value of 1. That is, for example, if the value of the sign data hiding availability flag is 0 (i.e., the sign data hiding availability flag indicates that sign data hiding is not available) and the value of the conversion skip availability flag is 1 (i.e., the conversion skip availability flag indicates that conversion skipping is available), the TSRC availability flag may be obtained (or signaled). Also, for example, if the value of the conversion skip availability flag is 0, the TSRC availability flag does not need to be obtained, and the value of the TSRC availability flag may be derived to be 0. That is, for example, if the value of the conversion skip availability flag is 0, the TSRC availability flag does not need to be signaled, and the value of the TSRC availability flag may be derived to be 0.
[0341] The decoding device obtains residual coding information for the conversion skip block based on the TSRC availability flag (S820). The decoding device can obtain residual information for the conversion skip block based on the TSRC availability flag.
[0342] For example, a decoding device can determine the residual coding syntax for the transformation skip block in the slice based on the TSRC availability flag. For example, based on the TSRC availability flag, a decoding device can determine the residual coding syntax for the transformation skip block to be one of the following: Regular Residual Coding (RRC) syntax and Transform Skip Residual Coding (TSRC) syntax. RRC syntax can represent syntax using RRC, and TSRC syntax can represent syntax using TSRC.
[0343] For example, based on the TSRC availability flag, which has a value of 1, the residual coding syntax for the transform skip block in the current slice may be determined to be Regular Residual Coding (RRC) syntax. In this case, for example, based on the transform skip availability flag, which has a value of 1, a transform skip flag may be obtained indicating whether or not to skip the transformation of the transform skip block, and the value of the transform skip flag may be 1. For example, the video information may include a transform skip flag for the transform skip block. The transform skip flag can indicate whether or not to skip the transformation of the transform skip block. That is, the transform skip flag can indicate whether or not a transformation has been applied to the transformation coefficients of the transform skip block. The syntax element representing the transform skip flag may be the transform_skip_flag described above. For example, if the value of the transform skip flag is 1, the transform skip flag can indicate that no transformation is applied to the transform skip block (i.e., the transformation is skipped), and if the value of the transform skip flag is 0, the transform skip flag can indicate that a transformation is applied to the transform skip block. For example, the value of the conversion skip flag for the conversion skip block may be 1.
[0344] Furthermore, for example, based on the TSRC availability flag having a value of 0, the residual coding syntax for the transform skip block may be determined to be the Transform Skip Residual Coding (TSRC) syntax. Furthermore, for example, a transform skip flag may be obtained to indicate whether or not to skip the transformation of the transform skip block, and based on the transform skip flag having a value of 1 and the TSRC availability flag having a value of 0, the residual coding syntax for the transform skip block may be determined to be the Transform Skip Residual Coding (TSRC) syntax. Furthermore, for example, a transform skip flag may be obtained to indicate whether or not to skip the transformation of the current block, and based on the transform skip flag having a value of 0 and the TSRC availability flag having a value of 0, the residual coding syntax for the current block may be determined to be the Regular Residual Coding (RRC) syntax.
[0345] Subsequently, for example, the decoding device can obtain residual information for the determined residual coding syntax for the conversion skip block. For example, residual information for the Regular Residual Coding (RRC) syntax may be obtained based on the TSRC availability flag having a value of 1, or residual information for the TSRC syntax may be obtained based on the TSRC availability flag having a value of 0. The video information may include residual information.
[0346] For example, if the residual coding syntax for the conversion skip block is determined to be the RRC syntax, the decoding device can obtain the residual information of the RRC syntax for the conversion skip block. For example, the residual information of the RRC syntax may include the syntax elements disclosed in Table 2 above.
[0347] For example, the residual information of the RRC syntax may include syntax elements for the transformation coefficients of the transformation skip block. Here, the transformation coefficient can also be called the residual coefficient.
[0348] For example, the syntax element may include syntax elements such as last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_suffix, sb_coded_flag, sig_coeff_flag, abs_level_gt1_flag, par_level_flag, abs_level_gtX_flag, abs_remainder, dec_abs_level, and / or coeff_sign_flag.
[0349] Specifically, for example, the syntax element may include position information indicating the position of the last non-zero conversion coefficient in the residual coefficient array of the conversion skip block. That is, the syntax element may include position information indicating the position of the last non-zero conversion coefficient in the scanning order of the conversion skip block. The position information may include information indicating the column position prefix of the last non-zero conversion coefficient, information indicating the row position prefix of the last non-zero conversion coefficient, information indicating the column position suffix of the last non-zero conversion coefficient, and information indicating the row position suffix of the last non-zero conversion coefficient. The syntax elements for the aforementioned position information may be last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, and last_sig_coeff_y_suffix. On the other hand, the non-zero conversion coefficient can also be called the significant coefficient.
[0350] Furthermore, for example, the syntax element may include a coded subblock flag indicating whether the subblock of the conversion skip block contains a non-zero conversion coefficient, an effective coefficient flag indicating whether the conversion coefficient of the conversion skip block is a non-zero conversion coefficient, a first coefficient level flag indicating whether the coefficient level for the conversion coefficient is greater than a first critical value, a parity level flag indicating the parity of the coefficient level, and / or a second coefficient level flag indicating whether the coefficient level of the conversion coefficient is greater than a second critical value. Here, the coded subblock flag may be sb_coded_flag or coded_sub_block_flag, the effective coefficient flag may be sig_coeff_flag, the first coefficient level flag may be abs_level_gt1_flag or abs_level_gtx_flag, the parity level flag may be par_level_flag, and the second coefficient level flag may be abs_level_gt3_flag or abs_level_gtx_flag.
[0351] Furthermore, for example, the syntax element may include coefficient value-related information for the conversion coefficients of the conversion skip block. The coefficient value-related information may be abs_remainder and / or dec_abs_level.
[0352] Furthermore, for example, the syntax element may include a sign flag indicating the sign of the conversion coefficient. The sign flag may be coeff_sign_flag.
[0353] On the other hand, for example, when sign data hiding is applied to the conversion skip block, the sign flag of the first effective conversion coefficient of the current CG (coefficient group) within the conversion skip block does not need to be signaled. That is, for example, when sign data hiding is applied to the conversion skip block, the syntax element does not need to include a sign flag indicating the sign of the first effective conversion coefficient. On the other hand, for example, whether or not sign data hiding is applied to the conversion skip block may be derived based on the sign data hiding enabled flag and / or the position of the first and last effective conversion coefficients in the current CG. For example, if the value of the sign data hiding enabled flag is 1 and the value obtained by subtracting the position of the first effective conversion coefficient from the position of the last effective conversion coefficient is greater than 3 (i.e., the value of the sign data hiding enabled flag is 1 and the number of effective conversion coefficients in the current CG is greater than 3), then sign data hiding may be applied to the current CG of the conversion skip block.
[0354] Furthermore, for example, if the residual coding syntax for the conversion skip block is determined to be the TSRC syntax, the decoding device can obtain the residual information of the TSRC syntax for the conversion skip block. For example, the residual information of the TSRC syntax may include the syntax elements disclosed in Table 3 above.
[0355] For example, the residual information of the TSRC syntax may include syntax elements for the transformation coefficients of the transformation skip block. Here, the transformation coefficient can also be called the residual coefficient.
[0356] For example, the syntax element may include context-coded and / or bypass-coded syntax elements for conversion coefficients. The syntax element may include syntax elements such as sig_coeff_flag, coeff_sign_flag, abs_level_gt1_flag, par_level_flag, abs_level_gtX_flag and / or abs_remainder.
[0357] For example, the context-coded syntax element for the conversion coefficient may include a valid coefficient flag indicating whether the conversion coefficient is a non-zero conversion coefficient, a sign flag indicating the sign of the conversion coefficient, a first coefficient level flag indicating whether the coefficient level of the conversion coefficient is greater than a first critical value, and / or a parity level flag indicating the parity of the coefficient level of the conversion coefficient. Furthermore, for example, the context-coded syntax element may include a second coefficient level flag indicating whether the coefficient level of the conversion coefficient is greater than a second critical value, a third coefficient level flag indicating whether the coefficient level of the conversion coefficient is greater than a third critical value, a fourth coefficient level flag indicating whether the coefficient level of the conversion coefficient is greater than a fourth critical value, and / or a fifth coefficient level flag indicating whether the coefficient level of the conversion coefficient is greater than a fifth critical value. Here, the effective coefficient flag may be sig_coeff_flag, the sign flag may be ceff_sign_flag, the first coefficient level flag may be abs_level_gt1_flag, and the parity level flag may be par_level_flag. Also, the second coefficient level flag may be abs_level_gt3_flag or abs_level_gtx_flag, the third coefficient level flag may be abs_level_gt5_flag or abs_level_gtx_flag, the fourth coefficient level flag may be abs_level_gt7_flag or abs_level_gtx_flag, and the fifth coefficient level flag may be abs_level_gt9_flag or abs_level_gtx_flag.
[0358] Furthermore, for example, the bypass-coded syntax element for the conversion coefficient may include coefficient level information for the value (or coefficient level) of the conversion coefficient and / or a sign flag indicating the sign for the conversion coefficient. The coefficient level information may be abs_remainder and / or dec_abs_level, and the sign flag may be coeff_sign_flag.
[0359] The decoding device derives a residual sample for the conversion skip block based on the residual coding information (S830). For example, the decoding device can derive a conversion coefficient for the conversion skip block based on the residual information, and can derive a residual sample for the conversion skip block based on the conversion coefficient.
[0360] For example, the decoding device can derive the conversion coefficients of the conversion skip block based on the syntax elements of the residual information. The decoding device can then derive the residual sample of the conversion skip block based on the conversion coefficients. For example, if it is derived from the conversion skip flag that no conversion is applied to the conversion skip block, i.e., if the value of the conversion skip flag is 1, the decoding device can derive the conversion coefficients as the residual sample of the conversion skip block. Alternatively, for example, if it is derived from the conversion skip flag that no conversion is applied to the conversion skip block, i.e., if the value of the conversion skip flag is 1, the decoding device can de-quantize the conversion coefficients to derive the residual sample of the conversion skip block. Alternatively, for example, if it is derived from the conversion skip flag that a conversion has been applied to the block in the current slice, i.e., if the value of the conversion skip flag for the block is 0, the decoding device can de-quantize the conversion coefficients to derive the residual sample of the block. Alternatively, for example, if it is derived that a transformation has been applied to the block based on the transformation skip flag, that is, if the value of the transformation skip flag is 0, the decoding device can de-quantize the transformation coefficients and de-transform the de-quantized transformation coefficients to derive the residual sample of the current block.
[0361] On the other hand, for example, when sign data hiding is applied to the conversion skip block, the sign of the first effective conversion coefficient of the current CG within the conversion skip block may be derived based on the sum of the absolute values of the effective conversion coefficients within the current CG. For example, if the sum of the absolute values of the effective conversion coefficients is even, the sign of the first effective conversion coefficient may be derived as a positive value, and if the sum of the absolute values of the effective conversion coefficients is odd, the sign of the first effective conversion coefficient may be derived as a negative value.
[0362] The decoding device generates a reconstructed picture based on the residual sample (S840). For example, the decoding device can generate a reconstructed sample and / or a reconstructed picture of the current slice's transformation skip block based on the residual sample. For example, the decoding device can perform an inter-prediction mode or intra-prediction mode for the transformation skip block based on prediction information received using a bitstream to derive a prediction sample, and generate the reconstructed sample by adding the prediction sample and the residual sample.
[0363] As mentioned above, subsequently, in-loop filtering procedures such as deblocking filtering, SAO, and / or ALF procedures may be applied to the restored picture to improve subjective / objective image quality as needed.
[0364] Figure 9 schematically shows a decoding apparatus that performs the video decoding method relating to this document. The method disclosed in Figure 8 may be performed by the decoding apparatus disclosed in Figure 9. Specifically, for example, the entropy decoding unit of the decoding apparatus in Figure 9 can perform steps S800 to S820 in Figure 8, the residual processing unit of the decoding apparatus in Figure 9 can perform step S830 in Figure 8, and the addition unit of the decoding apparatus in Figure 9 can perform step S840 in Figure 8. Furthermore, although not shown, the process of receiving prediction information for a conversion skip block may be performed by the entropy decoding unit of the decoding apparatus in Figure 9, and the process of deriving the prediction sample for the current block may be performed by the prediction unit of the decoding apparatus in Figure 9.
[0365] According to the document mentioned above, the efficiency of residual coding can be increased.
[0366] Furthermore, according to this document, the TSRC availability flag can be signaled subordinate to the sign data hiding availability flag, thereby improving coding efficiency by preventing sign data hiding from being used for conversion skip blocks where TSRC is unavailable, reducing the amount of bits coded, and improving overall residual coding efficiency.
[0367] Furthermore, according to this document, the TSRC availability flag can be signaled dependent on the conversion skip availability flag and the sign data hiding availability flag. This improves coding efficiency by preventing sign data hiding from being used for conversion skip blocks where TSRC is unavailable, thereby reducing the amount of bits coded and improving overall residual coding efficiency.
[0368] In the embodiments described above, the method is a series of steps or blocks and is explained based on a sequence diagram. However, this document is not limited to the order of the steps, and some steps may occur in a different order or simultaneously with other steps than those described above. Furthermore, those skilled in the art will understand that the steps shown in the sequence diagram are not exclusive, and other steps may be included, or one or more steps in the sequence diagram may be omitted without affecting the scope of this document.
[0369] The embodiments described herein may be implemented and performed on a processor, microprocessor, controller, or chip. For example, the functional units shown in each figure may be implemented and performed on a computer, processor, microprocessor, controller, or chip. In this case, information on instructions or algorithms for implementation may be stored on a digital storage medium.
[0370] Furthermore, the decoding and encoding devices to which the embodiments of this document apply may include multimedia broadcasting transceivers, mobile communication terminals, home cinema video equipment, digital cinema video equipment, surveillance cameras, video conferencing equipment, real-time communication equipment such as video communications, mobile streaming equipment, storage media, CAM coders, video-on-demand (VoD) service providers, OTT video (Over the Top) video equipment, internet streaming service providers, 3D video equipment, image-phone video equipment, transportation terminals (e.g., vehicle terminals, airplane terminals, ship terminals, etc.), and medical video equipment, and may be used to process video signals or data signals. For example, OTT video (Over the Top) equipment may include game consoles, Blu-ray players, internet-connected TVs, home theater systems, smartphones, tablet PCs, DVRs (Digital Video Recorders), etc.
[0371] Furthermore, the processing methods to which the embodiments of this document apply may be produced in the form of programs executed on a computer and stored on a computer-readable recording medium. Multimedia data having the data structure according to this document may also be stored on a computer-readable recording medium. The computer-readable recording medium includes all kinds of storage devices and distributed storage devices that store computer-readable data. The computer-readable recording medium may include, for example, Blu-ray discs (BDs), general-purpose serial buses (USBs), ROMs, PROMs, EPROMs, EEPROMs, RAMs, CD-ROMs, magnetic tapes, floppy disks, and optical data storage devices. The computer-readable recording medium also includes media embodied in the form of carrier waves (e.g., transmission over the Internet). Furthermore, a bitstream generated by an encoding method may be stored on a computer-readable recording medium and transmitted over a wireless communication network.
[0372] Furthermore, the embodiments described in this document may be embodied as computer program products in the form of program code, and the program code may be executed on a computer according to the embodiments described in this document. The program code may be stored on a computer-readable carrier.
[0373] Figure 10 is a structural diagram illustrating a content streaming system to which the embodiments described in this document are applied.
[0374] The content streaming system to which the embodiments described herein apply may broadly include an encoding server, a streaming server, a web server, media storage, user equipment, and multimedia input devices.
[0375] The encoding server is responsible for compressing content input from multimedia input devices such as smartphones, cameras, and CAM coders into digital data, generating a bitstream, and transmitting it to the streaming server. In other cases, the encoding server may be omitted if the multimedia input device, such as a smartphone, camera, or CAM coder, directly generates the bitstream.
[0376] The bitstream may be generated by an encoding method or bitstream generation method to which the embodiments of this document apply, and the streaming server may temporarily store the bitstream in the process of transmitting or receiving the bitstream.
[0377] The streaming server transmits multimedia data to user devices based on user requests via a web server, and the web server acts as an intermediary to inform users about available services. When a user requests a desired service from the web server, the web server transmits it to the streaming server, and the streaming server transmits multimedia data to the user. In this case, the content streaming system may include a separate control server, in which case the control server is responsible for controlling the commands and responses between each device in the content streaming system.
[0378] The streaming server can receive content from media storage and / or encoding servers. For example, when receiving content from the encoding server, the content can be received in real time. In this case, in order to provide a smooth streaming service, the streaming server can store the bitstream for a certain period of time.
[0379] Examples of user devices include mobile phones, smartphones, laptop computers, digital broadcasting terminals, PDAs (personal digital assistants), PMPs (portable multimedia players), navigation systems, slate PCs, tablet PCs, ultrabooks, wearable devices (e.g., smartwatches, smart glasses, HMDs (head-mounted displays)), digital TVs, desktop computers, and digital signage. Each server in the content streaming system may be operated as a distributed server, in which case the data received by each server may be processed in a distributed manner.
[0380] The claims described herein may be combined in various ways. For example, the technical features of the method claims herein may be combined to embody an apparatus, and the technical features of the apparatus claims herein may be combined to embody a method. Furthermore, the technical features of the method claims and the technical features of the apparatus claims herein may be combined to embody an apparatus, and the technical features of the method claims and the technical features of the apparatus claims herein may be combined to embody a method.
Claims
1. A video decoding method performed by a decoding device, Steps to obtain a sign data hiding availability flag to determine whether sign data hiding is available, Currently, we are at the stage of obtaining a TSRC (Transform Skip Residual Coding) disavailability flag to determine whether the TSRC syntax is used for transform skip blocks within the slice. Steps to obtain residual information for the conversion skip block based on the TSRC non-available flag, The steps include: deriving a residual sample for the conversion skip block based on the residual information, and The step includes generating a reconstructed picture based on the said residual sample, The aforementioned sign data hiding enable flag is obtained from the bitstream sequence parameter set, The TSRC non-available flag is obtained based on the sign data hiding available flag, by a method.
2. A sign data hiding availability flag equal to 1 indicates that sign data hiding is available, The method according to claim 1, wherein a sign data hiding availability flag equal to 0 indicates that sign data hiding is not available.
3. The method according to claim 2, in response to the value of the sign data hiding availability flag being equal to 1, the sign of the first effective conversion coefficient of the current CG (coefficient group) in the conversion skip block is derived based on the sum of the absolute values of the effective conversion coefficients in the current CG (coefficient group).
4. The method according to claim 3, wherein, in response to the value of the sign data hiding enable flag being equal to 1, the sign flag for the first effective conversion coefficient is not signaled.
5. The method according to claim 2, wherein the TSRC non-available flag is obtained from the bitstream based on the value of the sign data hiding available flag being equal to 0.
6. The method according to claim 5, wherein, based on the value of the sign data hiding available flag being equal to 1, the TSRC non-available flag is not obtained from the bitstream, and the value of the TSRC non-available flag is derived to be 0.
7. A video encoding method performed by an encoding device, The step of encoding a sign data hiding availability flag to indicate whether sign data hiding is available, Currently, we are at the stage of encoding a TSRC (Transform Skip Residual Coding) disavailability flag to indicate whether the TSRC syntax is used for transform skip blocks within the slice. The steps include encoding residual information for the conversion skip block based on the TSRC non-available flag, and The step includes generating a bitstream that includes the sign data hiding enable flag, the TSRC disable flag, and the residual information, The sign data hiding enable flag is encoded within the sequence parameter set of the bitstream. A method by which the TSRC non-available flag is encoded based on the sign data hiding available flag.
8. A sign data hiding availability flag equal to 1 indicates that sign data hiding is available, The method according to claim 7, wherein a sign data hiding availability flag equal to 0 indicates that sign data hiding is not available.
9. The method according to claim 8, wherein the TSRC non-available flag is encoded in the bitstream based on the value of the sign data hiding available flag being equal to 0.
10. The method according to claim 9, wherein the TSRC non-available flag is not encoded in the bitstream based on the value of the sign data hiding available flag being equal to 1.
11. A non-temporary computer-readable recording medium for storing computer programs, When the aforementioned computer program is executed by the processor, the processor performs the following operations: Encoding a sign data hiding availability flag to indicate whether sign data hiding is available. Currently, encode a TSRC (Transform Skip Residual Coding) disabling flag to indicate whether the TSRC syntax is used for transform skip blocks within a slice, and The system encodes the residual information for the conversion skip block based on the TSRC non-available flag, The bitstream includes the sign data hiding enable flag, the TSRC disable flag, and the residual information. The sign data hiding enable flag is encoded within the sequence parameter set of the bitstream. The TSRC non-available flag is encoded based on the sign data hiding available flag, and is a non-temporary computer-readable recording medium.
12. A method for transmitting data for video information, The step of encoding a sign data hiding availability flag to indicate whether sign data hiding is available, Currently, we are at the stage of encoding a TSRC (Transform Skip Residual Coding) disavailability flag to indicate whether the TSRC syntax is used for transform skip blocks within the slice. The step of encoding residual information for the conversion skip block based on the TSRC non-available flag, A step of generating a bitstream including the sign data hiding enable flag, the TSRC disable flag, and the residual information, and The step includes transmitting the data, including the bitstream, The sign data hiding enable flag is encoded within the sequence parameter set of the bitstream. A method by which the TSRC non-available flag is encoded based on the sign data hiding available flag.