Image encoding / decoding method and device, and recording medium storing bitstream
By employing adaptive decoding/encoding sequences based on tree-based block division, the method efficiently encodes and decodes high-resolution images, addressing the challenges of existing technologies in handling HD and UHD video.
Patent Information
- Application Number
- PCT/KR2024/013901
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-09-12
- Filing Date
- 2024-09-12
- Publication Date
- 2025-03-20
AI Technical Summary
Existing image compression technologies struggle to efficiently encode and decode high-resolution and high-quality images such as HD and UHD video, particularly in adapting decoding/encoding sequences for sub-blocks based on tree-based block division.
The method and device utilize adaptive decoding/encoding sequences for sub-blocks based on tree-based block division, allowing for efficient encoding and decoding by determining the decoding order based on scan-order candidates such as horizontal Z scan or vertical Z scan.
This approach improves encoding efficiency by adaptively determining the decoding order for top-level block units, leading to enhanced compression and transmission of high-resolution video content.
Smart Images

Figure KR2024013901_20032025_PF_FP_ABST
Abstract
Description
Video encoding / decoding method and device, and recording medium storing bitstream
[0001] The present invention relates to a video encoding / decoding method and device, and a recording medium storing a bitstream.
[0002] Recently, the demand for high-resolution, high-quality images, such as HD (High Definition) images and UHD (Ultra High Definition) images, is increasing in various application fields, and accordingly, high-efficiency image compression technologies are being discussed.
[0003] There are various technologies for image compression, such as inter prediction technology that predicts pixel values included in the current picture from pictures before or after the current picture, intra prediction technology that predicts pixel values included in the current picture using pixel information within the current picture, and entropy encoding technology that assigns short codes to values with high frequency of appearance and long codes to values with low frequency of appearance, and these technologies can be used to effectively compress and transmit or store image data.
[0004] The present disclosure provides a method and device for using an adaptive decoding / encoding order for sub-blocks according to tree-based block division.
[0005] The present disclosure seeks to provide a method and apparatus for efficiently signaling information / syntax for using adaptive decoding / encoding order.
[0006] According to the present disclosure, a method and device for using an adaptive decoding / encoding order for top-level block units constituting a picture are provided.
[0007] The video decoding method and device according to the present disclosure can divide a current block into a plurality of sub-blocks based on any one of the types of pre-defined block divisions, and can decode the plurality of sub-blocks based on a predetermined decoding order. Here, the decoding order can be determined based on any one of one or more scan order candidates. The one or more scan order candidates can include at least one of a horizontal Z-scan order or a vertical Z-scan order.
[0008] In the image decoding method and device according to the present disclosure, the decoding order can be determined based on index information indicating one of the one or more scan order candidates.
[0009] In the video decoding method and device according to the present disclosure, the index information can be signaled based on information indicating whether the current block is divided into four sub-blocks.
[0010] The video decoding method and device according to the present disclosure can obtain high-level syntax regarding whether an adaptive scan order is used from a bitstream.
[0011] In the video decoding method and device according to the present disclosure, the upper level syntax can be signaled in at least one of a sequence parameter set, a picture parameter set, or a picture header.
[0012] In the image decoding method and device according to the present disclosure, the index information can be signaled based on the upper level syntax.
[0013] In the image decoding method and device according to the present disclosure, the current block including the current block can be divided into a plurality of highest block units, and the plurality of highest block units can be decoded based on a decoding order in which a raster scan order and a Z scan order are combined.
[0014] The video encoding method and device according to the present disclosure can divide a current block into a plurality of sub-blocks based on any one of the types of pre-defined block divisions, and can encode the plurality of sub-blocks based on a predetermined encoding order. Here, the encoding order can be determined based on any one of one or more scan order candidates. The one or more scan order candidates can include at least one of a horizontal Z-scan order or a vertical Z-scan order.
[0015] A computer-readable digital storage medium is provided having encoded video / image information stored thereon, which causes a decoding device according to the present disclosure to perform a video decoding method.
[0016] A computer-readable digital storage medium storing video / image information generated by a video encoding method according to the present disclosure is provided.
[0017] A method and device for transmitting video / image information generated by a video encoding method according to the present disclosure are provided.
[0018] According to the present disclosure, encoding efficiency can be improved by using an adaptive decoding / encoding order for sub-blocks obtained through tree-based block division.
[0019] According to the present disclosure, encoding efficiency can be improved by efficiently signaling syntax for using adaptive decoding / encoding order.
[0020] According to the present disclosure, encoding efficiency can be improved by using an adaptive decoding / encoding order for the highest block units constituting one picture.
[0021] FIG. 1 illustrates a video / image coding system according to the present disclosure.
[0022] FIG. 2 is a schematic block diagram of an encoding device to which an embodiment of the present disclosure can be applied and in which encoding of a video / image signal is performed.
[0023] FIG. 3 is a schematic block diagram of a decoding device to which an embodiment of the present disclosure can be applied and in which decoding of a video / image signal is performed.
[0024] FIG. 4 illustrates an image decoding method performed by a decoding device (300) as an embodiment according to the present disclosure.
[0025] Figure 5 illustrates a decoding order according to the raster scan order for multiple CTUs within one picture.
[0026] Figures 6 and 7 illustrate an example of using an adaptive scan order for multiple CTUs within a single picture.
[0027] FIG. 8 illustrates a schematic configuration of a decoding device (300) that performs an image decoding method according to the present disclosure.
[0028] FIG. 9 illustrates an image encoding method performed by an encoding device (200) as an embodiment according to the present disclosure.
[0029] FIG. 10 illustrates a schematic configuration of an encoding device (200) that performs an image encoding method according to the present disclosure.
[0030] FIG. 11 illustrates an example of a content streaming system to which embodiments of the present disclosure can be applied.
[0031] The present disclosure may be modified in various ways and encompasses numerous embodiments. Specific embodiments are illustrated in the drawings and described in detail in the detailed description. However, this is not intended to limit the present disclosure to specific embodiments, but rather to encompass all modifications, equivalents, and alternatives falling within the spirit and technical scope of the present disclosure. Throughout the description of each drawing, similar reference numerals have been used to designate similar components.
[0032] While terms such as "first" and "second" may be used to describe various components, these components should not be limited by these terms. These terms are used solely to distinguish one component from another. For example, without departing from the scope of the present disclosure, a first component could be referred to as a "second component," and similarly, a second component could also be referred to as a "first component." The term "and / or" includes a combination of multiple related items described herein or any of multiple related items described herein.
[0033] When a component is referred to as being "connected" or "connected" to another component, it should be understood that it may be directly connected or connected to that other component, but that there may be other components intervening. Conversely, when a component is referred to as being "directly connected" or "connected" to another component, it should be understood that there are no other components intervening.
[0034] The terminology used in this application is only used to describe specific embodiments and is not intended to limit the present disclosure. The singular expression includes the plural expression unless the context clearly indicates otherwise. In this application, it should be understood that the terms "comprise" or "have" indicate the presence of a feature, number, step, operation, component, part, or combination thereof described in the specification, but do not preclude the possibility of the presence or addition of one or more other features, numbers, steps, operations, components, parts, or combinations thereof.
[0035] The present disclosure relates to video / image coding. For example, the methods / embodiments disclosed in this specification can be applied to methods disclosed in the versatile video coding (VVC) standard. In addition, the methods / embodiments disclosed in this specification can be applied to methods disclosed in the essential video coding (EVC) standard, the AOMedia Video 1 (AV1) standard, the second generation of audio video coding standard (AVS2), or the next generation of video / image coding standards (e.g., H.267 or H.268).
[0036] This specification presents various embodiments of video / image coding, and unless otherwise stated, the embodiments may be performed in combination with each other.
[0037] In this specification, a video may refer to a set of images over time. A picture generally refers to a unit representing one image at a specific time point, and a slice / tile is a unit that constitutes part of a picture in coding. A slice / tile may include one or more coding tree units (CTUs). A picture may be composed of one or more slices / tiles. A tile is a rectangular area consisting of multiple CTUs within a specific tile column and a specific tile row of a picture. A tile column is a rectangular area of CTUs that has a height equal to the height of the picture and a width specified by the syntax requirements of the picture parameter set. A tile row is a rectangular area of CTUs that has a height specified by the picture parameter set and a width equal to the width of the picture. CTUs within a tile are arranged consecutively according to the CTU raster scan, while tiles within a picture may be arranged consecutively according to the tile raster scan. A slice may contain an integer number of complete tiles or an integer number of contiguous complete CTU rows within a picture, which may be exclusively contained within a single NAL unit. Meanwhile, a picture may be divided into two or more subpictures. A subpicture may be a rectangular region of one or more slices within a picture.
[0038] A pixel, or pel, can refer to the smallest unit that constitutes a picture (or image). Additionally, the term "sample" can be used as a counterpart to a pixel. A sample can generally represent a pixel or a pixel value, and can represent only the pixel / pixel value of the luminance component, or only the pixel / pixel value of the chrominance component.
[0039] A unit may represent a basic unit of image processing. A unit may include at least one of a specific region of a picture and information related to the region. One unit may include one luma block and two chroma (e.g., cb, cr) blocks. In some cases, the term "unit" may be used interchangeably with terms such as "block" or "area." In general, an MxN block may include a set (or array) of samples (or sample array) or transform coefficients consisting of M columns and N rows.
[0040] As used herein, "A or B" can mean "only A," "only B," or "both A and B." In other words, as used herein, "A or B" can be interpreted as "A and / or B." For example, as used herein, "A, B or C" can mean "only A," "only B," "only C," or "any combination of A, B and C."
[0041] As used herein, a slash ( / ) or a comma can mean "and / or." For example, "A / B" can mean "A and / or B." Accordingly, "A / B" can mean "only A," "only B," or "both A and B." For example, "A, B, C" can mean "A, B, or C."
[0042] In this specification, "at least one of A and B" may mean "only A", "only B" or "both A and B". Additionally, in this specification, the expressions "at least one of A or B" or "at least one of A and / or B" may be interpreted identically to "at least one of A and B".
[0043] Additionally, in this specification, “at least one of A, B and C” can mean “only A,” “only B,” “only C,” or “any combination of A, B and C.” Additionally, “at least one of A, B or C” or “at least one of A, B and / or C” can mean “at least one of A, B and C.”
[0044] Additionally, parentheses used herein may mean "for example." Specifically, when "prediction (intra-prediction)" is indicated, "intra-prediction" may be suggested as an example of "prediction." In other words, "prediction" in this specification is not limited to "intra-prediction," and "intra-prediction" may be suggested as an example of "prediction." Furthermore, even when "prediction (i.e., intra-prediction)" is indicated, "intra-prediction" may be suggested as an example of "prediction."
[0045] Technical features individually described in a single drawing in this specification may be implemented individually or simultaneously.
[0046] FIG. 1 illustrates a video / image coding system according to the present disclosure.
[0047] Referring to FIG. 1, a video / image coding system may include a first device (source device) and a second device (receiving device).
[0048] A source device can transmit encoded video / image information or data to a receiving device via a digital storage medium or a network in the form of a file or streaming. The source device may include a video source, an encoding device, and a transmitting device. The receiving device may include a receiving device, a decoding device, and a renderer. The encoding device may be referred to as a video / image encoding device, and the decoding device may be referred to as a video / image decoding device. The transmitter may be included in the encoding device. The receiver may be included in the decoding device. The renderer may include a display unit, and the display unit may be configured as a separate device or an external component.
[0049] A video source may obtain video / images through a process of capturing, synthesizing, or generating video / images. The video source may include a video / image capture device and / or a video / image generation device. The video / image capture device may include one or more cameras, a video / image archive containing previously captured video / images, etc. The video / image generation device may include a computer, a tablet, a smartphone, etc., and may (electronically) generate video / images. For example, a virtual video / image may be generated through a computer, etc., in which case the video / image capture process may be replaced by a process of generating related data.
[0050] An encoding device can encode input video / images. The encoding device can perform a series of procedures, such as prediction, transformation, and quantization, to improve compression and coding efficiency. The encoded data (encoded video / image information) can be output in the form of a bitstream.
[0051] The transmission unit can transmit encoded video / image information or data output in the form of a bitstream to the receiving unit of a receiving device via a digital storage medium or network in the form of a file or streaming. The digital storage medium can include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc. The transmission unit can include an element for generating a media file via a predetermined file format and an element for transmission via a broadcasting / communication network. The receiving unit can receive / extract the bitstream and transmit it to a decoding device.
[0052] The decoding device can decode the video / image by performing a series of procedures such as inverse quantization, inverse transformation, and prediction corresponding to the operation of the encoding device.
[0053] The renderer can render decoded video / images. The rendered video / images can be displayed through the display unit.
[0054] FIG. 2 is a schematic block diagram of an encoding device to which an embodiment of the present disclosure can be applied and in which encoding of a video / image signal is performed.
[0055] Referring to FIG. 2, the encoding device (200) may be configured to include an image partitioner (210), a prediction unit (predictor) 220, a residual processor (residual processor) 230, an entropy encoder (entropy encoder) 240, an adder (adder) 250, a filter (filter) 260, and a memory (memory) 270. The prediction unit (220) may include an inter prediction unit (221) and an intra prediction unit (222). The residual processor (230) may include a transformer (transformer) 232, a quantizer (quantizer) 233, a dequantizer (dequantizer) 234, and an inverse transformer (inverse transformer) 235. The residual processing unit (230) may further include a subtractor (231). The addition unit (250) may be called a reconstructor or a recontructed block generator. The image segmentation unit (210), the prediction unit (220), the residual processing unit (230), the entropy encoding unit (240), the addition unit (250), and the filtering unit (260) described above may be configured by one or more hardware components (e.g., an encoding device chipset or processor) according to an embodiment. In addition, the memory (270) may include a decoded picture buffer (DPB) and may be configured by a digital storage medium. The hardware component may further include the memory (270) as an internal / external component.
[0056] The image segmentation unit (210) can segment an input image (or picture, frame) input to the encoding device (200) into one or more processing units. For example, the processing unit may be called a coding unit (CU). In this case, the coding unit may be recursively segmented from a coding tree unit (CTU) or a largest coding unit (LCU) according to a QTBTTT (Quad-tree binary-tree ternary-tree) structure.
[0057] For example, a single coding unit may be split into multiple coding units with deeper depths based on a quad-tree structure, a binary tree structure, and / or a ternary structure. In this case, for example, the quad-tree structure may be applied first, and the binary tree structure and / or the ternary structure may be applied later. Alternatively, the binary tree structure may be applied before the quad-tree structure. The coding procedure according to the present specification may be performed based on the final coding unit that is no longer split. In this case, based on coding efficiency according to image characteristics, etc., the largest coding unit may be used directly as the final coding unit, or, if necessary, the coding unit may be recursively split into coding units of lower depths, and the coding unit with the optimal size may be used as the final coding unit. Here, the coding procedure may include procedures such as prediction, transformation, and restoration, which will be described later.
[0058] As another example, the processing unit may further include a prediction unit (PU) or a transform unit (TU). In this case, the prediction unit and the transform unit may each be split or partitioned from the final coding unit described above. The prediction unit may be a unit of sample prediction, and the transform unit may be a unit for deriving a transform coefficient and / or a unit for deriving a residual signal from a transform coefficient.
[0059] The term "unit" may be used interchangeably with terms such as "block" or "area" depending on the case. In general, an MxN block can represent a set of samples or transform coefficients consisting of M columns and N rows. A sample can generally represent a pixel or a pixel value, and can represent only the pixel / pixel value of the luminance component, or only the pixel / pixel value of the chrominance component. A sample can be used as a term corresponding to a pixel or pel in a picture (or image).
[0060] The encoding device (200) can generate a residual signal (residual block, residual sample array) by subtracting a prediction signal (prediction block, prediction sample array) output from an inter prediction unit (221) or an intra prediction unit (222) from an input video signal (original block, original sample array), and the generated residual signal is transmitted to a conversion unit (232). In this case, a unit that subtracts a prediction signal (prediction block, prediction sample array) from an input video signal (original block, original sample array) within the encoding device (200) may be called a subtraction unit (231).
[0061] The prediction unit (220) can perform a prediction on a block to be processed (hereinafter, referred to as a current block) and generate a predicted block including prediction samples for the current block. The prediction unit (220) can determine whether intra prediction or inter prediction is applied on a current block or CU basis. The prediction unit (220) can generate various information related to prediction, such as prediction mode information, as described later in the description of each prediction mode, and transmit the information to the entropy encoding unit (240). The information related to prediction can be encoded by the entropy encoding unit (240) and output in the form of a bitstream.
[0062] The intra prediction unit (222) can predict the current block by referring to samples in the current picture. The referenced samples may be located in the neighborhood of the current block, or may be located a certain distance away from the current block, depending on the prediction mode. In intra prediction, the prediction modes may include one or more non-directional modes and multiple directional modes. The non-directional mode may include at least one of a DC mode or a planar mode. The directional mode may include 33 directional modes or 65 directional modes depending on the degree of detail in the prediction direction. However, this is only an example, and a greater or lesser number of directional modes may be used depending on the settings. The intra prediction unit (222) may also determine the prediction mode applied to the current block by using the prediction mode applied to the neighboring blocks.
[0063] The inter prediction unit (221) can derive a prediction block for the current block based on a reference block (reference sample array) specified by a motion vector on a reference picture. At this time, in order to reduce the amount of motion information transmitted in the inter prediction mode, the motion information can be predicted in units of blocks, subblocks, or samples based on the correlation of motion information between neighboring blocks and the current block. The motion information can include a motion vector and a reference picture index. The motion information can further include inter prediction direction information (L0 prediction, L1 prediction, Bi prediction, etc.). In the case of inter prediction, the neighboring block can include a spatial neighboring block existing in the current picture and a temporal neighboring block existing in the reference picture. The reference picture including the reference block and the reference picture including the temporal neighboring block may be the same or different. The above temporal neighboring blocks may be called collocated reference blocks, collocated CUs (colCUs), etc., and the reference pictures including the temporal neighboring blocks may be called collocated pictures (colPic). For example, the inter prediction unit (221) may construct a motion information candidate list based on the neighboring blocks, and generate information indicating which candidate is used to derive the motion vector and / or reference picture index of the current block. Inter prediction may be performed based on various prediction modes, and for example, in the case of skip mode and merge mode, the inter prediction unit (221) may use the motion information of the neighboring blocks as the motion information of the current block. In the case of skip mode, unlike the merge mode, a residual signal may not be transmitted.In the motion vector prediction (MVP) mode, the motion vector of the surrounding blocks is used as a motion vector predictor, and the motion vector of the current block can be indicated by signaling the motion vector difference.
[0064] The prediction unit (220) can generate a prediction signal based on various prediction methods described below. For example, the prediction unit can apply intra prediction or inter prediction for prediction of a single block, and can also apply intra prediction and inter prediction simultaneously. This can be called combined inter and intra prediction (CIIP) mode. In addition, the prediction unit can be based on an intra block copy (IBC) prediction mode or a palette mode for prediction of a block. The IBC prediction mode or palette mode can be used for content image / video coding such as games, such as screen content coding (SCC). IBC basically performs prediction within the current picture, but can be performed similarly to inter prediction in that it derives a reference block within the current picture. That is, IBC can utilize at least one of the inter prediction techniques described herein. Palette mode can be viewed as an example of intra coding or intra prediction. When the palette mode is applied, sample values within a picture can be signaled based on information about the palette table and palette index. The prediction signal generated through the prediction unit (220) can be used to generate a restoration signal or a residual signal.
[0065] The transform unit (232) can apply a transform technique to the residual signal to generate transform coefficients. For example, the transform technique can include at least one of a Discrete Cosine Transform (DCT), a Discrete Sine Transform (DST), a Karhunen-Loeve Transform (KLT), a Graph-Based Transform (GBT), or a Conditionally Non-linear Transform (CNT). Here, GBT refers to a transform obtained from a graph when the relationship information between pixels is expressed as a graph. CNT refers to a transform obtained based on generating a prediction signal using all previously restored pixels. In addition, the transform process can be applied to a pixel block having a square size and the same size, or can be applied to a block of a non-square variable size.
[0066] The quantization unit (233) quantizes the transform coefficients and transmits them to the entropy encoding unit (240), and the entropy encoding unit (240) can encode the quantized signal (information about the quantized transform coefficients) and output it as a bitstream. The information about the quantized transform coefficients can be called residual information. The quantization unit (233) can rearrange the quantized transform coefficients in a block form into a one-dimensional vector form based on the coefficient scan order, and can also generate information about the quantized transform coefficients based on the quantized transform coefficients in the one-dimensional vector form.
[0067] The entropy encoding unit (240) can perform various encoding methods such as exponential Golomb, context-adaptive variable length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), etc. The entropy encoding unit (240) can also encode information necessary for video / image restoration (e.g., values of syntax elements, etc.) together or separately from quantized transform coefficients.
[0068] Encoded information (e.g., encoded video / image information) can be transmitted or stored in the form of a bitstream in units of NAL (network abstraction layer) units. The video / image information may further include information on various parameter sets, such as an adaptation parameter set (APS), a picture parameter set (PPS), a sequence parameter set (SPS), or a video parameter set (VPS). In addition, the video / image information may further include general constraint information. In the present specification, information and / or syntax elements transmitted / signaled from an encoding device to a decoding device may be included in the video / image information. The video / image information may be encoded through the above-described encoding procedure and included in the bitstream. The bitstream may be transmitted via a network or stored in a digital storage medium. Here, the network may include a broadcasting network and / or a communication network, and the digital storage medium may include various storage media, such as a USB, SD, CD, DVD, Blu-ray, HDD, or SSD. The signal output from the entropy encoding unit (240) may be configured as an internal / external element of the encoding device (200) by a transmitting unit (not shown) and / or a storing unit (not shown), or the transmitting unit may be included in the entropy encoding unit (240).
[0069] The quantized transform coefficients output from the quantization unit (233) can be used to generate a prediction signal. For example, by applying inverse quantization and inverse transformation to the quantized transform coefficients through the inverse quantization unit (234) and the inverse transform unit (235), a residual signal (residual block or residual samples) can be reconstructed. The addition unit (250) can generate a reconstructed signal (reconstructed picture, reconstructed block, reconstructed sample array) by adding the reconstructed residual signal to the prediction signal output from the inter prediction unit (221) or the intra prediction unit (222). When there is no residual for the block to be processed, such as when skip mode is applied, the predicted block can be used as a reconstructed block. The addition unit (250) may be called a reconstructor or a reconstructed block generation unit. The generated restoration signal can be used for intra prediction of the next processing target block within the current picture, and can also be used for inter prediction of the next picture after filtering as described below. Meanwhile, LMCS (luma mapping with chroma scaling) may be applied during the picture encoding and / or restoration process.
[0070] The filtering unit (260) can improve subjective / objective picture quality by applying filtering to the restoration signal. For example, the filtering unit (260) can apply various filtering methods to the restoration picture to generate a modified restoration picture, and store the modified restoration picture in the memory (270), specifically, in the DPB of the memory (270). The various filtering methods can include deblocking filtering, sample adaptive offset, adaptive loop filter, bilateral filter, etc. The filtering unit (260) can generate various information regarding filtering and transmit it to the entropy encoding unit (240). The information regarding filtering can be encoded by the entropy encoding unit (240) and output in the form of a bitstream.
[0071] The modified restored picture transmitted to the memory (270) can be used as a reference picture in the inter prediction unit (221). Through this, when inter prediction is applied, the encoding device can avoid prediction mismatch between the encoding device (200) and the decoding device, and can also improve encoding efficiency.
[0072] The DPB of the memory (270) can store the modified restored picture to be used as a reference picture in the inter prediction unit (221). The memory (270) can store motion information of a block from which motion information is derived (or encoded) within the current picture and / or motion information of blocks within a picture that has already been restored. The stored motion information can be transferred to the inter prediction unit (221) to be used as motion information of a spatial neighboring block or motion information of a temporal neighboring block. The memory (270) can store restored samples of restored blocks within the current picture and transfer them to the intra prediction unit (222).
[0073] FIG. 3 is a schematic block diagram of a decoding device to which an embodiment of the present disclosure can be applied and in which decoding of a video / image signal is performed.
[0074] Referring to FIG. 3, the decoding device (300) may be configured to include an entropy decoder (310), a residual processor (320), a predictor (330), an adder (340), a filter (350), and a memory (360). The predictor (330) may include an inter-prediction unit (332) and an intra-prediction unit (331). The residual processor (320) may include a dequantizer (321) and an inverse transformer (321).
[0075] The entropy decoding unit (310), residual processing unit (320), prediction unit (330), addition unit (340), and filtering unit (350) described above may be configured by a single hardware component (e.g., a decoding device chipset or processor) depending on the embodiment. In addition, the memory (360) may include a decoded picture buffer (DPB) and may be configured by a digital storage medium. The hardware component may further include the memory (360) as an internal / external component.
[0076] When a bitstream including video / image information is input, the decoding device (300) can restore the image corresponding to the process in which the video / image information is processed in the encoding device of FIG. 2. For example, the decoding device (300) can derive units / blocks based on block division-related information obtained from the bitstream. The decoding device (300) can perform decoding using a processing unit applied in the encoding device. Accordingly, the processing unit for decoding may be a coding unit, and the coding unit may be divided from a coding tree unit or a maximum coding unit according to a quad tree structure, a binary tree structure, and / or a ternary tree structure. One or more transform units may be derived from the coding unit. Then, the restored image signal decoded and output by the decoding device (300) can be reproduced through a reproduction device.
[0077] The decoding device (300) can receive a signal output from the encoding device of FIG. 2 in the form of a bitstream, and the received signal can be decoded through the entropy decoding unit (310). For example, the entropy decoding unit (310) can parse the bitstream to derive information (e.g., video / image information) necessary for image restoration (or picture restoration). The video / image information may further include information on various parameter sets, such as an adaptation parameter set (APS), a picture parameter set (PPS), a sequence parameter set (SPS), or a video parameter set (VPS). In addition, the video / image information may further include general constraint information. The decoding device can decode the picture further based on the information on the parameter set and / or the general constraint information. The signaling / received information and / or syntax elements described later in this specification can be decoded through the decoding procedure and obtained from the bitstream. For example, the entropy decoding unit (310) can decode information in a bitstream based on a coding method such as exponential Golomb coding, CAVLC, or CABAC, and output the values of syntax elements required for image restoration and the quantized values of transform coefficients for residuals. More specifically, the CABAC entropy decoding method receives a bin corresponding to each syntax element in the bitstream, determines a context model using information of the syntax element to be decoded and decoding information of the surrounding and decoding target blocks or information of symbols / bins decoded in the previous step, and predicts the occurrence probability of the bin according to the determined context model to perform arithmetic decoding of the bin to generate a symbol corresponding to the value of each syntax element.At this time, the CABAC entropy decoding method can update the context model using the information of the decoded symbol / bin for the context model of the next symbol / bin after determining the context model. Information regarding prediction among the information decoded by the entropy decoding unit (310) is provided to the prediction unit (inter prediction unit (332) and intra prediction unit (331)), and residual values on which entropy decoding is performed by the entropy decoding unit (310), i.e., quantized transform coefficients and related parameter information, can be input to the residual processing unit (320). The residual processing unit (320) can derive a residual signal (residual block, residual samples, residual sample array). In addition, information regarding filtering among the information decoded by the entropy decoding unit (310) can be provided to the filtering unit (350). Meanwhile, a receiving unit (not shown) that receives a signal output from an encoding device may be further configured as an internal / external element of a decoding device (300), or the receiving unit may be a component of an entropy decoding unit (310).
[0078] Meanwhile, a decoding device according to the present specification may be called a video / video / picture decoding device, and the decoding device may be divided into an information decoding device (video / video / picture information decoding device) and a sample decoding device (video / video / picture sample decoding device). The information decoding device may include the entropy decoding unit (310), and the sample decoding device may include at least one of the inverse quantization unit (321), the inverse transformation unit (322), the addition unit (340), the filtering unit (350), the memory (360), the inter prediction unit (332), and the intra prediction unit (331).
[0079] The inverse quantization unit (321) can inverse quantize the quantized transform coefficients and output the transform coefficients. The inverse quantization unit (321) can rearrange the quantized transform coefficients into a two-dimensional block form. In this case, the rearrangement can be performed based on the coefficient scanning order performed in the encoding device. The inverse quantization unit (321) can perform inverse quantization on the quantized transform coefficients using quantization parameters (e.g., quantization step size information) and obtain transform coefficients.
[0080] In the inverse transform unit (322), the transform coefficients are inversely transformed to obtain a residual signal (residual block, residual sample array).
[0081] The prediction unit (320) can perform a prediction on the current block and generate a predicted block including prediction samples for the current block. The prediction unit (320) can determine whether intra-prediction or inter-prediction is applied to the current block based on the information regarding the prediction output from the entropy decoding unit (310), and can determine a specific intra / inter-prediction mode.
[0082] The prediction unit (320) can generate a prediction signal based on various prediction methods described below. For example, the prediction unit (320) can apply intra prediction or inter prediction for prediction of a single block, and can also apply intra prediction and inter prediction simultaneously. This can be called combined inter and intra prediction (CIIP) mode. In addition, the prediction unit can be based on an intra block copy (IBC) prediction mode or a palette mode for prediction of a block. The IBC prediction mode or palette mode can be used for content image / video coding such as games, such as screen content coding (SCC). IBC basically performs prediction within the current picture, but can be performed similarly to inter prediction in that it derives a reference block within the current picture. That is, IBC can utilize at least one of the inter prediction techniques described herein. Palette mode can be viewed as an example of intra coding or intra prediction. When palette mode is applied, information about the palette table and palette index may be included and signaled in the video / image information.
[0083] The intra prediction unit (331) can predict the current block by referring to samples within the current picture. The referenced samples may be located in the neighborhood of the current block, or may be located a certain distance away from the current block, depending on the prediction mode. In intra prediction, the prediction modes may include one or more non-directional modes and multiple directional modes. The intra prediction unit (331) may also determine the prediction mode applied to the current block by using the prediction mode applied to the neighboring blocks.
[0084] The inter prediction unit (332) can derive a prediction block for the current block based on a reference block (reference sample array) specified by a motion vector on a reference picture. At this time, in order to reduce the amount of motion information transmitted in the inter prediction mode, the motion information can be predicted in units of blocks, subblocks, or samples based on the correlation of the motion information between the neighboring blocks and the current block. The motion information can include a motion vector and a reference picture index. The motion information can further include inter prediction direction information (L0 prediction, L1 prediction, Bi prediction, etc.). In the case of inter prediction, the neighboring blocks can include spatial neighboring blocks existing in the current picture and temporal neighboring blocks existing in the reference picture. For example, the inter prediction unit (332) can construct a motion information candidate list based on the neighboring blocks, and derive the motion vector and / or reference picture index of the current block based on the received candidate selection information. Inter prediction can be performed based on various prediction modes, and information about the prediction can include information indicating an inter prediction mode for the current block.
[0085] The addition unit (340) can generate a restoration signal (restored picture, restoration block, restoration sample array) by adding the acquired residual signal to the prediction signal (prediction block, prediction sample array) output from the prediction unit (including the inter-prediction unit (332) and / or intra-prediction unit (331)). When there is no residual for the block to be processed, such as when skip mode is applied, the prediction block can be used as the restoration block.
[0086] The addition unit (340) may be referred to as a restoration unit or restoration block generation unit. The generated restoration signal may be used for intra prediction of the next processing target block within the current picture, may be output after filtering as described below, or may be used for inter prediction of the next picture. Meanwhile, LMCS (luma mapping with chroma scaling) may be applied during the picture decoding process.
[0087] The filtering unit (350) can improve subjective / objective image quality by applying filtering to the restored signal. For example, the filtering unit (350) can apply various filtering methods to the restored picture to generate a modified restored picture, and transmit the modified restored picture to the memory (360), specifically, to the DPB of the memory (360). The various filtering methods can include deblocking filtering, sample adaptive offset, adaptive loop filter, bilateral filter, etc.
[0088] The (corrected) reconstructed picture stored in the DPB of the memory (360) can be used as a reference picture in the inter prediction unit (332). The memory (360) can store motion information of a block from which motion information is derived (or decoded) in the current picture and / or motion information of blocks in a picture that has already been reconstructed. The stored motion information can be transferred to the inter prediction unit (332) to be used as motion information of a spatial neighboring block or motion information of a temporal neighboring block. The memory (360) can store reconstructed samples of reconstructed blocks in the current picture and transfer them to the intra prediction unit (331).
[0089] In this specification, the embodiments described in the filtering unit (260), the inter prediction unit (221), and the intra prediction unit (222) of the encoding device (200) can be applied to the filtering unit (350), the inter prediction unit (332), and the intra prediction unit (331) of the decoding device (300) in the same or corresponding manner, respectively.
[0090] FIG. 4 illustrates an image decoding method performed by a decoding device (300) as an embodiment according to the present disclosure.
[0091] Referring to FIG. 4, the current block can be divided into multiple sub-blocks (S400).
[0092] According to the present disclosure, a current block may be a coding block or a transform block. Each of the plurality of sub-blocks may be a coding block or a transform block having at least one of a width or a height smaller than that of the current block. The partition depth of each sub-block may be greater than that of the current block. For example, if the partition depth of the current block is N, the partition depth of each sub-block may be (N+1). The plurality of sub-blocks may be square or rectangular. At least one of the plurality of sub-blocks may have a geometric shape. In the present disclosure, the term "sub-block" may be replaced with terms such as "sub-block" or "partition."
[0093] The current block may be divided based on one or more dividing lines. The dividing lines may include at least one of a vertical line, a horizontal line, or a dividing line having a predetermined angle. At least one of the dividing lines may pass through the center of the current block. Alternatively, the dividing line may not pass through the center of the current block.
[0094] The above splitting may be performed based on any one of the types of pre-defined block splitting. The types of the block splitting may include at least one of quad splitting, binary splitting, and ternary splitting. The quad splitting may be a type that splits one coding block into four sub-blocks. Here, the width and height of the four sub-blocks may be half of the width and height of the coding block, respectively. The binary splitting may be a type that splits one coding block into two sub-blocks. The ternary splitting may be a type that splits one coding block into three sub-blocks. The image decoding method according to the present disclosure may use tree-based block splitting.
[0095] Splitting information for the above block splitting may be signaled. The splitting information may include at least one of information indicating whether a block is split, information indicating whether a block is split into four sub-blocks, information indicating whether a block is split into two sub-blocks, or information indicating a splitting direction.
[0096] For example, information (split_cu_flag) regarding whether the current block is split can be signaled. If split_cu_flag is false (or 0), this may indicate that the current block is not split. In this case, decoding may be performed based on the shape and / or size of the current block without additional block splitting for the current block. On the other hand, if split_cu_flag is true (or 1), this may indicate that the current block is split into sub-blocks using additional block splitting. The additional block splitting may be performed based on quad splitting, binary splitting, or ternary splitting. Alternatively, the additional block splitting may be performed based on asymmetric binary splitting.
[0097] When split_cu_flag is true, split_qt_flag may be signaled during the signaling process for the type of additional block split of the current block. split_qt_flag may indicate whether the current block is split based on quad splitting. When split_qt_flag is true (or 1), the current block may be split into four sub-blocks. On the other hand, when split_qt_flag is false (or 0), the current block may not be split into four sub-blocks, and the current block may be split into sub-blocks using other block splitting methods. However, split_qt_flag may be signaled only if the current block satisfies all the conditions for allowing quad splitting, otherwise split_qt_flag may be set to false.
[0098] If split_qt_flag is false, information for a block split other than quad splitting for the current block can be signaled. At least one of mtt_split_cu_vertical_flag or mtt_split_cu_binary_flag can be signaled. mtt_split_cu_vertical_flag can indicate the splitting direction of the current block. If mtt_split_cu_vertical_flag is true (or 1), the current block can be split vertically, and if mtt_split_cu_vertical_flag is false (or 0), the current block can be split horizontally. mtt_split_cu_binary_flag can indicate whether the current block is split based on binary splitting. If mtt_split_cu_binary_flag is true (or 1), the current block can be split into two sub-blocks, and if mtt_split_cu_binary_flag is false (or 0), the current block can be split into three sub-blocks.
[0099] Therefore, if both mtt_split_cu_vertical_flag and mtt_split_cu_binary_flag are true, the current block can be split into two sub-blocks vertically. If mtt_split_cu_vertical_flag is true and mtt_split_cu_binary_flag is false, the current block can be split into three sub-blocks vertically. If mtt_split_cu_vertical_flag is false and mtt_split_cu_binary_flag is true, the current block can be split into two sub-blocks horizontally. If both mtt_split_cu_vertical_flag and mtt_split_cu_binary_flag are false, the current block can be split into three sub-blocks horizontally.
[0100] The signaling method of the above-described segmentation information can be applied to one coding block, and can be recursively applied to multiple sub-blocks segmented from one coding block.
[0101] Referring to FIG. 4, multiple sub-blocks can be decoded based on a predetermined decoding order (S410).
[0102] The decoding order of sub-blocks within the current block may be determined based on one or more pre-defined scan order candidates. The one or more scan order candidates may include at least one of a horizontal Z-scan order or a vertical Z-scan order.
[0103] Assume that the current block is divided into four sub-blocks based on quad partitioning. In this case, the four sub-blocks can be sequentially decoded according to a horizontal Z-scan order. Here, the horizontal Z-scan order may mean an order in which decoding is performed in the order of an upper-left sub-block, an upper-right sub-block, a lower-left sub-block, and a lower-right sub-block of the four sub-blocks obtained through quad partitioning. Alternatively, the four sub-blocks may be sequentially decoded according to a vertical Z-scan order. Here, the vertical Z-scan order may mean an order in which decoding is performed in the order of an upper-left sub-block, a lower-left sub-block, an upper-right sub-block, and a lower-right sub-block of the four sub-blocks obtained through quad partitioning.
[0104] Any one or more scan order candidates available for the current block may be optionally used.
[0105] The number and / or type of one or more scan order candidates available to the current block can be derived based on the type of block partitioning of the current block.
[0106] For example, if the current block is partitioned based on a quad partition, the number of one or more scan order candidates available to the current block may be 2 or more. On the other hand, if the current block is not partitioned based on a quad partition, the number of one or more scan order candidates available to the current block may be 1. Alternatively, if the current block is partitioned based on a quad partition, the one or more scan order candidates available to the current block may include a horizontal Z-scan order and a vertical Z-scan order. On the other hand, if the current block is not partitioned based on a quad partition, the one or more scan order candidates available to the current block may include a horizontal Z-scan order but not a vertical Z-scan order.
[0107] Index information indicating one or more scan order candidates may be explicitly signaled.
[0108] For example, the current block can be divided into four sub-blocks based on quad partitioning, and index information indicating either a horizontal Z-scan order or a vertical Z-scan order for the four sub-blocks can be signaled.
[0109] Specifically, if the current block is split into four sub-blocks (i.e., split_cu_flag is true and split_qt_flag is true), qt_scan_flag may be signaled. That is, qt_scan_flag may be index information for selecting either the horizontal Z-scan order or the vertical Z-scan order when the current block is split into four sub-blocks based on quad partitioning.
[0110] When qt_scan_flag is true (or 1), the four sub-blocks can be decoded sequentially according to the horizontal Z-scan order. On the other hand, when qt_scan_flag is false (or 0), the four sub-blocks can be decoded sequentially according to the vertical Z-scan order. Conversely, when qt_scan_flag is true, the four sub-blocks can be decoded sequentially according to the vertical Z-scan order, and when qt_scan_flag is false, the four sub-blocks can be decoded sequentially according to the horizontal Z-scan order.
[0111] Tables 1 and 2 below show the syntax and semantics, respectively, corresponding to the aforementioned embodiments. As shown in Table 1, if split_qt_flag indicates that the current block is split into four sub-blocks (i.e., split_qt_flag is true), qt_scan_flag can be signaled for the current block.
[0112] coding_tree( x0, y0, cbWidth, cbHeight, qgOnY, qgOnC, cbSubdiv, cqtDepth, mttDepth, depthOffset, partIdx, treeTypeCurr, modeTypeCurr ) {Descriptorif( ( allowSplitBtVer | | allowSplitBtHor | | allowSplitTtVer | | allowSplitTtHor | | allowSplitQT ) && ( x0 + cbWidth <= pic_width_in_luma_samples ) && ( y0 + cbHeight <= pic_height_in_luma_samples ) )split_cu_flagae(v)if( cu_qp_delta_enabled_flag && qgOnY && cbSubdiv <= CuQpDeltaSubdiv ) {IsCuQpDeltaCoded = 0CuQpDeltaVal = 0CuQgTopLeftX = x0CuQgTopLeftY = y0}if( cu_chroma_qp_offset_enabled_flag && qgOnC && cbSubdiv <= CuChromaQpOffsetSubdiv ) {IsCuChromaQpOffsetCoded = 0CuQpOffset Cb = 0CuQpOffset Cr = 0CuQpOffset CbCr= 0}if( split_cu_flag ) {if( ( allowSplitBtVer | | allowSplitBtHor | | allowSplitTtVer | | allowSplitTtHor ) && allowSplitQT )split_qt_flagae(v)if( split_qt_flag ) {qt_scan_flagae(v)}if( !split_qt_flag ) {if( ( allowSplitBtHor | | allowSplitTtHor ) && ( allowSplitBtVer | | allowSplitTtVer ) )mtt_split_cu_vertical_flagae(v)if( ( allowSplitBtVer && allowSplitTtVer && mtt_split_cu_vertical_flag ) | | ( allowSplitBtHor && allowSplitTtHor && !mtt_split_cu_vertical_flag ) )mtt_split_cu_binary_flagae(v)}if( modeTypeCondition = = 1 )modeType = MODE_TYPE_INTRAelse if( modeTypeCondition = = 2 ) {mode_constraint_flagae(v)modeType = mode_constraint_flag ? MODE_TYPE_INTRA : MODE_TYPE_INTER} elsemodeType = modeTypeCurrtreeType = ( modeType = = MODE_TYPE_INTRA ) ? DUAL_TREE_LUMA : treeTypeCurrif( !split_qt_flag ) {if( MttSplitMode[ x0 ][ y0 ][ mttDepth ] = = SPLIT_BT_VER ) {depthOffset += ( x0 + cbWidth > pic_width_in_luma_samples ) ? 1 : 0x1 = x0 + ( cbWidth / 2 )coding_tree( x0, y0, cbWidth / 2,cbHeight, qgOnY, qgOnC, cbSubdiv + 1, cqtDepth, mttDepth + 1, depthOffset, 0, treeType, modeType )if( x1 < pic_width_in_luma_samples )coding_tree( x1, y0, cbWidth / 2, cbHeightY, qgOnY, qgOnC, cbSubdiv + 1, cqtDepth, mttDepth + 1, depthOffset, 1, treeType, modeType )} else if( MttSplitMode[ x0 ][ y0 ][ mttDepth ] = = SPLIT_BT_HOR ) {depthOffset += ( y0 + cbHeight > pic_height_in_luma_samples ) ? 1 : 0y1 = y0 + ( cbHeight / 2 )coding_tree( x0, y0, cbWidth, cbHeight / 2, qgOnY, qgOnC, cbSubdiv + 1, cqtDepth, mttDepth + 1, depthOffset, 0, treeType, modeType )if( y1 < pic_height_in_luma_samples )coding_tree( x0, y1, cbWidth, cbHeight / 2, qgOnY, qgOnC, cbSubdiv + 1, cqtDepth, mttDepth + 1, depthOffset, 1, treeType, modeType )} else if( MttSplitMode[ x0 ][ y0 ][ mttDepth ] = = SPLIT_TT_VER ) {x1 = x0 + ( cbWidth / 4 )x2 = x0 + ( 3 * cbWidth / 4 )qgNextOnY = qgOnY && ( cbSubdiv + 2 <= CuQpDeltaSubdiv )qgNextOnC = qgOnC && ( cbSubdiv + 2 <= CuChromaQpOffsetSubdiv )coding_tree( x0, y0,cbWidth / 4, cbHeight, qgNextOnY, qgNextOnC, cbSubdiv + 2, cqtDepth, mttDepth + 1, depthOffset, 0, treeType, modeType )coding_tree( x1, y0, cbWidth / 2, cbHeight, qgNextOnY, qgNextOnC, cbSubdiv + 1, cqtDepth, mttDepth + 1, depthOffset, 1, treeType, modeType )coding_tree( x2, y0, cbWidth / 4, cbHeight, qgNextOnY, qgNextOnC, cbSubdiv + 2, cqtDepth, mttDepth + 1, depthOffset, 2, treeType, modeType )} else { / * SPLIT_TT_HOR * / y1 = y0 + ( cbHeight / 4 )y2 = y0 + ( 3 * cbHeight / 4 )qgNextOnY = qgOnY && ( cbSubdiv + 2 <= CuQpDeltaSubdiv )qgNextOnC = qgOnC && ( cbSubdiv + 2 <= CuChromaQpOffsetSubdiv )coding_tree( x0, y0, cbWidth, cbHeight / 4, qgNextOnY, qgNextOnC, cbSubdiv + 2, cqtDepth, mttDepth + 1, depthOffset, 0, treeType, modeType )coding_tree( x0, y1, cbWidth, cbHeight / 2, qgNextOnY, qgNextOnC, cbSubdiv + 1, cqtDepth, mttDepth + 1, depthOffset, 1, treeType, modeType )coding_tree( x0, y2, cbWidth, cbHeight / 4, qgNextOnY, qgNextOnC, cbSubdiv + 2, cqtDepth, mttDepth + 1, depthOffset, 2,treeType, modeType )}} else {x1 = x0 + ( cbWidth / 2 )y1 = y0 + ( cbHeight / 2 )coding_tree( x0, y0, cbWidth / 2, cbHeight / 2, qgOnY, qgOnC, cbSubdiv + 2, cqtDepth + 1, 0, 0, 0, treeType, modeType )if( x1 < pic_width_in_luma_samples )coding_tree( x1, y0, cbWidth / 2, cbHeight / 2, qgOnY, qgOnC, cbSubdiv + 2, cqtDepth + 1, 0, 0, 1, treeType, modeType )if( y1 < pic_height_in_luma_samples )coding_tree( x0, y1, cbWidth / 2, cbHeight / 2, qgOnY, qgOnC, cbSubdiv + 2, cqtDepth + 1, 0, 0, 2, treeType, modeType )if( y1 < pic_height_in_luma_samples && x1 < pic_width_in_luma_samples )coding_tree( x1, y1, cbWidth / 2, cbHeight / 2, qgOnY, qgOnC, cbSubdiv + 2, cqtDepth + 1, 0, 0, 3, treeType, modeType )}if( modeTypeCur = = MODE_TYPE_ALL && modeType = = MODE_TYPE_INTRA )coding_tree( x0, y0, cbWidth, cbHeight, 0, qgOnC, cbSubdiv, cqtDepth, mttDepth, 0, 0, DUAL_TREE_CHROMA , modeType )} elsecoding_unit( x0, y0, cbWidth, cbHeight, cqtDepth, treeTypeCurr , modeTypeCurr )},
[0113] qt_scan_flagspecifies whether four coding units which are split into quadtree partitioning are scanned with horizontal Z-scan order or vertical Z-scan order. qt_scan_flag equal to 1 specifies the coding units are scanned with horizontal Z-scan order. qt_scan_flag equal to 0 specifies the coding unists are scanned with vertical Z-scan order.
[0114] Sub-blocks within the current block can be decoded in a decoding order according to the above-selected scan order candidate.
[0115] For example, the decoding process for each sub-block may further include a block segmentation process for the corresponding sub-block. Additional segmentation information for block segmentation of the corresponding sub-block may be signaled, similar to the signaling method for segmentation information described above.
[0116] The use / availability of the adaptive scan order described above can be signaled using high level syntax.
[0117] For example, the use / availability of an adaptive scan order can be signaled via a sequence parameter set (SPS). Table 3 is a syntax table for signaling the use / availability of an adaptive scan order via a sequence parameter set. In Table 3, sps_adaptive_scan_order_flag can indicate the use / availability of an adaptive scan order within a sequence that currently uses sps_seq_parameter_set_id among multiple sequences belonging to a bitstream. For example, when sps_adaptive_scan_order_flag is true (or 1), an adaptive scan order can be used or available within a sequence that currently uses sps_seq_parameter_set_id among multiple sequences belonging to a bitstream. On the other hand, if sps_adaptive_scan_order_flag is false (or 0), the adaptive scan order may not be used or available in the sequence that currently uses the sps_seq_parameter_set_id among the multiple sequences in the bitstream.
[0118] seq_parameter_set_rbsp( ) {Descriptorsps_seq_parameter_set_idu(4)sps_video_parameter_set_idu(4)...sps_adaptive_scan_order_flagu(1)...rbsp_trailing_bits( )}
[0119] For example, the use / availability of the adaptive scan order can be signaled via a picture parameter set (PPS). Table 4 is a syntax table for signaling the use / availability of the adaptive scan order via a picture parameter set. In Table 4, pps_adaptive_scan_order_flag can indicate whether the adaptive scan order is used / available within a picture that currently uses the pps_seq_parameter_set_id among multiple pictures belonging to the bitstream. For example, when pps_adaptive_scan_order_flag is true (or 1), the adaptive scan order can be used or available within a picture that currently uses the pps_seq_parameter_set_id among multiple pictures belonging to the bitstream. On the other hand, if pps_adaptive_scan_order_flag is false (or 0), the adaptive scan order may not be used or available in the picture that currently uses the pps_seq_parameter_set_id among the multiple pictures in the bitstream.
[0120] pic_parameter_set_rbsp( ) {Descriptorpps_pic_parameter_set_idue(v)pps_seq_parameter_set_idu(4)...pps_adaptive_scan_order_flagu(1)...rbsp_trailing_bits( )}
[0121] For example, the use / availability of the adaptive scan order can be signaled via the picture header (PH). Table 5 is a syntax table for signaling the use / availability of the adaptive scan order via the picture header. In Table 5, ph_adaptive_scan_order_flag can indicate whether the adaptive scan order is used / available in the current picture. For example, if ph_adaptive_scan_order_flag is true (or 1), the adaptive scan order may be used or available in the current picture. On the other hand, if ph_adaptive_scan_order_flag is false (or 0), the adaptive scan order may not be used or available in the current picture.
[0122] ph_adaptive_scan_order_flag can be signaled when sps_adaptive_scan_order_flag is true. If sps_adaptive_scan_order is false, ph_adaptive_scan_order_flag is not signaled and can be set to false.
[0123] picture_header_structure() {Descriptor...ph_pic_parameter_set_idue(v)ph_pic_order_cnt_lsbu(v)...if( sps_adaptive _scan_order_flag ) {ph_adaptive_scan_order_flagu(1)}...rbsp_trailing_bits( )}
[0124] The high-level syntax for signaling the use / availability of the above adaptive scan order is not limited to SPS, PPS, or PH. For example, the high-level syntax may be signaled at the level of at least one of Tile, Slice, or CTU row / column.
[0125] Index information (qt_scan_flag) indicating one or more of the scan order candidates described above can be signaled based on at least one of the above higher level syntaxes.
[0126] For example, if sps_adaptive_scan_order_flag is true, qt_scan_flag may be signaled via the bitstream, otherwise qt_scan_flag may not be signaled via the bitstream. If pps_adaptive_scan_order_flag is true, qt_scan_flag may be signaled via the bitstream, otherwise qt_scan_flag may not be signaled via the bitstream. If ph_adaptive_scan_order_flag is true, qt_scan_flag may be signaled via the bitstream, otherwise qt_scan_flag may not be signaled via the bitstream.
[0127] qt_scan_flag can be signaled based on split_qt_flag, which indicates whether the current block is split based on quad partitioning.
[0128] For example, if split_qt_flag is true, qt_scan_flag may be signaled via the bitstream, otherwise, qt_scan_flag may not be signaled via the bitstream.
[0129] qt_scan_flag can be signaled based on at least one of the higher-level syntaxes described above and the split_qt_flag for the current block.
[0130] For example, if split_qt_flag is true and sps_adaptive_scan_order_flag is true, qt_scan_flag may be signaled via the bitstream. Conversely, if at least one of split_qt_flag and sps_adaptive_scan_order_flag is false, qt_scan_flag may not be signaled via the bitstream.
[0131] Alternatively, if split_qt_flag is true and pps_adaptive_scan_order_flag is true, qt_scan_flag may be signaled via the bitstream. Conversely, if at least one of split_qt_flag and pps_adaptive_scan_order_flag is false, qt_scan_flag may not be signaled via the bitstream.
[0132] Alternatively, as shown in Table 6, if split_qt_flag is true and ph_adaptive_scan_order_flag is true, qt_scan_flag may be signaled via the bitstream. Conversely, if at least one of split_qt_flag and ph_adaptive_scan_order_flag is false, qt_scan_flag may not be signaled via the bitstream.
[0133] coding_tree( x0, y0, cbWidth, cbHeight, qgOnY, qgOnC, cbSubdiv, cqtDepth, mttDepth, depthOffset, partIdx, treeTypeCurr, modeTypeCurr ) {Descriptor...if( split_cu_flag ) {if( ( allowSplitBtVer | | allowSplitBtHor | | allowSplitTtVer | | allowSplitTtHor ) && allowSplitQT )split_qt_flagae(v)if( split_qt_flag && ph_adaptive_scan_order_flag ) {qt_scan_flagae(v)}...}}
[0134] A syntax indicating whether an adaptive scan order is used in a coding unit may be additionally signaled. The syntax indicating whether an adaptive scan order is used in a coding unit may be expressed as cu_adaptive_scan_order_flag.
[0135] For example, if cu_adaptive_scan_order_flag is true (or 1), an adaptive scan order may be used for the current block. In this case, index information indicating one or more of the scan order candidates described above may be signaled. On the other hand, if cu_adaptive_scan_order_flag is false (or 0), an adaptive scan order may not be used for the current block. In this case, a default scan order (e.g., a horizontal Z-scan order) may be used for the current block. If cu_adaptive_scan_order_flag is not signaled, cu_adaptive_scan_order_flag may be driven to false.
[0136] cu_adaptive_scan_order_flag can be signaled based on at least one of the higher level syntaxes described above.
[0137] For example, if sps_adaptive_scan_order_flag is true, cu_adaptive_scan_order_flag may be signaled via the bitstream, otherwise, cu_adaptive_scan_order_flag may not be signaled via the bitstream. If pps_adaptive_scan_order_flag is true, cu_adaptive_scan_order_flag may be signaled via the bitstream, otherwise, cu_adaptive_scan_order_flag may not be signaled via the bitstream. If ph_adaptive_scan_order_flag is true, cu_adaptive_scan_order_flag may be signaled via the bitstream, otherwise, cu_adaptive_scan_order_flag may not be signaled via the bitstream.
[0138] cu_adaptive_scan_order_flag can be signaled based on split_qt_flag, which indicates whether the current block is split based on quad partitioning.
[0139] For example, if split_qt_flag is true, cu_adaptive_scan_order_flag may be signaled via the bitstream, otherwise, cu_adaptive_scan_order_flag may not be signaled via the bitstream.
[0140] cu_adaptive_scan_order_flag can be signaled based on at least one of the higher level syntaxes described above and the split_qt_flag for the current block.
[0141] For example, if split_qt_flag is true and sps_adaptive_scan_order_flag is true, cu_adaptive_scan_order_flag may be signaled via the bitstream. Conversely, if at least one of split_qt_flag and sps_adaptive_scan_order_flag is false, cu_adaptive_scan_order_flag may not be signaled via the bitstream. If split_qt_flag is true and pps_adaptive_scan_order_flag is true, cu_adaptive_scan_order_flag may be signaled via the bitstream. Conversely, if at least one of split_qt_flag and pps_adaptive_scan_order_flag is false, cu_adaptive_scan_order_flag may not be signaled via the bitstream. If split_qt_flag is true and ph_adaptive_scan_order_flag is true, cu_adaptive_scan_order_flag may be signaled via the bitstream. Conversely, if at least one of split_qt_flag and ph_adaptive_scan_order_flag is false, cu_adaptive_scan_order_flag may not be signaled via the bitstream.
[0142] As discussed above, the decoding process of each sub-block may include a block splitting process for the corresponding sub-block. In this case, at least one of qt_scan_flag or cu_adaptive_scan_order_flag may be signaled together with splitting information for block splitting at the node of the corresponding sub-block. Accordingly, when the current block is split into a plurality of first sub-blocks and the first sub-blocks are further split into a plurality of second sub-blocks, the decoding order of the first sub-blocks within the current block may be different from the decoding order of the second sub-blocks within the first sub-block. Here, when the splitting depth of the current block is N, the splitting depth of the first sub-block may be (N+1), and the splitting depth of the second sub-block may be (N+2).
[0143] The current picture can be divided into multiple top-level block units (or coding tree units, CTUs), and an adaptive decoding order can be applied to the multiple top-level block units, which will be examined in detail with reference to FIGS. 5 to 7 below.
[0144] Figure 5 illustrates a decoding order according to the raster scan order for multiple CTUs within one picture.
[0145] As illustrated in FIG. 5, decoding is performed in the order of the first CTU column to the last CTU column within a picture, and decoding can be performed in the order of the leftmost CTU to the rightmost CTU within each CTU column. This can be defined as a decoding order according to the raster scan order. In other words, it can mean a scan order in which decoding is performed for all CTUs included in the first CTU column, and then the CTUs included in the second CTU column are sequentially decoded.
[0146] Figures 6 and 7 illustrate an example of using an adaptive scan order for multiple CTUs within a single picture. A decoding order that combines a Z scan order and a raster scan order within a pre-defined number of CTU columns can be used.
[0147] Figure 6 illustrates a case where the number of pre-defined CTU columns is two. Referring to Figure 6, the first CTU and the second CTU of the first CTU column can be sequentially decoded, and then the first CTU and the second CTU of the second CTU column can be sequentially decoded according to the Z-scan order. Thereafter, the third CTU and the fourth CTU of the first CTU column can be sequentially decoded according to the raster scan order, and then the third CTU and the fourth CTU of the second CTU column can be sequentially decoded according to the Z-scan order.
[0148] Figure 7 illustrates a case where the number of pre-defined CTU columns is four. Referring to Figure 7, decoding can be performed in units of four CTU columns within a picture in Z-scan order, and then decoding can be performed again in units of four CTU columns in Z-scan order, starting from the CTU column located in the raster scan order.
[0149] In this way, encoding efficiency can be improved by using a decoding order that combines the Z-scan order and the raster scan order within the number of pre-defined CTU columns.
[0150] The number of the above-described CTU columns may be an integer that is a multiple of 2. In addition, the number of the above-described CTU columns may be a fixed value pre-defined in the encoding device and the decoding device. Alternatively, information for specifying the number of the CTU columns may be separately signaled. The information may be signaled at the level of at least one of a sequence parameter set, a picture parameter set, a picture header, or a slice header. For example, information signaled to use a decoding order that combines a Z scan order and a raster scan order may be as shown in Table 7 below.
[0151] seq_parameter_set_rbsp( ) {Descriptorsps_seq_parameter_set_idu(4)sps_video_parameter_set_idu(4)...sps_adaptive_ctu_scan_order_flagu(1)if ( sps_adaptive_ctu_scan_order_flag ) {sps_num_of_scan_linesu(v)}...rbsp_trailing_bits( )}
[0152] According to Table 7, a flag indicating whether the CTU-based adaptive scan order is used within the sequence using the current sps_seq_parameter_set_id among multiple sequences within the bitstream may be signaled. The flag may be expressed as sps_adaptive_ctu_scan_order_flag.
[0153] If sps_adpative_ctu_scan_order_flag is true, the CTU-based adaptive scan order may be used for the sequence that currently uses sps_seq_parameter_id among multiple sequences in the bitstream. On the other hand, if sps_adaptive_ctu_scan_order_flag is false, the CTU-based adaptive scan order may not be used for the sequence that currently uses sps_seq_parameter_id among multiple sequences in the bitstream.
[0154] Only when sps_adaptive_ctu_scan_order_flag is true, information about the number of CTU columns using an adaptive scan order per CTU according to the Z-scan order in the sequence (sps_num_of_scan_lines) can be explicitly signaled. The number of CTU columns using an adaptive scan order can be expressed as an integer value that is a multiple of 2. For example, if the value of sps_num_of_scan_lines is N, the number of CTU columns using an adaptive scan order can be derived as (2*N). Alternatively, if the value of sps_num_of_scan_lines is N, the number of CTU columns using an adaptive scan order can be 2 N can be induced.
[0155] FIG. 8 illustrates a schematic configuration of a decoding device (300) that performs an image decoding method according to the present disclosure.
[0156] Referring to FIG. 8, the decoding device (300) may include a memory (360) and at least one processor (800).
[0157] The processor (800) can divide the current block into a plurality of sub-blocks. The division can be performed based on any one of the pre-defined block division types. The block division types can include at least one of quad division, binary division, and ternary division. The binary division can include at least one of symmetric binary division or asymmetric binary division. To this end, the processor (800) can obtain division information indicating any one of the block division types from the bitstream, as described with reference to FIG. 4. The processor (800) can use tree-based block division.
[0158] The processor (800) can decode multiple sub-blocks based on a predetermined decoding order. The decoding order of the sub-blocks within the current block can be determined based on one or more pre-defined scan order candidates, as described with reference to FIG. 4.
[0159] The processor (800) can determine whether to use / avail the adaptive scan order based on high-level syntax. For example, the high-level syntax can be signaled at at least one level among SPS, PPS, or PH, as described with reference to FIG. 4. However, the present invention is not limited thereto, and the high-level syntax can also be signaled at at least one level among Tile, Slice, or CTU row / column.
[0160] Additionally, as described with reference to FIG. 4, the processor (800) may obtain index information (qt_scan_flag) indicating one or more of the scan order candidates described above from the bitstream based on at least one of the above-described high-level syntaxes. Alternatively, the processor (800) may obtain qt_scan_flag from the bitstream based on split_qt_flag indicating whether the current block is split based on quad partitioning. Alternatively, the processor (800) may obtain qt_scan_flag from the bitstream based on at least one of the above-described high-level syntaxes and split_qt_flag for the current block.
[0161] The processor (800) can obtain a syntax (cu_adaptive_scan_order_flag) indicating whether an adaptive scan order is used in a coding unit from the bitstream, as described with reference to FIG. 4.
[0162] The processor (800) can divide the current picture into a plurality of top-level block units (or coding tree units, CTUs) and decode the plurality of top-level block units based on an adaptive decoding order. The adaptive decoding order for the plurality of top-level block units is as described with reference to FIGS. 5 to 7.
[0163] FIG. 9 illustrates an image encoding method performed by an encoding device (200) as an embodiment according to the present disclosure.
[0164] Referring to FIG. 9, the current block can be divided into multiple sub-blocks (S900).
[0165] The above partitioning may be performed based on any one of the types of pre-defined block partitioning. The types of block partitioning may include at least one of quad partitioning, binary partitioning, and ternary partitioning. Here, the binary partitioning may include at least one of symmetric binary partitioning or asymmetric binary partitioning. The image encoding method according to the present disclosure may use tree-based block partitioning.
[0166] Split information for indicating one of the above block split types can be encoded and signaled, and the signaling method of the split information is as described with reference to FIG. 4.
[0167] Referring to FIG. 9, multiple sub-blocks can be encoded based on a predetermined encoding order (S910).
[0168] The encoding order of sub-blocks within the current block may be determined based on one or more pre-defined scan order candidates, wherein the one or more scan order candidates may include at least one of a horizontal Z-scan order or a vertical Z-scan order.
[0169] Any one or more scan order candidates available for the current block may be selectively utilized. The number and / or type of one or more scan order candidates available for the current block may be determined based on the type of block partitioning of the current block.
[0170] Index information indicating one of the scan order candidates selected from one or more scan order candidates may be encoded and signaled. The signaling method of the index information is as described with reference to FIG. 4.
[0171] Sub-blocks within the current block can be encoded in an encoding order based on the selected scan order candidate. For example, the encoding process for each sub-block may further include a block division process for the corresponding sub-block. Division information for block division of the corresponding sub-block may be additionally encoded and signaled, which is the same as the signaling method for the division information described above.
[0172] A high-level syntax regarding the use / availability of the aforementioned adaptive scan order can be encoded and signaled. The high-level syntax is as described with reference to FIG. 4.
[0173] The index information (qt_scan_flag) indicating one or more of the scan order candidates described above may be encoded and signaled based on at least one of the above high-level syntaxes. Alternatively, the qt_scan_flag may be encoded and signaled based on a split_qt_flag indicating whether the current block is split based on a quad partition. Alternatively, the qt_scan_flag may be encoded and signaled based on at least one of the above high-level syntaxes and a split_qt_flag for the current block.
[0174] A syntax (cu_adaptive_scan_order_flag) that determines whether adaptive scan order is used in a coding unit and indicates this can be additionally encoded and signaled.
[0175] For example, if it is determined that the adaptive scan order is used for the current block, cu_adaptive_scan_order_flag may be encoded as true (or 1). If cu_adaptive_scan_order_flag is true, index information indicating one or more scan order candidates may be encoded and signaled. On the other hand, if it is determined that the adaptive scan order is not used for the current block, cu_adaptive_scan_order_flag may be encoded as false (or 0). In this case, the encoding order for the current block may be derived from the default scan order (e.g., horizontal Z-scan order). If cu_adaptive_scan_order_flag is not encoded, cu_adaptive_scan_order_flag may be derived as false.
[0176] cu_adaptive_scan_order_flag can be encoded in the bitstream based on at least one of the higher level syntaxes described above.
[0177] For example, if sps_adaptive_scan_order_flag is true, cu_adaptive_scan_order_flag may be encoded in the bitstream, otherwise, cu_adaptive_scan_order_flag may not be encoded in the bitstream. If pps_adaptive_scan_order_flag is true, cu_adaptive_scan_order_flag may be encoded in the bitstream, otherwise, cu_adaptive_scan_order_flag may not be encoded in the bitstream. If ph_adaptive_scan_order_flag is true, cu_adaptive_scan_order_flag may be encoded in the bitstream, otherwise, cu_adaptive_scan_order_flag may not be encoded in the bitstream.
[0178] cu_adaptive_scan_order_flag can be encoded based on split_qt_flag, which indicates whether the current block is split based on quad partitioning.
[0179] For example, if split_qt_flag is true, cu_adaptive_scan_order_flag may be encoded in the bitstream, otherwise, cu_adaptive_scan_order_flag may not be encoded in the bitstream.
[0180] cu_adaptive_scan_order_flag can be encoded based on at least one of the higher level syntaxes described above and the split_qt_flag for the current block.
[0181] For example, if split_qt_flag is true and sps_adaptive_scan_order_flag is true, cu_adaptive_scan_order_flag may be encoded in the bitstream. On the other hand, if at least one of split_qt_flag and sps_adaptive_scan_order_flag is false, cu_adaptive_scan_order_flag may not be encoded in the bitstream. If split_qt_flag is true and pps_adaptive_scan_order_flag is true, cu_adaptive_scan_order_flag may be encoded in the bitstream. On the other hand, if at least one of split_qt_flag and pps_adaptive_scan_order_flag is false, cu_adaptive_scan_order_flag may not be encoded in the bitstream. If split_qt_flag is true and ph_adaptive_scan_order_flag is true, cu_adaptive_scan_order_flag may be encoded in the bitstream. On the other hand, if at least one of split_qt_flag and ph_adaptive_scan_order_flag is false, cu_adaptive_scan_order_flag may not be encoded in the bitstream.
[0182] As discussed above, the encoding process of each sub-block may include a block splitting process for the corresponding sub-block. In this case, at least one of qt_scan_flag or cu_adaptive_scan_order_flag may be encoded together with splitting information for block splitting in the node of the corresponding sub-block. Accordingly, when the current block is split into a plurality of first sub-blocks and the first sub-blocks are further split into a plurality of second sub-blocks, the encoding order of the first sub-blocks in the current block may be different from the encoding order of the second sub-blocks in the first sub-block. Here, when the splitting depth of the current block is N, the splitting depth of the first sub-block may be (N+1), and the splitting depth of the second sub-block may be (N+2).
[0183] The current picture can be divided into multiple top-level block units (or coding tree units, CTUs), and an adaptive encoding order can be applied to the multiple top-level block units. The adaptive decoding order discussed with reference to FIGS. 5 to 7 can be equally applied to the adaptive encoding order, and thus, a redundant description will be omitted here.
[0184] FIG. 10 illustrates a schematic configuration of an encoding device (200) that performs an image encoding method according to the present disclosure.
[0185] Referring to FIG. 10, the encoding device (200) may include a memory (270) and at least one processor (1000).
[0186] The processor (1000) may divide a current block into a plurality of sub-blocks. The division may be performed based on any one of the pre-defined block division types. The block division types may include at least one of quad division, binary division, and ternary division, and the binary division may include at least one of symmetric binary division or asymmetric binary division. The processor (1000) may encode division information to indicate any one of the block division types. The processor (1000) may use tree-based block division.
[0187] The processor (1000) can encode a plurality of sub-blocks based on a predetermined encoding order. The encoding order of the sub-blocks within the current block can be determined based on one or more pre-defined scan order candidates, as described with reference to FIG. 9.
[0188] The processor (1000) can determine whether to use / avail the adaptive scan order and can encode a high-level syntax based on the determination. For example, the high-level syntax can be encoded at at least one level among SPS, PPS, or PH, as described with reference to FIG. 4. However, the present invention is not limited thereto, and the high-level syntax can also be encoded at at least one level among Tile, Slice, or CTU row / column.
[0189] The processor (1000) may encode index information (qt_scan_flag) indicating one of the above-described one or more scan order candidates into the bitstream based on at least one of the above-described high-level syntaxes. Alternatively, the processor (1000) may encode qt_scan_flag into the bitstream based on split_qt_flag indicating whether the current block is split based on quad partitioning. Alternatively, the processor (1000) may encode qt_scan_flag into the bitstream based on at least one of the above-described high-level syntaxes and split_qt_flag for the current block.
[0190] The processor (1000) may additionally encode syntax (cu_adaptive_scan_order_flag) into the bitstream indicating whether an adaptive scan order is used in the coding unit, as described with reference to FIG. 9.
[0191] The processor (1000) can divide the current picture into a plurality of top-level block units (or coding tree units, CTUs) and encode the plurality of top-level block units based on an adaptive encoding order. The adaptive decoding order discussed with reference to FIGS. 5 to 7 can be equally applied to the adaptive encoding order, and thus, a duplicate description thereof will be omitted here.
[0192] In the embodiments described above, the methods are described based on a flowchart as a series of steps or blocks. However, the embodiments are not limited to the order of the steps, and some steps may occur in a different order or simultaneously with other steps described above. Furthermore, those skilled in the art will understand that the steps depicted in the flowchart are not exclusive, and other steps may be included, or one or more steps in the flowchart may be deleted without affecting the scope of the embodiments of this document.
[0193] The method according to the embodiments of the present document described above can be implemented in the form of software, and the encoding device and / or decoding device according to the present document can be included in a device that performs image processing, such as a TV, a computer, a smartphone, a set-top box, a display device, etc.
[0194] When the embodiments in this document are implemented as software, the above-described method can be implemented as a module (process, function, etc.) that performs the above-described function. The module can be stored in memory and executed by a processor. The memory can be internal or external to the processor and can be connected to the processor by various well-known means. The processor can include an application-specific integrated circuit (ASIC), another chipset, logic circuit, and / or data processing device. The memory can include a read-only memory (ROM), a random access memory (RAM), flash memory, a memory card, a storage medium, and / or other storage devices. That is, the embodiments described in this document can be implemented and performed on a processor, a microprocessor, a controller, or a chip. For example, the functional units illustrated in each drawing can be implemented and performed on a computer, a processor, a microprocessor, a controller, or a chip. In this case, information for implementation (e.g., information on instructions) or an algorithm can be stored on a digital storage medium.
[0195] In addition, the decoding device and encoding device to which the embodiment(s) of the present specification are applied may be included in a multimedia broadcasting transmitting and receiving device, a mobile communication terminal, a home cinema video device, a digital cinema video device, a surveillance camera, a video conversation device, a real-time communication device such as a video communication, a mobile streaming device, a storage medium, a camcorder, a video-on-demand (VoD) service providing device, an OTT (Over the top video) device, an Internet streaming service providing device, a three-dimensional (3D) video device, a VR (virtual reality) device, an AR (argumente reality) device, a video phone video device, a transportation terminal (ex. a vehicle (including an autonomous vehicle) terminal, an airplane terminal, a ship terminal, etc.), and a medical video device, and may be used to process a video signal or a data signal. For example, the OTT (Over the top video) device may include a game console, a Blu-ray player, an Internet-connected TV, a home theater system, a smartphone, a tablet PC, a DVR (Digital Video Recorder), etc.
[0196] In addition, the processing method to which the embodiment(s) of the present specification are applied can be produced in the form of a computer-executable program and can be stored in a computer-readable recording medium. Multimedia data having a data structure according to the embodiment(s) of the present specification can also be stored in a computer-readable recording medium. The computer-readable recording medium includes all types of storage devices and distributed storage devices in which computer-readable data is stored. The computer-readable recording medium can include, for example, a Blu-ray disc (BD), a universal serial bus (USB), a ROM, a PROM, an EPROM, an EEPROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, and an optical data storage device. In addition, the computer-readable recording medium includes a medium implemented in the form of a carrier wave (e.g., transmission via the Internet). In addition, a bitstream generated by an encoding method can be stored in a computer-readable recording medium or transmitted via a wired or wireless communication network.
[0197] Additionally, the embodiments of the present disclosure may be implemented as a computer program product by program code, and the program code may be executed on a computer by the embodiments of the present disclosure. The program code may be stored on a computer-readable carrier.
[0198] FIG. 11 illustrates an example of a content streaming system to which embodiments of the present disclosure can be applied.
[0199] Referring to FIG. 11, a content streaming system to which the embodiment(s) of the present specification are applied may largely include an encoding server, a streaming server, a web server, a media storage, a user device, and a multimedia input device.
[0200] The encoding server compresses content input from multimedia input devices such as smartphones, cameras, and camcorders into digital data, generates a bitstream, and transmits it to the streaming server. Alternatively, if multimedia input devices such as smartphones, cameras, and camcorders directly generate bitstreams, the encoding server may be omitted.
[0201] The above bitstream can be generated by an encoding method or a bitstream generation method to which the embodiment(s) of the present specification are applied, and the streaming server can temporarily store the bitstream during the process of transmitting or receiving the bitstream.
[0202] The streaming server transmits multimedia data to a user device based on a user request via a web server, and the web server acts as an intermediary to inform the user of available services. When a user requests a desired service from the web server, the web server transmits the request to the streaming server, and the streaming server transmits the multimedia data to the user. At this time, the content streaming system may include a separate control server, in which case the control server controls commands / responses between each device within the content streaming system.
[0203] The streaming server can receive content from a media repository and / or an encoding server. For example, when receiving content from the encoding server, the content can be received in real time. In this case, to provide a smooth streaming service, the streaming server can store the bitstream for a certain period of time.
[0204] Examples of the user devices may include mobile phones, smart phones, laptop computers, digital broadcasting terminals, personal digital assistants (PDAs), portable multimedia players (PMPs), navigation devices, slate PCs, tablet PCs, ultrabooks, wearable devices (e.g., smartwatches, smart glasses, HMDs), digital TVs, desktop computers, digital signage, etc.
[0205] Each server within the above content streaming system can be operated as a distributed server, in which case data received from each server can be processed in a distributed manner.
[0206] The claims set forth in this specification may be combined in various ways. For example, the technical features of the method claims of this specification may be combined and implemented as a device, and the technical features of the device claims of this specification may be combined and implemented as a method. Furthermore, the technical features of the method claims and the technical features of the device claims of this specification may be combined and implemented as a device, and the technical features of the method claims and the technical features of the device claims of this specification may be combined and implemented as a method.
Claims
1. A step of dividing a current block into a plurality of sub-blocks based on any one of the types of pre-defined block divisions; and A step of decoding the plurality of sub-blocks based on a predetermined decoding order, The above decoding order is determined based on one or more scan order candidates, A method wherein said one or more scan order candidates comprise at least one of a horizontal Z scan order or a vertical Z scan order.
2. In paragraph 1, A method wherein the decoding order is determined based on index information indicating one of the one or more scan order candidates.
3. In paragraph 2, A method in which the above index information is signaled based on information indicating whether the current block is divided into four sub-blocks.
4. In the third paragraph, the method, A method further comprising the step of obtaining from the bitstream a high-level syntax regarding whether an adaptive scan order is used.
5. In paragraph 4, The above high-level syntax is signaled in at least one of a sequence parameter set, a picture parameter set, or a picture header.
6. In paragraph 5, The above index is a method in which information is signaled based on the above higher level syntax.
7. In paragraph 1, The current block including the current block above is divided into multiple top-level block units, A method in which the above plurality of top-level block units are decoded based on a decoding order that combines a raster scan order and a Z scan order.
8. A step of dividing the current block into a plurality of sub-blocks based on any one of the types of pre-defined block divisions; and Including a step of encoding the plurality of sub-blocks based on a predetermined encoding order, The above encoding order is determined based on one or more scan order candidates, A method wherein said one or more scan order candidates comprise at least one of a horizontal Z scan order or a vertical Z scan order.
9. A computer-readable storage medium storing a bitstream generated by the method according to Article 8.
10. A step of obtaining a bitstream for image information; wherein the bitstream is generated based on a step of dividing a current block into a plurality of sub-blocks based on any one of the types of pre-defined block divisions and a step of encoding the plurality of sub-blocks based on a predetermined encoding order, and Including a step of transmitting data including the above bitstream, The above encoding order is determined based on one or more scan order candidates, A method wherein said one or more scan order candidates comprise at least one of a horizontal Z scan order or a vertical Z scan order.
Citation Information
Patent Citations
Method and apparatus of encoding / decoding image based on intra prediction
KR1020090097689A
Method and device for encoding / decoding video signal by using adaptive scan order
KR1020170118728A
System for providing game service using smart cube
KR1020210135149A
Strut bearing assembly
KR1020240110239A
Image encoding method and device and image decoding method and device
KR102532391B1