Video encoding / decoding method and device, and recording medium on which bitstream is stored
The introduction of a quality indicator SEI message with flags and count information addresses the challenge of managing video quality in high-resolution video, ensuring accurate signaling and interpretation, thereby enhancing the efficiency of video encoding and decoding processes.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- LG ELECTRONICS INC
- Filing Date
- 2026-01-07
- Publication Date
- 2026-07-16
AI Technical Summary
Existing video compression technologies face challenges in efficiently managing and verifying the quality of high-resolution, high-quality video data, particularly in ensuring accurate interpretation and signaling of quality indicators during encoding and decoding processes.
A quality indicator SEI message is introduced to include flags and count information for quality indicators, allowing for clear signaling and verification of quality levels, ensuring consistent interpretation across multiple SEI messages in a Coded Layer Video Sequence.
This approach enables easy verification of single picture quality and average quality improvement, prevents incorrect interpretation of quality indicator messages, and ensures consistent quality management in video encoding and decoding processes.
Smart Images

Figure KR2026000315_16072026_PF_FP_ABST
Abstract
Description
Video encoding / decoding method and device, and a recording medium storing a bitstream
[0001] The present invention relates to a video encoding / decoding method and apparatus, and a recording medium storing a bitstream.
[0002] Recently, the demand for high-resolution, high-quality video, such as HD (High Definition) and UHD (Ultra High Definition) video, has been increasing across various application fields, and accordingly, high-efficiency video compression technologies are being discussed.
[0003] Various image compression technologies exist, such as inter-prediction technology that predicts pixel values in the current picture from previous or subsequent pictures, intra-prediction technology that predicts pixel values in the current picture using pixel information within the current picture, and entropy coding technology that assigns short codes to values with high frequency and long codes to values with low frequency; by utilizing these image compression technologies, image data can be effectively compressed for transmission or storage.
[0004] The present disclosure provides a method and apparatus for configuring a quality indicator SEI (Supplementary Enhancement Information) message that includes quality indicator information.
[0005] The present disclosure provides a method and apparatus for signaling a quality indicator SEI message.
[0006] A video decoding method and apparatus according to the present disclosure receive a bitstream including an encoded video picture and can restore the encoded video picture included in the bitstream. The bitstream may include a quality indicator SEI (Supplementary Enhancement Information) message.
[0007] The above quality indicator SEI message may include a quality indicator definition flag indicating whether information defining the quality indicator is included within the quality indicator SEI message, quality indicator count information indicating the number of quality indicator entries, and a quality indicator component count flag indicating the number of component values signaled for the quality indicator.
[0008] In the image decoding method and apparatus according to the present disclosure, the quality indicator SEI message can be obtained from the network abstraction layer (NAL) unit of the bitstream.
[0009] In the image decoding method and apparatus according to the present disclosure, the quality indicator component number flag can be signaled regardless of the value of the quality indicator definition flag.
[0010] In the image decoding method and apparatus according to the present disclosure, when the number of quality indicator components flag is 0, it may indicate that a single component value is signaled for the quality indicator, and when the number of quality indicator components flag is 1, it may indicate that three component values are signaled for the quality indicator.
[0011] In the image decoding method and apparatus according to the present disclosure, the number of quality indicator components flag can be signaled based on the number of quality indicators information.
[0012] In the image decoding method and apparatus according to the present disclosure, when the value of the quality indicator definition flag is 0, it may indicate that there is no information defining the quality indicator, and when the value of the quality indicator definition flag is 1, it may indicate that there is information defining the quality indicator.
[0013] In the video decoding method and apparatus according to the present disclosure, when a plurality of quality indicator SEI messages are included in a Coded Layer Video Sequence (CLVS), the number of quality indicators included in each of the plurality of quality indicator SEI messages is constrained to have the same value.
[0014] A video encoding method and apparatus according to the present disclosure may receive a video picture to be encoded, encode the received video picture to generate video information regarding the video picture, generate a quality indicator SEI message, and generate a bitstream including the video information and the quality indicator SEI message. The quality indicator SEI message may include a quality indicator definition flag indicating whether information defining the quality indicator is included within the quality indicator SEI message, quality indicator count information indicating the number of quality indicator entries, and a quality indicator component count flag indicating the number of component values signaled for the quality indicator. The quality indicator SEI message may be encoded in a network abstraction layer (NAL) unit of the bitstream.
[0015] A computer-readable digital storage medium is provided that stores encoded video / image information that causes an image decoding method to be performed by a decoding device according to the present disclosure.
[0016] A computer-readable digital storage medium is provided that stores video / image information generated according to the image encoding method according to the present disclosure.
[0017] A method and apparatus for transmitting video / image information generated according to the image encoding method according to the present disclosure are provided.
[0018] According to the present disclosure, by defining a quality indicator SEI message, information regarding the quality of a single picture, the average quality of all pictures included in a single Coded Layer Video Sequence (CLVS), the degree of quality improvement (or reduction) of a single picture, or the degree of average quality improvement of all pictures included in a single CLVS can be easily verified.
[0019] According to the present disclosure, by defining a quality indicator SEI message, the number of signaling repetitions of quality indicator value information signaled based on a quality indicator component count flag can be clearly determined, thereby preventing incorrect information interpretation of the quality indicator SEI message.
[0020] FIG. 1 illustrates a video / image coding system according to the present disclosure.
[0021] FIG. 2 shows a schematic block diagram of an encoding device to which an embodiment of the present disclosure can be applied and to which encoding of a video / image signal is performed.
[0022] FIG. 3 shows a schematic block diagram of a decoding device to which an embodiment of the present disclosure can be applied and to which decoding of a video / image signal is performed.
[0023] FIG. 4 illustrates a method for restoring a video picture performed in a decoding device (300) according to the present disclosure.
[0024] FIG. 5 illustrates a schematic configuration of a decoding device (300) that performs a method for restoring a video picture according to the present disclosure.
[0025] FIG. 6 illustrates a method for generating a bitstream performed in an encoding device (200) according to the present disclosure.
[0026] FIG. 7 illustrates a schematic configuration of an encoding device (200) that performs a method for generating a bitstream according to the present disclosure.
[0027] FIG. 8 shows an example of a content streaming system to which embodiments of the present disclosure can be applied.
[0028] The present disclosure is susceptible to various modifications and may have various 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, and it should be understood that it includes all modifications, equivalents, and substitutions that fall within the spirit and scope of the present disclosure. Similar reference numerals have been used for similar components in the description of each drawing.
[0029] Terms such as "first," "second," etc., may be used to describe various components, but said components should not be limited by said terms. Such terms are used solely for the purpose of distinguishing one component from another. For example, without departing from the scope of the present disclosure, the first component may be named the second component, and similarly, the second component may be named the first component. The term "and / or" includes a combination of a plurality of related described items or any of a plurality of related described items.
[0030] When it is stated that one component is "connected" or "connected" to another component, it should be understood that while it may be directly connected or connected to that other component, there may also be other components in between. On the other hand, when it is stated that one component is "directly connected" or "directly connected" to another component, it should be understood that there are no other components in between.
[0031] The terms used in this application are used merely to describe specific embodiments and are not intended to limit the disclosure. The singular expression includes the plural expression unless the context clearly indicates otherwise. In this application, terms such as “comprising” or “having” are intended to specify the presence of the features, numbers, steps, actions, components, parts, or combinations thereof described in the specification, and should be understood as not precluding the existence or addition of one or more other features, numbers, steps, actions, components, parts, or combinations thereof.
[0032] The present disclosure relates to video / video coding. For example, the methods / embodiments disclosed herein may be applied to methods disclosed in the VVC (versatile video coding) standard. Additionally, the methods / embodiments disclosed herein may be applied to methods disclosed in the EVC (essential video coding) standard, AV1 (AOMedia Video 1) standard, AVS2 (2nd generation of audio video coding standard), or next-generation video / video coding standards (e.g., H.267 or H.268).
[0033] This specification presents various embodiments regarding video / image coding, and unless otherwise noted, said embodiments may be performed in combination with one another.
[0034] In this specification, "video" may refer to a set of images over time. "Picture" generally refers to a unit representing a single image of a specific time period, and "slice" or "tile" is a unit that constitutes a part of a picture in coding. A slice or tile may contain one or more coding tree units (CTUs). A picture may consist of one or more slices or tiles. A tile is a rectangular area composed 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 having 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 having a height specified by the picture parameter set and a width equal to the width of the picture. CTUs within a tile are arranged continuously according to the CTU raster scan, whereas tiles within a picture may be arranged continuously according to the tile's raster scan. A single slice may include an integer number of complete tiles or an integer number of consecutive complete CTU rows within a tile of a picture that can be exclusively contained in a single NAL unit. Meanwhile, a single picture may be divided into two or more subpictures. A subpicture may be a rectangular area of one or more slices within a picture.
[0035] A pixel, or pel, can refer to the smallest unit that constitutes a picture (or image). Additionally, the term 'sample' may be used as a counterpart to pixel. A sample generally represents a pixel or its value, and it may represent only the pixel / pixel value of the luminance (luma) component or only the pixel / pixel value of the chroma component.
[0036] A unit may represent a basic unit of image processing. A unit may include at least one of a specific area of a picture and information related to that area. A unit may include one luminance block and two chroma (e.g., cb, cr) blocks. Depending on the case, the term unit may be used interchangeably with terms such as block or area. In general, an MxN block may include samples (or sample arrays) or a set (or array) of transform coefficients consisting of M columns and N rows.
[0037] In this specification, "A or B" may mean "only A," "only B," or "both A and B." Alternatively, in this specification, "A or B" may be interpreted as "A and / or B." For example, in this specification, "A, B or C" may mean "only A," "only B," "only C," or "any combination of A, B and C."
[0038] A slash ( / ) or a comma used in this specification may mean "and / or." For example, "A / B" may mean "A and / or B." Accordingly, "A / B" may mean "only A," "only B," or "both A and B." For example, "A, B, C" may mean "A, B or C."
[0039] 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 as synonymous with "at least one of A and B."
[0040] Additionally, in this specification, "at least one of A, B and C" may mean "only A," "only B," "only C," or "any combination of A, B and C." Also, "at least one of A, B or C" or "at least one of A, B and / or C" may mean "at least one of A, B and C."
[0041] Additionally, parentheses used in this specification may mean "for example." Specifically, where indicated as "prediction (intra-prediction)," "intra-prediction" may be proposed as an example of "prediction." In other words, "prediction" in this specification is not limited to "intra-prediction," and "intra-prediction" may be proposed as an example of "prediction." Furthermore, even where indicated as "prediction (i.e., intra-prediction)," "intra-prediction" may be proposed as an example of "prediction."
[0042] Technical features described individually within a single drawing in this specification may be implemented individually or simultaneously.
[0043] FIG. 1 illustrates a video / image coding system according to the present disclosure.
[0044] Referring to FIG. 1, the video / image coding system may include a first device (source device) (10) and a second device (receiving device) (20).
[0045] A source device (10) can transmit encoded video / image information or data in the form of a file or streaming to a receiving device (20) via a digital storage medium or network. The source device (10) may include a video source (11), an encoding device (12), and a transmission unit (13). The receiving device (20) may include a receiving unit (21), a decoding device (22), and a renderer (23). The encoding device (12) may be called a video / image encoding device, and the decoding device (22) may be called a video / image decoding device. A transmitter may be included in the encoding device. A receiver may be included in the decoding device. The renderer (23) may include a display unit, and the display unit may be composed of a separate device or an external component.
[0046] A video source (11) can acquire video / image through a process of capturing, synthesizing, or generating video / image. The video source (11) 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 / image, etc. The video / image generation device may include a computer, a tablet, a smartphone, etc., and can generate video / image (electronically). 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.
[0047] The encoding device (12) can encode an input video / image. The encoding device (12) can perform a series of procedures such as prediction, transformation, and quantization for compression and coding efficiency. The encoded data (encoded video / image information) can be output in the form of a bitstream.
[0048] The transmission unit (13) can transmit encoded video / image information or data output in the form of a bitstream to the receiving unit (21) of the receiving device (20) via a digital storage medium or network in the form of a file or streaming. The digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc. The transmission unit (13) may include elements for creating a media file through a predetermined file format and elements for transmission via a broadcasting / communication network. The receiving unit (21) can receive / extract the bitstream and transmit it to a decoding device (22).
[0049] The decoding device (22) 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 (12).
[0050] The renderer (23) can render the decoded video / image. The rendered video / image can be displayed through the display unit.
[0051] FIG. 2 shows a schematic block diagram of an encoding device to which an embodiment of the present disclosure can be applied and to which encoding of a video / image signal is performed.
[0052] Referring to FIG. 2, the encoding device (200) may be configured to include an image partitioner (210), a predictor (220), a residual processor (230), an entropy encoder (240), an adder (250), a filter (260), and a memory (270). The predictor (220) may include an inter-predictor (221) and an intra-predictor (222). The residual processor (230) may include a transformer (232), a quantizer (233), a dequantizer (234), and an inverse transformer (235). The residual processor (230) may further include a subtractor (231). The addition unit (250) may be referred to as a reconstructor or a reconstructed block generator. The above-described image segmentation unit (210), prediction unit (220), residual processing unit (230), entropy encoding unit (240), addition unit (250), and filtering unit (260) may be configured by one or more hardware components (e.g., an encoding device chipset or processor) according to the embodiment. Additionally, 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.
[0053] The image segmentation unit (210) can divide an input image (or picture, frame) input to an 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 divided from a coding tree unit (CTU) or a largest coding unit (LCU) according to a QTBTTT (Quad-tree binary-tree ternary-tree) structure.
[0054] For example, a single coding unit may be divided into multiple coding units with a deeper depth based on a quad tree structure, a binary tree structure, and / or a terrestrial structure. In this case, for example, the quad tree structure may be applied first and the binary tree structure and / or terrestrial structure may be applied later. Alternatively, the binary tree structure may be applied before the quad tree structure. A coding procedure according to the present specification may be performed based on a final coding unit that is no longer divided. In this case, based on coding efficiency according to image characteristics, the maximum coding unit may be used directly as the final coding unit, or, if necessary, the coding unit may be recursively divided into coding units of a lower depth so that a coding unit of the optimal size may be used as the final coding unit. Here, the term "coding procedure" may include procedures such as prediction, transformation, and restoration described below.
[0055] 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 divided or partitioned from the aforementioned final coding unit. The Prediction Unit may be a unit for sample prediction, and the Transform Unit may be a unit for deriving transformation coefficients and / or a unit for deriving a residual signal from transformation coefficients.
[0056] The term "unit" may be used interchangeably with terms such as "block" or "area" depending on the context. In general, an MxN block may represent a set of samples or transform coefficients consisting of M columns and N rows. A sample may generally represent a pixel or a pixel value, and may represent only the pixel / pixel value of the luminance component or only the pixel / pixel value of the chroma component. A sample may be used to refer to a single picture (or image) as a term corresponding to a pixel or pel.
[0057] 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, the unit that subtracts the prediction signal (prediction block, prediction sample array) from the input video signal (original block, original sample array) within the encoding device (200) may be called a subtraction unit (231).
[0058] The prediction unit (220) performs a prediction for a block to be processed (hereinafter referred to as the current block) and can generate a predicted block containing prediction samples for the current block. The prediction unit (220) can determine whether intra prediction is applied or inter prediction is applied at the current block or CU level. The prediction unit (220) can generate various information regarding the prediction, such as prediction mode information, as described below in the description of each prediction mode, and transmit it to the entropy encoding unit (240). The information regarding the prediction can be encoded by the entropy encoding unit (240) and output in the form of a bitstream.
[0059] The intra prediction unit (222) can predict the current block by referring to samples within the current picture. The referenced samples may be located near the current block or at a certain distance 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 DC mode or a planar mode. The directional mode may include 33 directional modes or 65 directional modes depending on the degree of fineness of the prediction direction. However, this is merely an example, and depending on the settings, more or fewer directional modes may be used. The intra prediction unit (222) may determine the prediction mode applied to the current block by using the prediction mode applied to the surrounding blocks.
[0060] 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, to reduce the amount of motion information transmitted in the inter prediction mode, motion information can be predicted in blocks, sub-blocks, or samples based on the correlation of motion information between neighboring blocks and the current block. The motion information may include a motion vector and a reference picture index. The motion information may further include inter prediction direction information (L0 prediction, L1 prediction, Bi prediction, etc.). In the case of inter prediction, neighboring blocks may include spatial neighboring blocks existing within the current picture and temporal neighboring blocks existing in the reference picture. The reference picture containing the reference blocks and the reference picture containing the temporal neighboring blocks may be the same or different. The above temporal surrounding blocks may be referred to by names such as collocated reference block, collocated CU (colCU), etc., and the reference picture containing the above temporal surrounding blocks may be referred to as a collocated picture (colPic). For example, the inter prediction unit (221) may construct a list of motion information candidates based on surrounding blocks and generate information indicating which candidate is used to derive the motion vector and / or reference picture index of the current block. Inter prediction may be performed based on various prediction modes, for example, in the case of skip mode and merge mode, the inter prediction unit (221) may use the motion information of surrounding blocks as motion information of the current block. In the case of skip mode, unlike merge mode, a residual signal may not be transmitted.In the motion vector prediction (MVP) mode, the motion vectors of surrounding blocks are used as motion vector predictors, and the motion vector of the current block can be indicated by signaling the motion vector difference.
[0061] The prediction unit (220) can generate a prediction signal based on various prediction methods described below. For example, the prediction unit may apply intra prediction or inter prediction for prediction of a single block, and may also apply intra prediction and inter prediction simultaneously. This may be called a combined inter and intra prediction (CIIP) mode. Additionally, the prediction unit may be based on an intra block copy (IBC) prediction mode or a palette mode for prediction of a block. The IBC prediction mode or palette mode may be used for content video / video coding, such as in screen content coding (SCC) for games. IBC basically performs prediction within the current picture, but it may be performed similarly to inter prediction in that it derives a reference block within the current picture. That is, IBC may utilize at least one of the inter prediction techniques described in this specification. The palette mode can be viewed as an example of intra coding or intra prediction. When the palette mode is applied, sample values within the picture can be signaled based on information regarding the palette table and palette index. The prediction signal generated through the prediction unit (220) can be used to generate a restoration signal or to generate a residual signal.
[0062] The transformation unit (232) can generate transform coefficients by applying a transformation technique to a residual signal. For example, the transformation technique may 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 transformation obtained from a graph when the relationship information between pixels is represented as a graph. CNT refers to a transformation obtained based on a prediction signal generated using all previously restored pixels. Additionally, the transformation process may be applied to a pixel block of the same size in a square, or to a block of variable size that is not square.
[0063] The quantization unit (233) quantizes the transformation coefficients and transmits them to the entropy encoding unit (240), and the entropy encoding unit (240) can encode the quantized signal (information regarding the quantized transformation coefficients) and output it as a bitstream. The information regarding the quantized transformation coefficients may be called residual information. The quantization unit (233) can rearrange the block-shaped quantized transformation coefficients into a one-dimensional vector form based on the coefficient scan order, and can also generate information regarding the quantized transformation coefficients based on the one-dimensional vector-shaped quantized transformation coefficients.
[0064] The entropy encoding unit (240) can perform various encoding methods such as exponential Golomb, CAVLC (context-adaptive variable length coding), CABAC (context-adaptive binary arithmetic coding), etc. The entropy encoding unit (240) may encode information required for video / image restoration (e.g., values of syntax elements, etc.) together or separately, in addition to quantized transform coefficients.
[0065] Encoded information (e.g., encoded video / image information) may be transmitted or stored in the form of a bitstream at the level of a Network Abstraction Layer (NAL) unit. The video / image information may further include information regarding 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). Additionally, the video / image information may further include general constraint information. In this 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 encoding procedure described above and included in the bitstream. The bitstream may be transmitted over a network or stored on 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 USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc. A transmission unit (not shown) that transmits the signal output from the entropy encoding unit (240) and / or a storage unit (not shown) that stores it may be configured as internal / external elements of the encoding device (200), or the transmission unit may be included in the entropy encoding unit (240).
[0066] The quantized transform coefficients output from the quantization unit (233) can be used to generate a prediction signal. For example, a residual signal (residual block or residual samples) can be restored by applying inverse quantization and inverse transformation to the quantized transform coefficients through the inverse quantization unit (234) and the inverse transformation unit (235). The adder (250) can generate a reconstructed signal (reconstructed picture, reconstructed block, reconstructed sample array) by adding the restored residual signal to the prediction signal output from the inter-prediction unit (221) or the intra-prediction unit (222). In cases where there is no residual for the block to be processed, such as when a skip mode is applied, the predicted block can be used as the reconstructed block. The adder (250) may be called a reconstruction unit or a reconstruction block generation unit. The generated restoration signal can be used for intra prediction of the next block to be processed 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.
[0067] The filtering unit (260) can improve subjective / objective image quality by applying filtering to the restored signal. For example, the filtering unit (260) can generate a modified restored picture by applying various filtering methods to the restored picture, and can store the modified restored picture in memory (270), specifically in the DPB of memory (270). The various filtering methods may 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 in the entropy encoding unit (240) and output in the form of a bitstream.
[0068] 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 mismatches between the encoding device (200) and the decoding device, and can also improve encoding efficiency.
[0069] 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 blocks from which motion information is derived (or encoded) within the current picture and / or motion information of blocks within the picture that have already been restored. The stored motion information can be transmitted to the inter-prediction unit (221) to be used as motion information of spatially surrounding blocks or motion information of temporally surrounding blocks. The memory (270) can store restoration samples of the blocks restored within the current picture and transmit them to the intra-prediction unit (222).
[0070] FIG. 3 shows a schematic block diagram of a decoding device to which an embodiment of the present disclosure can be applied and to which decoding of a video / image signal is performed.
[0071] 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-predictor (332) and an intra-predictor (331). The residual processor (320) may include a dequantizer (321) and an inverse transformer (321).
[0072] The aforementioned entropy decoding unit (310), residual processing unit (320), prediction unit (330), addition unit (340), and filtering unit (350) may be configured by a single hardware component (e.g., a decoding device chipset or processor) according to an embodiment. Additionally, the memory (360) may include a DPB (decoded picture buffer) and may be configured by a digital storage medium. The hardware component may further include the memory (360) as an internal / external component.
[0073] When a bitstream containing video / image information is input, the decoding device (300) can restore the image in correspondence with the process in which the video / image information is processed by the encoding device of FIG. 2. For example, the decoding device (300) can derive units / blocks based on block division information obtained from the bitstream. The decoding device (300) can perform decoding using a processing unit applied by 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 binary tree structure. One or more conversion units may be derived from the coding unit. And, the restored image signal decoded and output through the decoding device (300) can be played back through a playback device.
[0074] 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 an 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 regarding 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). Additionally, the video / image information may further include general constraint information. The decoding device can decode the picture based on information regarding the parameter sets and / or the general constraint information. The signaling / receiving information and / or syntax elements described below in this specification may be decoded through the decoding procedure and obtained from the bitstream. For example, the entropy decoding unit (310) can decode information within the bitstream based on coding methods such as exponential chord coding, CAVLC, or CABAC, and output the values of syntax elements required for image restoration and the quantized values of transformation coefficients regarding residuals. More specifically, the CABAC entropy decoding method can receive a bin corresponding to each syntax element in the bitstream, determine a context model using information on the syntax element to be decoded and decoding information of surrounding and decoding target blocks or information on symbols / bins decoded in the previous step, predict the probability of occurrence of the bin according to the determined context model, and 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 decoded symbol / bin information for the context model of the next symbol / bin after determining the context model. Among the information decoded in the entropy decoding unit (310), information regarding prediction is provided to the prediction unit (inter prediction unit (332) and intra prediction unit (331)), and the residual value for which entropy decoding was performed in the entropy decoding unit (310), i.e., quantized transformation coefficients and related parameter information, can be input to the residual processing unit (320). The residual processing unit (320) can derive residual signals (residual blocks, residual samples, residual sample array). Additionally, among the information decoded in the entropy decoding unit (310), information regarding filtering 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 the decoding device (300), or the receiving unit may be a component of the entropy decoding unit (310).
[0075] Meanwhile, the decoding device according to the present specification may be called a video / image / picture decoding device, and the decoding device may be divided into an information decoding device (video / image / picture information decoding device) and a sample decoding device (video / image / 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), inverse transform unit (322), adder (340), filtering unit (350), memory (360), inter prediction unit (332), and intra prediction unit (331).
[0076] In the inverse quantization unit (321), the quantized transformation coefficients can be inversely quantized to output transformation coefficients. The inverse quantization unit (321) can rearrange the quantized transformation coefficients into a two-dimensional block form. In this case, the rearrangement can be performed based on the coefficient scan order performed by the encoding device. The inverse quantization unit (321) can perform inverse quantization on the quantized transformation coefficients using quantization parameters (e.g., quantization step size information) and obtain transformation coefficients.
[0077] In the inverse conversion unit (322), the conversion coefficients are inversely converted to obtain a residual signal (residual block, residual sample array).
[0078] The prediction unit (320) can perform a prediction for the current block and generate a predicted block containing prediction samples for the current block. The prediction unit (320) can determine whether an intra prediction or an inter prediction is applied to the current block based on information regarding the prediction output from the entropy decoding unit (310), and can determine a specific intra / inter prediction mode.
[0079] The prediction unit (320) can generate a prediction signal based on various prediction methods described below. For example, the prediction unit (320) may apply intra prediction or inter prediction for prediction of a single block, and may also apply intra prediction and inter prediction simultaneously. This may be called a combined inter and intra prediction (CIIP) mode. Additionally, the prediction unit may be based on an intra block copy (IBC) prediction mode or a palette mode for prediction of a block. The IBC prediction mode or palette mode may be used for content video / video coding, such as in games, such as SCC (screen content coding). IBC basically performs prediction within the current picture, but it may be performed similarly to inter prediction in that it derives a reference block within the current picture. That is, IBC may utilize at least one of the inter prediction techniques described in this specification. The palette mode can be viewed as an example of intra coding or intra prediction. When palette mode is applied, information regarding the palette table and palette index can be included in the above video / image information and signaled.
[0080] 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 according to the prediction mode, or may be located at a certain distance from the current block. In intra prediction, the prediction modes may include one or more non-directional modes and a plurality of directional modes. The intra prediction unit (331) may determine the prediction mode applied to the current block by using the prediction mode applied to the neighboring blocks.
[0081] 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, to reduce the amount of motion information transmitted in the inter prediction mode, motion information can be predicted in blocks, sub-blocks, or samples based on the correlation of motion information between neighboring blocks and the current block. The motion information may include a motion vector and a reference picture index. The motion information may further include inter prediction direction information (L0 prediction, L1 prediction, Bi prediction, etc.). In the case of inter prediction, neighboring blocks may include spatial neighboring blocks existing within the current picture and temporal neighboring blocks existing in the reference picture. For example, the inter prediction unit (332) may construct a motion information candidate list based on 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 regarding the prediction may include information indicating the inter-prediction mode for the current block.
[0082] The adder (340) can generate a restoration signal (restoration 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 the intra prediction unit (331)). In cases where there is no residual for the block to be processed, such as when a skip mode is applied, the prediction block can be used as the restoration block.
[0083] The addition unit (340) may be called a restoration unit or a restoration block generation unit. The generated restoration signal may be used for intra-predicting the next block to be processed within the current picture, may be output after filtering as described below, or may be used for inter-predicting the next picture. Meanwhile, LMCS (luma mapping with chroma scaling) may be applied during the picture decoding process.
[0084] The filtering unit (350) can improve subjective / objective image quality by applying filtering to the restored signal. For example, the filtering unit (350) can generate a modified restored picture by applying various filtering methods to the restored picture, and can transmit the modified restored picture to memory (360), specifically to the DPB of memory (360). The various filtering methods may include deblocking filtering, sample adaptive offset, adaptive loop filter, bilateral filter, etc.
[0085] The (modified) restored 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 blocks from which motion information within the current picture has been derived (or decoded) and / or motion information of blocks within the picture that have already been restored. The stored motion information can be transmitted to the inter prediction unit (332) to be used as motion information of spatially surrounding blocks or motion information of temporally surrounding blocks. The memory (360) can store restoration samples of blocks restored within the current picture and transmit them to the intra prediction unit (331).
[0086] In this specification, the embodiments described in the filtering unit (260), inter prediction unit (221), and intra prediction unit (222) of the encoding device (200) may be applied to the filtering unit (350), inter prediction unit (332), and intra prediction unit (331) of the decoding device (300) in the same or corresponding manner.
[0087] FIG. 4 illustrates a method for restoring a video picture performed in a decoding device (300) according to the present disclosure.
[0088] A bitstream containing an encoded video picture can be received (S400).
[0089] The encoded video picture of the bitstream can be restored (S410).
[0090] Video information regarding an encoded video picture can be extracted from the bitstream. Based on the extracted video information, the encoded video picture can be restored.
[0091] The bitstream may include information regarding the processing order of Supplementary Enhancement Information (SEI) messages. Information regarding the processing order of SEI messages may be configured in the SEI message of the bitstream. In this case, the SEI message may be named an SEI processing order (SPO) SEI message.
[0092] SEI processing order: SEI messages may contain information indicating a preferred processing order determined by the encoder (i.e., content creator) for various types of SEI messages that may exist in the Coded Layer Video Sequence (CLVS).
[0093] Table 1 is an example of an SEI message with an SEI processing sequence included in a bitstream.
[0094] sei_processing_order( payloadSize ) {Descriptorpo_idu(8)po_for_human_viewing_idcu(2)po_for_machine_analysis_idcu(2)po_reserved_zero_4bitsu(4)po_num_sei_messages_minus2u(7)po_breadth_first_flagu(1)for( i = 0, i < po_num_sei_messages_minus2 + 2; i++ ) {po_sei_wrapping_flag[ i ]u(1)po_sei_importance_flag[ i ]u(1)po_sei_processing_degree_flag[ i ]u(1)po_sei_payload_type[ i ]u(12)po_sei_prefix_flag[ i ]u(1)po_sei_processing_order[ i ]u(8)}for( i = 0; i < po_num_sei_messages_minus2 + 2; i++ )if( po_sei_prefix_flag[ i ] ) {po_num_bits_in_prefix_indication_minus1[ i ]u(8)for( j = 0; j <= po_num_bits_in_prefix_indication_minus1[ i ];j++ )po_sei_prefix_data_bit[ i ][ j ]u(1)while( !byte_aligned( ) )po_byte_alignment_bit_equal_to_one / * equal to 1 * / f(1)}po_complexity_info_present_flagu(1)if( po_complexity_info_present_flag ) {po_parameter_type_idcu(2)if( po_parameter_type_idc != 2 )po_log2_parameter_bit_length_minus3u(2)po_num_parameters_idcu(6)po_num_kmac_operations_idcue(v)po_total_kilobyte_sizeue(v)}};
[0095] Table 2 is an example of a description of the SEI message for the SEI processing sequence included in the bitstream.
[0096] The SEI processing order (SPO) SEI message carries information indicating the preferred processing order, as determined by the encoder (i.e., the content producer), for a group of types of SEI messages that may be present in a CLVS.Use of this SEI message requires the definition of the following:- Two lists of payloadType values, SeiProcessingOrderSeiList and SpoProcessSeiList.The semantics of the SPO SEI message uses the concept of types of SEI messages. SEI messages that have different payloadType values are considered different types of SEI messages. Additionally, different SEI messages that have the same payloadType value but are differentiated by values of syntax elements in the SEI payload are considered different types of SEI messages.Such differentiation by values of syntax elements in the SEI payload is to be performed by comparing values sent using po_sei_prefix_data_bit[ i ][ j ] syntax elements (when present) or values sent as SEI messages within a processing order nesting SEI message (when present). For example, neural-network post-filter characteristics (NNPFC) SEI messages can be differentiated by having different nnpfc_id values.When the i-th SEI message seiA in any SPO SEI message has po_sei_wrapping_flag[ i ] and po_sei_prefix_flag[ i ] both equal to 0, there shall be no other SEI message seiB included in the same SPO SEI message or in a different SPO SEI message in the current CLVS for which all of the following are true:- The value of po_sei_payload_type[ i ] of seiB is the same as that for seiA.- The value of po_sei_wrapping_flag[ i ] of seiB is equal to 0.- The value of po_sei_prefix_flag[ i ] of seiB is equal to 1.When an SPO SEI message with a particular value of po_id is present in any picture unit of a CLVS, an SPO SEI message with that particular value of po_id shall be present in the first picture unit of the CLVS in decoding order. The number of SEI messages and the payloadType codes of the SEI messages indicated within each SPO SEI message with the same value of po_id persist in decoding order from the current picture unit until the end of the CLVS in output order.The SPO SEI message can carry one or more SEI prefix indications of a particular payloadType. When present, each SEI prefix indication is a bit string that follows the SEI payload syntax of that value of payloadType and contains a number of complete syntax elements starting from the first syntax element in the SEI payload.These SEI prefix indications should provide sufficient information to determine the specific processing order for types of SEI messages having the same value of payloadType but a different preferred processing order.po_idcontains an identifying number to identify the SPO SEI message.A processing chain consists of a list of types of SEI messages identified by an SPO SEI message in the preferred processing order indicated in the SPO SEI message. When multiple processing chains are indicated by SPO SEI messages for the same access unit, a decoder should operate only one of the indicated processing chains.Each type of SEI message in the processing chain indicated by an SPO SEI message is identified by the syntax elements po_sei_payload_type[ i ], po_sei_wrapping_flag[ i ], po_sei_processing_order[ i ] and, when present, po_num_bits_in_prefix_indication_minus1[ i ] and po_prefix_data_bit[ i ][ j ].An SEI message type is not required to belong to any processing chain and may belong to any number of processing chains identified by SPO SEI messages with different po_id values.Each SEI message of an SEI message type identified within the SPO SEI message has the same persistence scope as if the SEI message was carried outside of the SPO SEI message and not identified within an SPO SEI message.NOTE 1 - When an SEI message specifies a process and is not associated with a processing chain specified by any SPO SEI message, it is implicitly a processing chain by itself. Some standards, such as Rec. ITU-T H.266 | ISO / IEC 23090-3, have specified an implicit processing chain of a super-resolution NNPF followed by another NNPF. Implicitly specified processing chains are treated like processing chains specified by SPO SEI messages when selecting SEI messages to be applied.po_for_human_viewing_idcequal to 3 specifies that the intended optimal usage of the video resulting from the processing chain specified by this SPO SEI message includes for human viewing. po_for_human_viewing_idc equal to 2 specifies that that the video resulting from the processing chain specified by this SPO SEI message is suitable but not specifically optimized for human viewing. po_for_human_viewing_idc equal to 1 specifies that the video resulting from the processing chain specified by this SPO SEI message is unsuitable for human viewing. po_for_human_viewing_idc equal to 0 specifies that it is unknown if the video resulting from the processing chain specified by this SPO SEI message is suitable for human viewing.po_for_machine_analysis_idcequal to 3 specifies that the intended optimal usage of the video resulting from the processing chain specified by this SPO SEI message includes machine analysis.po_for_machine_analysis_idc equal to 2 specifies that the video resulting from the processing chain specified by this SPO SEI message is suitable but not specifically optimized for machine analysis. po_for_machine_analysis_idc equal to 1 specifies that the video resulting from the processing chain specified by this SPO SEI message is unsuitable for machine analysis. po_for_machine_analysis_idc equal to 0 specifies that it is unknown if the video resulting from the processing chain specified by this SPO SEI message is suitable for machine analysis.It is a requirement of bitstream conformance that the value of po_for_human_viewing_idc and po_for_machine_analysis_idc shall not be both equal to 1.NOTE 2 - The values of po_for_human_viewing_idc and po_for_machine_analysis_idc are in force for the output of a processing chain.po_reserved_zero_4bitsshall be equal to 0.Values greater than 0 for po_reserved_zero_4bits are reserved for future use by ITU-T | ISO / IEC and shall not be present in bitstreams conforming to this version of this Specification. Decoders conforming to this version of this Specification shall allow any value of po_reserved_zero_4bits in the range of 0 to 15, inclusive.po_num_sei_messages_minus2plus 2 indicates the number of types of SEI messages for which the preferred order of processing is indicated in the SPO SEI message. The variable PoNumProcStgs is set equal to po_num_sei_messages_minus2 + 2.po_breadth_first_flagequal to 1 specifies that the breadth-first handling of a processing chain specified in clause 8.30.3.2 shall be applied to determine the pictures that are used for interpreting the semantics of the SEI messages applied as a part of the processing chain specified by this SPO SEI message. po_breadth_first_flag equal to 0 specifies that the breadth-first handling of a processing chain specified in clause 8.30.3.2 or the depth-first handling of a processing chain specified in clause 8.30.3.3 shall be applied to determine the pictures that are used for interpreting the semantics of the SEI messages applied as a part of the processing chain specified by this SPO SEI message.NOTE 3 - When po_breadth_first_flag is equal to 0, the processing chain can be performed for a picture without processing any SEI messages applying to subsequent picture units in output order.po_sei_wrapping_flag[ i ] equal to 1 specifies that an SEI message that applies as the i-th SEI message type in the processing chain specified in this SPO SEI message, if present, is an SEI message that is included in a PON SEI message for which both of the following conditions are true:- pon_target_po_id[ j ] with any value of j is equal to po_id.- There is a k-th loop entry in the processing order nesting SEI message such that the payloadType of the k-th nested SEI message is equal to po_sei_payload_type[ i ] and pon_processing_order[ k ] is equal to po_sei_processing_order[ i ].po_sei_wrapping_flag[ i ] equal to 0 specifies that an SEI message that applies as the i-th SEI message type in the processing chain specified in this SPO SEI message, if present, is an SEI message that is not included in a PON SEI message and for which both of the following conditions are true:- The payloadType of the SEI message is equal po_sei_payload_type[ i ].- po_sei_prefix_flag[ i ] is equal to 0, or when po_sei_prefix_flag[ i ] is equal to 1, the payload of the SEI message starts with the values of po_sei_prefix_data_bit[ i ][ j ].NOTE 4 - po_sei_wrapping_flag[ i ] equal to 1 enables SEI messages to be carried within the processing order nesting SEI message to prevent such SEI messages from being incorrectly interpreted by decoders that do not process the SPO SEI message. Thus, po_sei_wrapping_flag[ i ] equal to 1 is intended to be used when po_sei_wrapping_flag[ i ] equal to 0 can lead to unintended results being produced by such decoders.po_sei_importance_flag[ i ] affects the derivation of PoSeiList, which is the list of SEI messages that a decoding system should process for a particular picture picA, as specified below.po_sei_processing_degree_flag[ i ] affects the derivation of PoSeiList as specified below.A processing chain may contain zero or more sub-chains.A sub-chain includes such SEI message types that either all these SEI message types should be processed by a decoding system or, if the decoding system cannot interpret or does not support one or more of these SEI message types, none of the SEI message types of the sub-chain should be processed. The SEI message types that belong to a sub-chain are determined by the values of po_importance_flag[ i ] and po_processing_degree_flag[ i ] as specified below.Table A specifies the interpretation of po_importance_flag[ i ] and po_processing_degree_flag[ i ].Table A - Interpretation of po_importance_flag[ i ] and po_processing_degree_flag[ i ]. po_sei_payload_type[ i ] specifies the payloadType value of the i-th type of SEI message.NOTE 5 - An NNPFC SEI message type has the value of po_sei_payload_type[ i ] equal to the payload type value of the NNPFC SEI message. Examples of reasons for including an NNPFC SEI message type in an SPO SEI message include the following:- The NNPFC SEI message type includes an SEI prefix that includes the nnpfc_purpose syntax element, which provides a hint to a decoding system which kinds of processing is included in the respective NNPF in the processing chain.- The NNPF is to be invoked only as a part of a processing chain and hence the NNPFC SEI message type is associated with po_sei_wrapping_flag[ i ] equal to 1 and the respective NNPFC SEI message(s) are included in PON SEI message(s).When an po_sei_payload_type[ i ] indicates an NNPFC SEI message for a particular NNPF, the same SPO SEI message shall contain po_sei_payload_type[ j ] that indicates a respective NNPFA SEI message for the sameNNPF with j greater than i.po_sei_prefix_flag[ i ] equal to 1 specifies that po_num_bits_in_prefix_indication_minus1[ i ] and some po_sei_prefix_data_bit[ i ][ j ] syntax elements are present. po_sei_prefix_flag[ i ] equal to 0 specifies that these syntax elements are not present.The value of po_sei_payload_type[ i ] for each i in the range of 0 to po_num_sei_messages_minus2 + 1, inclusive, shall be equal to a value in SeiProcessingOrderSeiList.When po_sei_payload_type[ i ] is equal to any value in SpoProcessSeiList, the i-th type of SEI message indicates a process.spoPropertySeiList is set to consist of the payloadType values included in SeiProcessingOrderSeiList excluding the paylaodType values included in SpoProcessSeiList. When po_sei_payload_type[ i ] is equal to any value in spoPropertySeiList, the i-th type of SEI message indicates a property.po_sei_processing_order[ i ] indicates the preferred order of processing of the i-th type of SEI message for which preferred processingorder information is provided in the SPO SEI message. For any two different integer values of m and n, po_sei_processing_order[ m ] less than po_sei_processing_order[ n ] indicates that the type of SEI message associated with index m should be processed before the type of SEI message associated with index n, and po_sei_processing_order[ m ] equal to po_sei_processing_order[ n ] indicates that there is no preferred order of processing between the types of SEI messages associated with indexes m and n (e.g., they can indicate different properties that are both applicable at that stage, or one can indicate a property and the other can indicate a process).For i greater than 0, po_sei_processing_order[ i ] shall be greater than or equal to po_sei_processing_order[ i - 1 ].Let seiMsgA be an SEI message that applies as the i-th SEI message type in the processing chain specified in this SPO SEI message, persists for a particular picture picA, and is associated with po_sei_processing_order[ i ]equal to poValA.Let seiMsgSet be a set of SEI messages that consists of each SEI message for which all of the following conditions are true:- The SEI message applies as the k-th SEI message type in the processing chain specified in this SPO SEI message with any value of k less than i.- The SEI message persists for picA.- po_sei_processing_order[ k ] is less than poValA.- The payloadType value of the SEI message is among the values included in SpoProcessSeiList.The pictures to which the semantics of seiMsgA apply are specified as follows:- If seiMsgSet is non-empty, the semantics of seiMsgA apply to all the pictures generated by the process implied by the SEI message that has the greatest value of po_sei_processing_order[ k ] among the SEI messages in seiMsgSet.- Otherwise, the semantics of seiMsgA apply to picA.NOTE 6 - When an NNPF process outputs more than one NNPF-generated picture, the semantics of an SEI message that follows the NNPF in the processing order apply to all theseNNPF-generated pictures.po_num_bits_in_prefix_indication_minus1[ i ] andpo_sei_prefix_data_bit[ i ][ j ], when present, have the same semantics as the num_bits_in_prefix_indication_minus1[ i ] and sei_prefix_data_bit[ i ][ j ] syntax elements of the SEI prefix indication SEI message, with prefix_sei_payload_type replaced by po_sei_payload_type[ i ].When more than one SPO SEI message with a particular value of po_id is present in a CLVS, the values of po_for_human_viewing_idc, po_for_machine_analysis_idc, po_num_sei_messages_minus2, po_breadth_first_flag and, for each value of i, the values of po_sei_wrapping_flag[ i ], po_sei_importance_flag[ i ], po_sei_processing_degree_flag[ i ], po_sei_payload_type[ i ], po_sei_prefix_flag[ i ], po_sei_processing_order[ i ] shall be the same as in the other SPO SEI messages in the CLVS with the same value of po_id.po_byte_alignment_bit_equal_to_oneshall be equal to 1.The lists PoProcStgIdx, indicating the processing stage indices of the SEI messagetypes in the processing chain, and PoSeiTypeIdx, indicating the SEI message type indices of the processing stages in the processing chain, are derived as follows:- For each of the SEI message types of in the processing chain, the following applies in a non-decreasing order of the corresponding po_sei_processing_order[ i ] values, with j being set equal to 0 initially:PoProcStgIdx[ i ] = jPoSeiTypeIdx[ j ] = i (xx)j++Where PoProcStgIdx[ i ] indicates the processing stage index of the i-th SEI message type in the processing chain, and PoSeiTypeIdx[ j ] indicates the SEI message type index of the j-th processing stage in the processing chain.The list poSubChainIdx[ j ] for j ranging from 0 to PoNumProcStgs - 1, inclusive, specifying the sub-chain index of the j-th processing stage of the processing chain, is derived as follows:poSubChainFlag = 0poSubChainPrevIdx = 0for( j = 0; j < PoNumProcStgs; j++ ) { (xx)idx =PoSeiTypeIdx[ j ]if( po_sei_importance_flag[ idx ] = = 1 && po_sei_processing_degree_flag[ idx ] = = 1 )poSubChainIdx[ j ] = 0else if( po_sei_importance_flag[ idx ] = = 0 && po_sei_processing_degree_flag[ idx ] = = 1 ) {poSubChainIdx[ j ] = poSubChainPrevIdxpoSubChainFlag = 0} else if( po_sei_importance_flag[ idx ] = = 1 && po_sei_processing_degree_flag[ idx ] = = 0 ) {if( poSubChainFlag = = 0 )poSubChainPrevIdx++poSubChainIdx[ j ] = poSubChainPrevIdxpoSubChainFlag = 1} elsepoSubChainIdx[ j ] = poSubChainFlag * poSubChainPrevIdx}For a picture, the list PoSeiList, indicting the list of SEI messages that may be applied to the picture, the list PoSeiTypeList, indicating the SEI message type indices of the SEI messages that may be applied to the picture, and the variable PoNumSeiMsgs, indicating the number of SEI messages that may be applied to the picture, are derived as follows:- PoSeiList is initially empty, and seiListIdx and PoNumSeiMsgs are both initially setequal to 0.- The following applies in increasing order of j for all values of j in the range of 0 to PoNumProcStgs - 1, inclusive, unless terminated earlier as specified below:- When an SEI message seiA associated with the PoSeiTypeIdx[ j ]-th SEI message type persists for picA, the following applies:- If all of the following conditions are true, seiA is added at the end of PoSeiList, PoSeiTypeList[ seiListIdx ] is set equal to PoSeiTypeIdx[ j ], PoNumSeiMsgs is set equal to PoNumSeiMsgs + 1, and seiListIdx is set equal to seiListIdx + 1:- The decoding system can interpret and supports the functionality indicated by seiA.- Either of the following conditions is true:- poSubChainIdx[ j ] is equal to 0.- The decoding system can interpret and supports the functionality indicated by all SEI message types for all values of k such that poSubChainIdx[ k ] is equal to poSubChainIdx[ j ] and either po_sei_importance_flag[ PoSeiTypeIdx[ k ] ] is equal to 1 orpo_sei_processing_degree_flag[ PoSeiTypeIdx[ k ] ] is equal to 1.- Otherwise, if po_sei_importance_flag[ PoSeiTypeIdx[ j ] ] is equal to 1 and po_sei_processing_degree_flag[ PoSeiTypeIdx[ j ] ] is equal to 1, the processing chain specified by this SPO SEI message should not be performed for picA, PoSeiList is set to be empty, PoNumSeiMsgs is set equal to 0, and the derivation of PoSeiList, PoSeiTypeList, and PoNumSeiMsgs is terminated.po_complexity_info_present_flagequal to 1 specifies that one or more syntax elements that indicate the complexity of invoking NNPFs in the processing chain identified by the sei processing order SEI message are present. po_complexity_info_present_flag equal to 0 specifies that no syntax elements that indicates the complexity of invoking NNPFs in the processing chain identified by the sei processing order SEI message are present.po_parameter_type_idcequal to 0 indicates that the NNPFs in the processing chain identified by the sei processing order SEImessage use only integer parameters. po_parameter_type_flag equal to 1 indicates that the NNPFs in the processing chain identified by the sei processing order SEI message may use floating point or integer parameters. po_parameter_type_idc equal to 2 indicates that the NNPFs in the processing chain identified by the sei processing order SEI message uses only binary parameters. po_parameter_type_idc equal to 3 is reserved for future use by ITU-T | ISO / IEC and shall not be present in bitstreams conforming to this edition of this document. Decoders conforming to this edition of this document shall ignore SPO SEI messages with po_parameter_type_idc equal to 3.po_log2_parameter_bit_length_minus3equal to 0, 1, 2, and 3 indicates that the NNPFs in the processing chain identified by the sei processing order SEI message do not use parameters of bit length greater than 8, 16, 32, and 64, respectively. When po_parameter_type_idc is present and po_log2_parameter_bit_length_minus3 is not present,the NNPFs in the processing chain identified by the sei processing order SEI message do not use parameters of bit length greater than 1.po_num_parameters_idcindicates the maximum number of parameters needed by NNPFs in the processing chain identified by the sei processing order SEI message in units of a power of 2 048. po_num_parameters_idc equal to 0 indicates that the maximum number of parameters needed by NNPFs in the processing chain identified by the sei processing order SEI message is unknown. The value po_num_parameters_idc shall be in the range of 0 to 52, inclusive. Values of po_num_parameters_idc greater than 52 are reserved for future use by ITU-T | ISO / IEC and shall not be present in bitstreams conforming to this edition of this document. Decoders conforming to this edition of this document shall ignore SPO SEI messages with po_num_parameters_idc greater than 52.If the value of po_num_parameters_idc is greater than zero, the variable maxNumParameters is derived asfollows:maxNumParameters = ( 2 048 << po_num_parameters_idc ) - 1(xx)It is a requirement of bitstream conformance that the number of parameters shall be less than or equal to maxNumParameters.po_num_kmac_operations_idcgreater than 0 indicates that the maximum number of multiply-accumulate operations per sample of the NNPFs in the processing chain identified by the sei processing order SEI message is less than or equal to po_num_kmac_operations_idc * 1 000. po_num_kmac_operations_idc equal to 0 indicates that the maximum number of multiply-accumulate operations of the NNPFs in the processing chain identified by the sei processing order SEI message is unknown. The value of po_num_kmac_operations_idc shall be in the range of 0 to 2 32 - 2, inclusive.po_total_kilobyte_sizegreater than 0 indicates a total size in kilobytes required to store the uncompressed parameters for the NNPFs in the processing chain identified by the sei processing order SEI message. The total size in bits is a number equal to or greater than the sum of bits used to store each parameter. po_total_kilobyte_size is the total size in bits divided by 8 000, rounded up. po_total_kilobyte_size equal to 0 indicates that the total size required to store the parameters for the NNPFs in the processing chain identified by the sei processing order SEI message is unknown. The value of po_total_kilobyte_size shall be in the range of 0 to 232 - 2, inclusive.
[0097] The bitstream may include a processing order nesting (PON) SEI message containing an SEI message that must be applied as part of a processing chain identified by an SEI processing order SEI message.
[0098] A processing order nested SEI message may include one or more SEI messages, and said included SEI messages must be applied only as part of the processing chain identified by the SEI processing order SEI message, and may not be applied in a manner that contradicts the processing chain identified by said SEI processing order SEI message.
[0099] Table 3 is an example of a processing order nested SEI message included in a bitstream.
[0100] processing_order_nesting( payloadSize ) {Descriptorpon_num_po_ids_minus1u(8)for( i = 0; i <= pon_num_po_ids_minus1; i++ )pon_target_po_id[ i ]u(8)pon_num_seis_minus1u(8)for( i = 0; i <= pon_num_seis_minus1; i++ ) {pon_processing_order[ i ]u(8)sei_pon_nested_message( )}}
[0101] Table 4 is an example of a description of the processing order nested SEI message included in the bitstream.
[0102] The processing order nesting (PON) SEI message includes one or more SEI messages that should be applied only as parts of the processing chain identified by an associated SEI processing order SEI message and should not be applied in a manner that would contradict with the processing chain identified by the associated SEI processing order SEI message.Use of this SEI message requires the definition of the following:- The syntax structure of the container of SEI messages, sei_pon_nested_message( )The SEI messages contained in a PON SEI message are referred to as PON-nested SEI messages.NOTE - An encoder can include multiple PON SEI messages in the same access unit. For example, a first PON SEI message in an access unit can contain a PON-nested SEI message that applies to multiple processing chains and one or more other PON SEI messages in the same access unit that apply to a single processing chain only.It is a requirement of bitstream conformance that the semantics and effect of an SEI message that is not a PON-nested SEI message shall not depend on any PON-nested SEI message. Consequences of this constraint include the following specific constraints, in which an associated SEI message is considered to be an SEI message that affects the semantics or effect of a particular SEI message:- When a neural-network post-filter characteristics SEI message is present with a particular value of nnpfc_id that is a PON-nested SEI message, any associated neural-network post-filter activation SEI messages with nnpfa_target_id equal to that particular value of nnpfc_id shall also be PON-nested SEI messages.- When a neural-network post-filter activation (NNPFA) SEI message is present with nnpfa_persistence_flag equal to 1 and a particular value of nnpfa_target_id that is not a PON-nested SEI message, the next picture in output order in the same CLVS that has an NNPFA SEI message with the same value of nnpfa_target_id (if any) shall not have an associated NNPFA SEI message that is a PON-nested SEI message.- When a film grain characteristics SEI message is present with fg_characteristics_persistence_flag equal to 1 that is not a PON-nested SEI message, there shall not be an associated film grain characteristics SEI message in the same CLVS that is a PON-nested SEI message.- When a frame packing arrangement SEI message is present with fp_arrangement_persistence_flag equal to 1 that is not a PON-nested SEI message, there shall not be an associated frame packing arrangement SEI message in the same CLVS with fp_arrangement_cancel_flag equal to 1 or the same value of fp_arrangement_id that is a PON-nested SEI message.- When a content colour volume SEI message is present with ccv_persistence_flag equal to 1 that is not a PON-nested SEI message, there shall not be an associated frame packing arrangement SEI message in the same CLVS that is a PON-nested SEI message.- When an equirectangular projection SEI message is present with erp_persistence_flag equal to 1 that is not a PON-nested SEI message, there shall not be an associated equirectangular projection SEI message in the same CLVS that is a PON-nested SEI message.- When a region-wise packing SEI message is present with rwp_persistence_flag equal to 1 that is not a PON-nested SEI message, there shall not be an associated region-wise packing SEI message in the same CLVS that is a PON-nested SEI message.- When a sample aspect ratio SEI message is present with sari_persistence_flag equal to 1 that is not a PON-nested SEI message, there shall not be an associated sample aspect ratio SEI message in the same CLVS that is a PON-nested SEI message.- When an annotated regions SEI message is present that is not a PON-nested SEI message, there shall not be an associated annotated regions SEI message in the same CLVS that is a PON-nested SEI message.- When an alpha channel information SEI message is present that is not a PON-nested SEI message, there shall not be an associated alpha channel information SEI message in the same CLVS that is a PON-nested SEI message.- When a display orientation SEI message is present that is not a PON-nested SEI message, there shall not be an associated display orientation SEI message in the same CLVS that is a PON-nested SEI message.- When a colour transform indication SEI message is present with colour_transform_persistence_flag equal to 1 that is not a PON-nested SEI message, there shall not be an associated colour transform indication SEI message in the same CLVS with colour_transform_cancel_flag equal to 1 or the same value of colour_transform_id that is a PON-nested SEI message.pon_num_po_ids_minus1plus 1 specifies the number of the SEI processing order SEI messages SEI associated with this PON SEI message.pon_target_po_id[ i ] indicates the po_id of the i-th SEI processing order SEI message associated with this PON SEI message.pon_num_seis_minus1plus 1 specifies the number of the PON-nested SEI messages that are included in this PON SEI message.pon_processing_order[ i ] specifies the position of the i-th PON-nested SEI message within the processing order defined by the associated SEI processing order SEI message. When i is greater than 0, pon_processing_order[ i ] shall be greater than or equal to pon_processing_order[ i - 1 ].An associated SEI processing order SEI message for the i-th PON-nested SEI message is an SEI processing order SEI message that has an entry k for which all of the following conditions are true:- po_sei_processing_order[ k ] is equal to pon_processing_order[ i ]- po_sei_payload_type[ k ] is equal to the payloadType value of the i-th PON-nested SEI message.- When po_sei_prefix_flag[ k ] is equal to 1, po_sei_prefix_data_bit[ k ][ j ] for j in the range of 0 to po_num_bits_in_prefix_indication_minus1[ k ], inclusive, contain the same content as the po_num_bits_in_prefix_indication_minus1[ k ] plus 1 initial bits of the SEI message payload of the i-th PON-nested SEI message.The i-th PON-nested SEI message may have any number of associated SEI processing order SEI messages in the range of 0 to pon_num_po_ids_minus1 + 1, inclusive.When the i-th PON-nested SEI message has an associated SEI processing order SEI message, the i-th PON-nested SEI message should be applied as the k-th loop entry of the associated SEI processing order SEI message.The semantics of the i-th PON-nested SEI message applied as the k-th loop entry of the associated SEI processing order SEI message with a particular po_id value apply without considering any of the PON-nested SEI messages not associated with any SEI processing order SEI message with that particular po_id value.For each SEI processing order SEI message that is present in the CLVS and has po_id equal to pon_target_po_id[ m ] for any value of m in the range of 0 to pon_num_po_ids_minus1, inclusive, there shall be at least one value n in the range of 0 to pon_num_seis_minus1, inclusive, for which the SEI processing order SEI message is the associated SEI processing order SEI message for the n-th PON-nested SEI message.
[0103] A bitstream may include quality metric information. The quality metric information may be configured in the Supplementary Enhancement Information (SEI) message of the bitstream. In this case, the SEI message may be named a Quality Metric (QM) SEI message.
[0104] The quality indicator SEI message may include information regarding a quality metric for quantitatively evaluating the quality of the decoded output image. More specifically, the quality indicator SEI message may include a quality indicator value representing at least one of the quality of a single picture, the average quality of multiple pictures included in the CLVS, the degree of quality improvement of a single picture compared to a reference picture, or the degree of average quality improvement in CLVS units.
[0105] Quality metric SEI messages have a problem in that the number of quality metric components flag, which determines the number of signaling repetitions for quality metric values, can be conditionally omitted. For example, when the value of the quality metric definition flag (qm_metric_definitions_present_flag) is 0, the number of quality metric components flag (qm_three_component_flag[i]) may not exist in the quality metric SEI message, and the number of signaling repetitions for quality metric value information (qm_clvs_metric_value[i][c], or qm_pic_metric_value[i][c]) that must be signaled repeatedly depending on the value of the number of quality metric components flag may not be clearly determined.
[0106] Furthermore, all quality metric-related information within a quality metric SEI message is structured to be signaled based on the quality metric count information (qm_num_metrics_minus1). Consequently, if, within a single CLVS, the quality metric count information included in a quality metric SEI message other than the first quality metric SEI message has a different value from the quality metric count information included in the first quality metric SEI message within the single CLVS, a problem may arise where quality metric values with the same i-index refer to different quality metrics in multiple quality metric SEI messages within the single CLVS.
[0107] To resolve the above problem, we will examine in the embodiments described below a method to ensure that quality indicator SEI messages always define the value of the quality indicator component count flag, and a method to ensure that all quality indicator SEI messages within a single CLVS have the same quality indicator count information.
[0108] Example 1
[0109] Table 5 is an example of a quality indicator SEI message included in a bitstream.
[0110] quality_metric( payloadSize ) {Descriptorqm_metric_definitions_present_flagu(1)qm_clvs_values_present_flagu(1)qm_pic_values_present_flagu(1)qm_num_metrics_minus1u(4)if ( qm_metric_definitions_present_flag ) {qm_gain_enabled_flagu(1)for( i = 0; i <= qm_num_metrics_minus1; i++ ) {if ( qm_gain_enabled_flag )qm_gain_flag[ i ]u(1)if ( qm_gain_flag[ i ] )qm_gain_reference_flag[ i ]u(1)qm_metric_type[ i ]u(8)qm_three_component_flag[ i ]u(1)if ( qm_metric_type[ i ] = = 0 | | qm_metric_type[ i ] >= 128) {qm_metric_increasing_flag[ i ]u(1)qm_full_reference_flag[ i ]u(1)qm_value_len_minus1_in_bytes[ i ]u(2)qm_metric_description_present_flag[ i ]u(1)}}}while( !byte_aligned( ) )qm_bit_equal_to_zero / * equal to 0 * / f(1)for( i = 0; i <= qm_num_metrics_minus1; i++ ) {if ( qm_metric_description_present_flag[ i ] )qm_metric_description[ i ]st(v)if( qm_clvs_values_present_flag )for( i = 0; i <= qm_num_metrics_minus1; i++ )for( c = 0; c < ( qm_three_component_flag[ i ] ? 3 : 1 );c++ )qm_clvs_metric_value[ i ][ c ]u(v)if( qm_pic_values_present_flag )for( i = 0; i <= qm_num_metrics_minus1; i++ )for( c = 0; c < ( qm_three_component_flag[ i ] ? 3 : 1 ); c++ )qm_pic_metric_value[ i ][ c ]u(v)};
[0111] A quality metric SEI message may include a quality metric definition flag (qm_metric_definitions_present_flag). The quality metric definition flag may indicate whether information defining a quality metric is included within the quality metric SEI message. For example, if qm_metric_definitions_present_flag is 1, it may indicate that information defining a quality metric exists, and if qm_metric_definitions_present_flag is 0, it may indicate that information defining a quality metric does not exist.
[0112] If the quality indicator SEI message is the first quality indicator SEI message in the CLVS in the decoder order, qm_metric_definitions_present_flag must be 1. Additionally, if the quality indicator SEI message is not the first quality indicator SEI message in the CLVS in the decoder order, at least one of the first condition or the second condition must be satisfied. Here, the first condition may be a condition where qm_metric_definitions_present_flag is 0. The second condition may be a condition where, if a quality indicator-related parameter exists within the quality indicator SEI message, the value of said quality indicator-related parameter must be the same as the value of the corresponding quality indicator-related parameter within the first quality indicator SEI message in the CLVS in the decoder order.
[0113] The above quality metric related parameters may include at least one of quality metric type information (qm_metric_type[i]), quality metric component count flag (qm_three_component_flag[i]), quality metric gain flag (qm_gain_flag[i]), quality metric gain reference flag (qm_gain_reference_flag[i]), quality metric increase direction flag (qm_metric_increasing_flag[i]), quality metric full reference flag (qm_full_reference_flag[i]), quality metric value length information (qm_value_len_minus1_in_bytes[i]), quality metric description present flag (qm_metric_description_present_flag[i]), or quality metric description information (qm_metric_description[i]).
[0114] A quality metric SEI message may include a CLVS quality metric value flag (qm_clvs_values_present_flag). The CLVS quality metric value flag may indicate whether CLVS quality metric value information (qm_clvs_metric_value[i][c]) exists within the quality metric SEI message. For example, if qm_clvs_values_present_flag is 1, it may indicate that qm_clvs_metric_value[i][c] exists, and if qm_clvs_values_present_flag is 0, it may indicate that qm_clvs_metric_value[i][c] does not exist.
[0115] A quality metric SEI message may include a picture quality metric value flag (qm_pic_values_present_flag). The picture quality metric value flag may indicate whether picture quality metric value information (qm_pic_metric_value[i][c]) exists within the quality metric SEI message. For example, if qm_pic_values_present_flag is 1, it may indicate that qm_pic_metric_value[i][c] exists, and if qm_pic_values_present_flag is 0, it may indicate that qm_pic_metric_value[i][c] does not exist.
[0116] A quality metric SEI message may include quality metric count information (qm_num_metrics_minus1). The quality metric count information may represent the number of quality metric entries. For example, a value obtained by adding 1 to qm_num_metrics_minus1 may be set as the number of quality metric entries included in the quality metric SEI message.
[0117] A quality metric SEI message may include a quality metric gain enable flag (qm_gain_enabled_flag). The quality metric gain enable flag may indicate whether a quality metric gain flag (qm_gain_flag[i]) exists within the quality metric SEI message. For example, if qm_gain_enabled_flag is 1, it may indicate that qm_gain_flag[i] exists, and if qm_gain_enabled_flag is 0, it may indicate that qm_gain_flag[i] does not exist. qm_gain_enabled_flag may be signaled based on qm_metric_definitions_present_flag. For example, qm_gain_enabled_flag may be signaled based on the value of qm_metric_definitions_present_flag being 1, and may not be signaled based on the value of qm_metric_definitions_present_flag being 0.
[0118] The quality metric SEI message may include a quality metric gain flag (qm_gain_flag[i]). The quality metric gain flag may be a flag for determining the meaning of CLVS quality metric value information (qm_clvs_metric_value[i][c]) and picture quality metric value information (qm_pic_metric_value[i][c]). A detailed method for determining the meaning of qm_clvs_metric_value[i][c] and qm_pic_metric_value[i][c] through qm_gain_flag[i] will be described later.
[0119] qm_gain_flag[i] may be signaled based on at least one of qm_num_metrics_minus1 or qm_gain_enabled_flag. For example, qm_gain_flag[i] may be signaled based on the number of quality metric entries according to qm_num_metrics_minus1. qm_gain_flag[i] may be signaled based on the value of qm_gain_enabled_flag being 1, and may not be signaled based on the value of qm_gain_enabled_flag being 0.
[0120] The quality metric SEI message may include a quality metric gain reference flag (qm_gain_reference_flag[i]). The quality metric gain reference flag may be a flag for determining the meaning of CLVS quality metric value information (qm_clvs_metric_value[i][c]) and picture quality metric value information (qm_pic_metric_value[i][c]).
[0121] qm_gain_reference_flag[i] may be signaled based on at least one of qm_num_metrics_minus1 or qm_gain_flag[i]. For example, qm_gain_reference_flag[i] may be signaled based on the number of quality metric entries according to qm_num_metrics_minus1. qm_gain_reference_flag[i] may be signaled based on the value of qm_gain_flag[i] being 1, and may not be signaled based on the value of qm_gain_flag[i] being 0.
[0122] A quality indicator SEI message may include quality indicator type information (qm_metric_type[i]). The quality indicator type information may indicate the type of the i-th quality indicator. For example, the type of the i-th quality indicator may be determined by referring to Table 6 based on the value of qm_metric_type[i]. Here, i may refer to an index for distinguishing each quality indicator among a plurality of quality indicator entries included in the quality indicator SEI message. Additionally, in the present disclosure, the i-th quality indicator may refer to the i-th quality indicator entry.
[0123] t (qm_metric_type[i])DescriptionIncreasingFlag[t]FullReferenceFlag[t]NumBytes[t]0User-defined1PSNR [2]1122PSNR-YUV [2]1123SSIM [2]1124MS-SSIM [1]1125MOS [1]1016wPSNR [2]1127WS-PSNR [2]1128MSE0129VMAF [1]11210..127Reserved128..255Unspecified
[0124] Referring to Table 6, the value of qm_metric_type[i] according to the present disclosure must fall within the range from 0 to 9, or from 128 to 255. Values falling within the range from 10 to 127 may be reserved for future use in ITU-T | ISO / IEC, and the bitstream according to the present disclosure does not contain qm_metric_type[i] having a value between 10 and 127. Additionally, the image decoding device according to the present disclosure must ignore information related to the i-th quality metric when qm_metric_type[i] has a value between 10 and 127. Additionally, the type of the quality metric when qm_metric_type[i] has a value between 128 and 255 may not be specified or may be specified by a method not shown in the present disclosure.
[0125] The quality indicator SEI message may include a quality indicator component count flag (qm_three_component_flag[i]). The quality indicator component count flag may indicate the number of component values signaled for the i-th quality indicator. For example, if qm_three_component_flag[i] is 1, it may indicate that 3 component values are signaled for the i-th quality indicator, and if qm_three_component_flag[i] is 0, it may indicate that a single component value is signaled for the i-th quality indicator. If ChromaFormatIdc is 0, the value of qm_three_component_flag[i] must be 0. Here, ChromaFormatIdc may be a value representing the chrominance format information of the image. For example, if the value of ChromaFormatIdc is 0, it may indicate that the chrominance format of the image is monochrome.
[0126] qm_three_component_flag[i] may be signaled based on at least one of qm_num_metrics_minus1 or qm_metric_definitions_present_flag. qm_three_component_flag[i] may be signaled based on the number of quality metric entries according to qm_num_metrics_minus1. qm_three_component_flag[i] may be signaled based on the value of qm_metric_definitions_present_flag being 1, and may not be signaled based on the value of qm_metric_definitions_present_flag being 0.
[0127] If qm_three_component_flag[i] does not exist in the current quality indicator SEI message, the value of qm_three_component_flag[i] may be the same as the value of qm_three_component_flag[i] in the first quality indicator SEI message within the CLVS. The CLVS may contain the current quality indicator SEI message.
[0128] The quality metric SEI message may include a quality metric increasing direction flag (qm_metric_increasing_flag[i]). The quality metric increasing direction flag may indicate whether quality improves as the value of the i-th quality metric increases. For example, if qm_metric_increasing_flag[i] is 1, it may indicate that quality improves as the value of the i-th quality metric increases, and if qm_metric_increasing_flag[i] is 0, it may indicate that quality improves as the value of the i-th quality metric decreases.
[0129] qm_metric_increasing_flag[i] may be signaled based on at least one of qm_num_metrics_minus1 or qm_metric_type[i]. qm_metric_increasing_flag[i] may be signaled based on the number of quality metric entries according to qm_num_metrics_minus1. qm_metric_increasing_flag[i] may be signaled based on the value of qm_metric_type[i] being 0 or greater than or equal to 128, and may not be signaled based on the value of qm_metric_type[i] being greater than 0 and less than or equal to 127.
[0130] If qm_metric_increasing_flag[i] does not exist in the current quality metric SEI message, the value of qm_metric_increasing_flag[i] can be determined based on qm_metric_type[i]. For example, if qm_metric_increasing_flag[i] does not exist in the current quality metric SEI message, the value of qm_metric_increasing_flag[i] can be considered as the IncreasingFlag value corresponding to qm_metric_type[i] (IncreasingFlag[t] in Table 6).
[0131] The quality indicator SEI message may include a quality indicator full reference flag (qm_full_reference_flag[i]). The quality indicator full reference flag may indicate whether the i-th quality indicator is a full reference quality indicator calculated through comparison with a reference picture. For example, if qm_full_reference_flag[i] is 1, it may indicate that the i-th quality indicator is a full reference quality indicator calculated based on a comparison between a picture included in TestPicList and its corresponding quality reference picture, and if qm_full_reference_flag[i] is 0, it may indicate that the i-th quality indicator is a quality indicator that may or may not include a comparison between a picture included in TestPicList and its corresponding quality reference picture.
[0132] qm_full_reference_flag[i] may be signaled based on at least one of qm_num_metrics_minus1 or qm_metric_type[i]. qm_full_reference_flag[i] may be signaled based on the number of quality metric entries according to qm_num_metrics_minus1. qm_full_reference_flag[i] may be signaled based on the value of qm_metric_type[i] being 0 or greater than or equal to 128, and may not be signaled based on the value of qm_metric_type[i] being greater than 0 and less than or equal to 127.
[0133] If qm_full_reference_flag[i] does not exist within the quality metric SEI message, the value of qm_full_reference_flag[i] can be determined based on qm_metric_type[i]. For example, if qm_full_reference_flag[i] does not exist within the current quality metric SEI message, the value of qm_full_reference_flag[i] can be considered as the FullReferenceFlag value corresponding to qm_metric_type[i] (FullReferenceFlag[t] in Table 6).
[0134] The quality metric SEI message may include quality metric value length information (qm_value_len_minus1_in_bytes[i]). The quality metric value length information may represent the length in bytes of the picture quality metric value (qm_pic_metric_value[i][c]) corresponding to the i-th quality metric. For example, the value obtained by adding 1 to qm_value_len_minus1_in_bytes[i] may represent the length in bytes of qm_pic_metric_value[i][c].
[0135] qm_value_len_minus1_in_bytes[i] may be signaled based on at least one of qm_num_metrics_minus1 or qm_metric_type[i]. qm_value_len_minus1_in_bytes[i] may be signaled based on the number of quality metric entries according to qm_num_metrics_minus1. qm_value_len_minus1_in_bytes[i] may be signaled based on the value of qm_metric_type[i] being 0 or greater than or equal to 128, and may not be signaled based on the value of qm_metric_type[i] being greater than 0 and less than or equal to 127.
[0136] If qm_value_len_minus1_in_bytes[i] does not exist in the current quality metric SEI message, the value of qm_value_len_minus1_in_bytes[i] can be determined based on qm_metric_type[i]. For example, if qm_value_len_minus1_in_bytes[i] does not exist in the current quality metric SEI message, the value of qm_value_len_minus1_in_bytes[i] can be considered as the value obtained by subtracting 1 from the NumBytes value corresponding to qm_metric_type[i] (NumBytes[t] in Table 6).
[0137] A quality metric SEI message may include a quality metric description present flag (qm_metric_description_present_flag[i]). The quality metric description present flag may indicate whether quality metric description information (qm_metric_description[i]) exists for the i-th quality metric. For example, if qm_metric_description_present_flag[i] is 1, it indicates that qm_metric_description[i] exists for the i-th quality metric, and if qm_metric_description_present_flag[i] is 0, it indicates that qm_metric_description[i] does not exist for the i-th quality metric.
[0138] Quality indicator SEI messages may include a fixed bit value (qm_bit_equal_to_zero). qm_bit_equal_to_zero must be 0.
[0139] A quality metric SEI message may include quality metric description information (qm_metric_description[i]). The quality metric description information may represent a text description of a quality metric. For example, qm_metric_description[i] may represent a text description of the i-th quality metric. The length of the information included in qm_metric_description[i] must be less than or equal to 4097 bytes, excluding the null termination byte. qm_metric_description[i] may be signaled based on at least one of qm_num_metrics_minus1 or qm_metric_description_present_flag[i]. qm_metric_description[i] may be signaled as many times as the number of quality metric entries according to qm_num_metrics_minus1. qm_metric_description[i] may be signaled based on the value of qm_metric_description_present_flag[i] being 1, and may not be signaled based on the value of qm_metric_description_present_flag[i] being 0.
[0140] The quality metric SEI message may include CLVS quality metric value information (qm_clvs_metric_value[i][c]). The CLVS quality metric value information may represent the average value of the quality metric within the CLVS. For example, qm_clvs_metric_value[i][c] may represent the average value for the c-th component of the i-th quality metric of the CLVS. The length of qm_clvs_metric_value[i][c] may be determined based on qm_value_len_minus1_in_bytes[i]. For example, the length of qm_clvs_metric_value[i][c] may be calculated as shown in the following Equation 1, where the length of qm_clvs_metric_value[i][c] may be L bits.
[0141]
[0142] qm_clvs_metric_value[i][c] may be signaled based on at least one of qm_num_metrics_minus1, qm_three_component_flag[i], or qm_clvs_values_present_flag. qm_clvs_metric_value[i][c] may be signaled based on the value of qm_clvs_values_present_flag being 1, and may not be signaled based on the value of qm_clvs_values_present_flag being 0.
[0143] The quality metric SEI message may include multiple quality metric entries according to qm_num_metrics_minus1, and qm_clvs_metric_value[i][c] may be signaled for each quality metric entry. In this case, the number of component values of qm_clvs_metric_value[i][c] signaled for each quality metric entry may be determined based on the value of qm_three_component_flag[i]. For example, when the value of qm_three_component_flag[i] is 1, qm_clvs_metric_value[i][c] for each of the three components can be signaled for the i-th quality metric, and when the value of qm_three_component_flag[i] is 0, qm_clvs_metric_value[i][c] for a single component can be signaled for the i-th quality metric.
[0144] The quality indicator SEI message may include picture quality indicator value information (qm_pic_metric_value[i][c]). The picture quality indicator value information may represent the current picture quality indicator value. For example, qm_pic_metric_value[i][c] may represent the value for the c-th component of the i-th quality indicator of the current picture. The length of qm_pic_metric_value[i][c] may be determined based on qm_value_len_minus1_in_bytes[i]. For example, the length of qm_pic_metric_value[i][c] may be calculated as in Equation 1 above, where the length of qm_pic_metric_value[i][c] may be L bits.
[0145] qm_pic_metric_value[i][c] may be signaled based on at least one of qm_num_metrics_minus1, qm_three_component_flag[i], or qm_pic_values_present_flag. qm_pic_metric_value[i][c] may be signaled based on the value of qm_pic_values_present_flag being 1, and may not be signaled based on the value of qm_pic_values_present_flag being 0.
[0146] A quality metric SEI message may include multiple quality metric entries according to qm_num_metrics_minus1, and qm_pic_metric_value[i][c] may be signaled for each quality metric entry. In this case, the number of component values of qm_pic_metric_value[i][c] signaled for each quality metric entry may be determined based on the value of qm_three_component_flag[i]. For example, if the value of qm_three_component_flag[i] is 1, qm_pic_metric_value[i][c] for each of the three components may be signaled for the i-th quality metric, and if the value of qm_three_component_flag[i] is 0, qm_pic_metric_value[i][c] for a single component may be signaled for the i-th quality metric.
[0147] The meaning of the quality metric value information (qm_pic_metric_value[i][c], or qm_clvs_metric_value[i][c]) can be determined by at least one of the values of qm_metric_type[i], qm_gain_flag[i], or qm_gain_reference_flag[i].
[0148] For example, when qm_pic_values_present_flag is 1, qm_pic_metric_value[i][c] may represent the picture quality metric value (picMetricValue[i][c]) for the i-th quality metric of the type according to qm_metric_type[i]. In this case, when qm_gain_flag[i] is 0, the above qm_pic_metric_value[i][c] may have a value derived based on TestPicList[currPicIdx], PicWidth[currPicIdx], and PicHeight[currPicIdx].
[0149] On the other hand, when the value of qm_gain_flag[i] is 1, qm_pic_metric_value[i][c] may have a value derived based on the quality metric value (picMetricValueTest[i][c]) derived based on TestPicList[currPicIdx] and the quality metric value (picMetricValueGainRef[i][c]) derived based on GainRefPicList[currPicIdx]. More specifically, picMetricValueTest[i][c] may be a value derived based on TestPicList[currPicIdx], PicWidth[currPicIdx], and PicHeight[currPicIdx], picMetricValueGainRef[i][c] may be a value derived based on GainRefPicList[currPicIdx], PicWidth[currPicIdx], and PicHeight[currPicIdx], and the value of qm_pic_metric_value[i][c] may be the value obtained by subtracting picMetricValueGainRef[i][c] from picMetricValueTest[i][c].
[0150] As another example, when qm_clvs_values_present_flag is 1, qm_clvs_metric_value[i][c] may represent the average value of the i-th picture quality metric values of all pictures included in TestPicList. The i-th picture quality metric value of the j-th picture included in TestPicList (listPicMetricValue[j][i][c]) may be the value for the i-th quality metric of the type according to qm_metric_type[i] of the j-th picture in TestPicList. Also, the above j may be a value in the range of 0 to Numpics-1. In this case, when the value of qm_gain_flag[i] is 0, listPicMetricValue[j][i][c] may be the same as the value (picMetricValue[i][c]) derived based on TestPicList[j], PicWidth[j], and PicHeight[j].
[0151] On the other hand, when the value of qm_gain_flag[i] is 1, qm_clvs_metric_value[i][c] may be a value derived based on the quality metric value derived from TestPicList[j] (listPicMetricValueTest[j][i][c]), and the quality metric value derived from GainRefPicList[j] (listPicMetricValueGainRef[j][i][c]). More specifically, listPicMetricValueTest[j][i][c] may be a value derived based on TestPicList[j], PicWidth[j], and PicHeight[j], listPicMetricValueGainRef[j][i][c] may be a value derived based on GainRefPicList[j], PicWidth[j], and PicHeight[j], and the value of qm_clvs_metric_value[i][c] may be the average value of the values obtained by subtracting listPicMetricValueGainRef[j][i][c] from listPicMetricValueTest[j][i][c].
[0152] Example 2
[0153] Table 7 is another example of a quality indicator SEI message included in a bitstream.
[0154] quality_metric( payloadSize ) {Descriptorqm_metric_definitions_present_flagu(1)qm_clvs_values_present_flagu(1)qm_pic_values_present_flagu(1)qm_num_metrics_minus1u(4)if ( qm_metric_definitions_present_flag ) {qm_gain_enabled_flagu(1)for( i = 0; i <= qm_num_metrics_minus1; i++ ) {if ( qm_gain_enabled_flag )qm_gain_flag[ i ]u(1)if ( qm_gain_flag[ i ] )qm_gain_reference_flag[ i ]u(1)qm_metric_type[ i ]u(8)if ( qm_metric_type[ i ] = = 0 | | qm_metric_type[ i ] >= 128) {qm_metric_increasing_flag[ i ]u(1)qm_full_reference_flag[ i ]u(1)qm_value_len_minus1_in_bytes[ i ]u(2)qm_metric_description_present_flag[ i ]u(1)}}}while( !byte_aligned( ) )qm_bit_equal_to_zero / * equal to 0 * / f(1)for( i = 0; i <= qm_num_metrics_minus1; i++ ) {if ( qm_metric_description_present_flag[ i ] )qm_metric_description[ i ]st(v)for( i = 0; i <= qm_num_metrics_minus1; i++ )qm_three_component_flag[ i ]u(1)if( qm_clvs_values_present_flag )for( i = 0; i <= qm_num_metrics_minus1; i++ )for( c = 0;c < ( qm_three_component_flag[ i ] ? 3 : 1 ); c++ )qm_clvs_metric_value[ i ][ c ]u(v)if( qm_pic_values_present_flag )for( i = 0; i <= qm_num_metrics_minus1; i++ )for( c = 0; c < ( qm_three_component_flag[ i ] ? 3 : 1 ); c++ )qm_pic_metric_value[ i ][ c ]u(v)};
[0155] The quality indicator SEI message may include a quality indicator component count flag (qm_three_component_flag[i]). The quality indicator component count flag may indicate the number of component values signaled for the i-th quality indicator entry (i-th quality indicator). For example, if qm_three_component_flag[i] is 1, it may indicate that three component values are signaled for the i-th quality indicator, and if qm_three_component_flag[i] is 0, it may indicate that a single component value is signaled for the i-th quality indicator. If ChromaFormatIdc is 0, the value of qm_three_component_flag[i] must be 0. Here, ChromaFormatIdc may be a value representing the chrominance format information of the image. For example, if the value of ChromaFormatIdc is 0, it may indicate that the chrominance format of the image is monochrome.
[0156] qm_three_component_flag[i] can be signaled based on qm_num_metrics_minus1. qm_three_component_flag[i] can be signaled as many times as the number of quality metric entries according to qm_num_metrics_minus1.
[0157] qm_three_component_flag[i] can be signaled regardless of the value of qm_metric_definitions_present_flag. For example, qm_three_component_flag[i] can be signaled when qm_metric_definitions_present_flag is 0, and can also be signaled when qm_metric_definitions_present_flag is 1.
[0158] qm_metric_definitions_present_flag, qm_clvs_values_present_flag, qm_pic_values_present_flag, qm_num_metrics_minus1, qm_gain_enabled_flag, qm_gain_flag[i], qm_gain_reference_flag[i], qm_metric_type[i], qm_metric_increasing_flag[i], qm_full_reference_flag[i], qm_value_len_minus1_in_bytes[i], qm_metric_description_present_flag[i], qm_bit_equal_to_zero, qm_metric_description[i], qm_clvs_metric_value[i][c], and qm_pic_metric_value[i][c] is the table As examined by referring to 5.
[0159] Example 3
[0160] Table 8 is another example of a quality indicator SEI message included in a bitstream.
[0161] quality_metric( payloadSize ) {Descriptorqm_metric_definitions_present_flagu(1)qm_clvs_values_present_flagu(1)qm_pic_values_present_flagu(1)qm_num_metrics_minus1u(4)...
[0162] A quality metric SEI message may include quality metric count information (qm_num_metrics_minus1). This quality metric count information may represent the number of quality metric entries within the quality metric SEI message. For example, a value obtained by adding 1 to qm_num_metrics_minus1 may represent the number of quality metric entries within the quality metric SEI message. qm_num_metrics_minus1 for all quality metric SEI messages within CLVS must have the same value.
[0163] qm_metric_definitions_present_flag, qm_clvs_values_present_flag, and qm_pic_values_present_flag are as seen with reference to Table 5.
[0164] Table 9 is an example of an explanation of how to derive picture quality indicator values for the i-th quality indicator according to qm_metric_type[i].
[0165] Inputs to this process are a tested picture testPic, a picture width picWidth in luma samples, and a picture height picHeight in luma samples.Let a quality reference picture referencePic be the original picture that was given as input to the encoding system and has the output time equal to the output time of testPic.testPic[ cIdx ] and referencePic[ cIdx ] denote the cIdx-th sample array of the testPic and referencePic, respectively.testPic[ cIdx ][ x ][ y ] and referencePic[ cIdx ][ x ][ y ] denote the sample at location ( x, y ) within the cIdx-th sample array of testPic and referencePic, respectively.The pictures quality metric, picMetricValue[ i ][ c ] is derived as follows:- When qm_metric_type[ i ] is equal to 0,- listPicMetricValueTest[ j ][ i ][ c ] is the set equal to picMetricValue[ i ][ c ] derived by the process specified in clause X.X with testPic, picWidth, and picHeight assigned to be TestPicList[ currPicIdx ], PicWidth[ currPicIdx ], and PicHeight[ currPicIdx ], respectively.- picMetricValueGainRef[ j ][ i ][ c ] is the set qual to picMetricValue[ i ][ c ] derived by the process specified in clause X.X with testPic, picWidth, and picHeight assigned to be GainRefPicList[ currPicIdx ], PicWidth[ currPicIdx ], and PicHeight[ currPicIdx ], respectively.- When qm_metric_increasing_flag[ i ] is equal 1, a higher value of picMetricValue[ i ][ c ] indicates testPic is of better quality than for a picture with a lower value of picMetricValue[ i ][ c ].- When qm_full_reference_flag[ i ] is equal to 1, of picMetricValue[ i ][ c ] indicates a quality metric value calculated from a comparison of testPic with referencePic.- qm_metric_description[ i ] provides a text description of the quality metric indicated by picMetricValue[ i ][ c ].- Additional interpretation of picMetricValue[ i ][ c ] is determined by external means not specified in this Specification.- When qm_metric_type[ i ] is equal to 1,- picMetricValue[ i ][ 0 ] is set equal to the PSNR value calculated using clauses 9.4.2 and D.2 of ISO / IEC 23001-11 [2] for the luma components of testPic and referencePic, with bit depth OrigBitDepth, width picWidth, and height picHeight.- When qm_three_component_flag[ i ] is equal to 1,- picMetricValue[ i ][ 1 ] and picMetricValue[ i ][ 2 ] are set equal to the PSNR values calculated using clauses 9.4.2 and D.2 of ISO / IEC 23001-11 [2] for the Cb and Cr components, respectively, of testPic and referencePic, with bit depth OrigBitDepth width picWidth / SubWidthC, and height picHeight / SubHeightC.- When qm_metric_type[ i ] is equal to 2,- picMetricValue[ i ][ 0 ] is set equal to the value of the variable psnrYUV calculated as follows:- The variable psnrY is set equal to the PSNR value calculated using clauses 9.4.2 and D.2 of ISO / IEC 23001-11 [2] for the luma components of testPic and referencePic, with bit depth OrigBitDepth width picWidth, and height picHeight.- The variables psnrU and psnrV are set equal to the PSNR values calculated using clauses 9.4.2 and D.2 of ISO / IEC 23001-11 [2] for the Cb and Cr components, respectively, of testPic and referencePic, with bit depth OrigBitDepth, width picWidth / SubWidthC, and height picHeight / SubHeightC.psnrYUV = (10*psnrY + psnrU + psnrV ) / 12- When qm_metric_type[ i ] is equal to 3,- picMetricValue[ i ][ 0 ] is set equal to the value of SSIM calculated from clauses 9.4.2 and D.5 of ISO / IEC 23001-11 [2] for the luma components of testPic and referencePic, with bit depth OrigBitDepth width picWidth, and height picHeight.- When qm_three_component_flag[ i ] is equal to 1,- picMetricValue[ i ][ 1 ] and picMetricValue[ i ][ 2 ] are set equal to the SSIM values calculated from clauses 9.4.2 and D.5 of ISO / IEC 23001-11 [2] for the Cb and Cr components, respectively, of testPic and referencePic, with bit depth OrigBitDepth, width picWidth / SubWidthC, and height picHeight / SubHeightC.- When qm_metric_type[ i ] is equal to 4,- picMetricValue[ i ][ 0 ] is set equal to the value of MS-SSIM calculated from clause 4.3.3 of ISO / IEC 23001-10 [1] for the luma components of testPic and referencePic, with bit depth OrigBitDepth.- When qm_three_component_flag[ i ] is equal to 1,- picMetricValue[ i ][ 1 ] and picMetricValue[ i ][ 2 ] are set equal to the MS-SSIM values calculated from clause 4.3.3 of ISO / IEC 23001-10 [1] for the Cb and Cr components, respectively, of testPic and referencePic, with bit depth OrigBitDepth.- When qm_metric_type[ i ] is equal to 5,- picMetricValue[ i ][ 0 ] is set equal to the value of MOS specified in clause 4.3.6 of ISO / IEC 23001-10 [1].- When qm_metric_type[ i ] is equal to 6,- picMetricValue[ i ][ 0 ] is set equal to the value of wPSNR calculated from clauses 9.4.2 and D.3 of ISO / IEC 23001-11 [2] for the luma components of testPic and referencePic, with bit depth OrigBitDepth width picWidth, and height picHeight.- When qm_three_component_flag[ i ] is equal to 1,- picMetricValue[ i ][ 1 ] and picMetricValue[ i ][ 2 ] are set equal to the wPSNR values calculated from clauses 9.4.2 and D.3 of ISO / IEC 23001-11 [2] for the Cb and Cr components, respectively, of testPic and referencePic, with bit depth OrigBitDepth, width picWidth / SubWidthC, and height picHeight / SubHeightC.- When qm_metric_type[ i ] is equal to 7,- picMetricValue[ i ][ 0 ] is set equal to the value of WS-PSNR calculated from clauses 9.4.2 and D.4 of ISO / IEC 23001-11 [2] for the luma components of testPic and referencePic, with bit depth OrigBitDepth, width picWidth, and height picHeight.- When qm_three_component_flag[ i ] is equal to 1,- picMetricValue[ i ][ 1 ] and picMetricValue[ i ][ 2 ] are set equal to the WS-PSNR values calculated from clauses 9.4.2 and D.4 of ISO / IEC 23001-11 [2]for the Cb and Cr components, respectively, of testPic and referencePic, with bit depth OrigBitDepth, width picWidth / SubWidthC, and height picHeight / SubHeightC.- When qm_metric_type[ i ] is equal to 8,- picMetricValue[ i ][ 0 ] is set equal to the value of lumaMse, interpreted as a floating-point value, derived as follows:lumaSse = 0for( y = 0; y < picHeight; y++)for( x = 0; x < picWidth; x++ )lumaSse += (testPic[ 0 ][ x ][ y ] - referencePic[ 0 ][ x ][ y ]). 2 lumaMse = ( lumaSse / (CroppedHeight * CroppedWidth) ) / 100- When qm_three_component_flag[ i ] is equal to 1, picMetricValue[ i ][ 1 ] and picMetricValue[ i ][ 2 ] are set equal to the values of CbMse and CrMse, respectively, interpreted as floating-point values, derived as follows:CbSse = 0CrSse = 0for( y = 0; y < picHeight / SubWidthC; y++)for( x = 0; x < picWidth / SubWidthC; x++ ) {CbSse += (testPic[1][y][x] - referencePic[1][y][x]) 2CbSse += (testPic[1][y][x] - referencePic[1][y][x]) 2 }CbMse = ( CbSse / ( picHeight * CroppedWidth / (SubWidthC * SubWidthC) ) / 100CrMse = ( CrSse / ( picHeight * CroppedWidth / (SubWidthC * SubWidthC) ) / 100- When qm_metric_type[ i ] is equal to 9,- The picMetricValue[ i ]
[0000] is set equal to VMAF calculated from clause 4.3.3 of ISO / IEC 23001-10 [1] for the luma components of testPic and referencePic, with bit depth OrigBitDepth. VMAF is a full reference metric using machine learning to fuse the scores from a number of elementary quality metrics to produce the quality score for the video. The metric is trained to simulate the quality assessment obtained as a result of a subjective test. The range of values obtained from the regular (HD) VMAF model is [0,..100].- When qm_metric_description_present_flag[ i ] is equal to 1, qm_metric_description[ i ] may contain information about the version of VMAF metric, such as the metric release number and the VMAF model.
[0166] In order to use quality indicator SEI messages in VVC (Versatile Video Codec), it may be necessary to interpret the quality indicator SEI messages. In this case, the variables for interpreting the quality indicator SEI messages may include at least one GainRefPicList among ChromaFormatIdc, NumPics, TestPicList, PicWidth, and PicHeight.
[0167] TestPicList may consist of cropped decoded pictures corresponding to the current CLVS in the initial state, and said pictures may be arranged according to output order.
[0168] If a quality indicator SEI message is included as a single SEI message type within an SEI processing order (SPO) SEI message, all quality indicator SEI messages associated with the said SPO SEI message must be included within a processing order nesting (PON) SEI message.
[0169] When a quality indicator SEI message is included as the i-th SEI message type within an SPO SEI message, the conditions according to Table 10 may be applied.
[0170] - It is a requirement of bitstream conformance that an SEI message seiB that implies post-processing to be performed shall be present as the j-th type of an SEI message in the same SEI processing order SEI message and po_sei_processing_order[ j ] shall be equal to po_sei_processing_order[ i ].- The quality metric SEI message indicates the picture quality resulting from the post-processing implied by seiB.- TestPicList is updated as follows for each post-processing stage with po_sei_processing_order[ j ] less than or equal to po_sei_processing_order[ i ] in a non-decreasing order of j.- When the post-processing stage results into a picture picA with an output time that is equal to the output time of a picture picB in TestPicList, picB in TestPicList is replaced by picA.- When the post-processing stage results into a picture picA with an output time that is not equal to the output time of any picture in TestPicList, picA is inserted in TestPicList in a manner that pictures in TestPicList remain in output order.
[0171] Table 10 is an example of the conditions applied when a quality indicator SEI message is included as the i-th SEI message type within an SPO SEI message.
[0172] NumPics can be set to be equal to the number of pictures included in TestPicList.
[0173] PicWidth[i] and PicHeight[i] can be set to be equal to the luminance sample reference width and height of the pictures included in TestPicList[i], respectively.
[0174] If a quality indicator SEI message is included as the k-th SEI message within a PON SEI message, and qm_gain_flag[i] is 1 for at least one quality indicator, the conditions according to Table 11 may be applied.
[0175] - If qm_gain_reference_flag[ i ] is equal to 0, the i-th metric value in the quality metric SEI message represents a gain of the post-processing stage with po_sei_processing_order[ j ] equal to pon_processing_order[ k ] relative to the picture or pictures used as input to that post-processing stage and GainRefPicList is set equal to TestPicList derived for the processing stages up to but not including the processing stage with po_sei_processing_order[ j ].- Otherwise (qm_gain_reference_flag[ i ] is equal to 1), the i-th metric value in the quality metric SEI message represents a cumulative gain of all the post-processing stages with po_sei_processing_order[ j ] less than or equal to pon_processing_order[ k ] relative to the cropped decoded picture or pictures and GainRefPicList consists of the cropped decoded pictures of the current CLVS in output order.- It is a requirement of bitstream conformance that the count of pictures in GainRefPicList shall be equal to NumPics and the width and height of GainRefPicList[ i ] in luma samples shall be equal to PicWidth[ i ] and PicHeight[ i ], respectively.
[0176] Table 11 is an example of a condition applied when a quality indicator SEI message is included as the k-th SEI message within a PON SEI message and qm_gain_flag[i] is 1 for at least one quality indicator.
[0177] ChromaFormatIdc can be derived by referring to Table 12.
[0178] - If the quality metric SEI message is not included in a processing order nesting SEI message, ChromaFormatIdc is set equal to sps_chroma_format_idc.-Otherwise (the quality metric SEI message is included in a processing order nesting SEI message), ChromaFormatIdc is set to a value that matches the chroma format of the pictures in TestPicList and it is a requirement of bitstream conformance that the chroma format of all the pictures in TestPicList and GainRefPicList, when present, shall be identical.
[0179] Table 12 is an example of a method to derive ChromaFormatIdc.
[0180] If a quality indicator SEI message (qmSeiA) exists in a picture unit other than the first picture unit in CLVS in the decoding order, and at least one qm_clvs_metric_value[i][c] exists in the quality indicator SEI message, then the conditions according to Table 13 may be applied.
[0181] - If qmSeiA is not included in a processing order nesting SEI message, each value of qm_clvs_metric_value[ i ][ c ] shall be equal to the value of qm_clvs_metric_value[ i ][ c ] in the quality metric SEI message that is present in the first picture unit of the CLVS and is not is included in a processing order nesting SEI message.- Otherwise (qmSeiA is included in a processing order nesting SEI message with a certain set of pon_target_po_id[ i ] values), the following applies:- It is a requirement of bitstream conformance that there shall be quality metric SEI message qmSeiB that is present in the first picture unit of the CLVS and is included in a processing order nesting SEI message with the same set of pon_target_po_id[ i ] values.- Each value of qm_clvs_metric_value[ i ][ c ] in qmSeiA shall be equal to the value of qm_clvs_metric_value[ i ][ c ] in qmSeiB.
[0182] Table 13 is an example of a condition that applies when a quality indicator SEI message (qmSeiA) exists in a picture unit other than the first picture unit in CLVS in the decoding order, and at least one qm_clvs_metric_value[i][c] exists in the quality indicator SEI message.
[0183] Quality indicator information may be configured within a quality indicator SEI message. The quality indicator SEI message may be included in a network abstraction layer (NAL) unit of the bitstream, but is not limited thereto. For example, the quality indicator information according to the present disclosure may be configured in a high-level syntax of the bitstream. Here, the high-level syntax may be at least one of a sequence parameter set (SPS), a picture parameter set (PPS), a picture header (PH), or a slice header (SH). Alternatively, the quality indicator SEI message according to the present disclosure may be defined as a separate NAL unit type within the bitstream.
[0184] FIG. 5 illustrates a schematic configuration of a decoding device (300) that performs a method for restoring a video picture according to the present disclosure.
[0185] Referring to FIG. 5, the decoding device (300) may include a receiving unit (500), a video information extraction unit (510), and a video restoration unit (520).
[0186] The receiver (500) can receive a bitstream including an encoded video picture.
[0187] The video information extraction unit (510) can extract video information regarding an encoded video picture from the bitstream. Additionally, the video information extraction unit (710) can extract quality indicator information from the bitstream, as seen with reference to FIG. 4.
[0188] The video restoration unit (520) can restore an encoded video picture based on extracted video information.
[0189] FIG. 6 illustrates a method for generating a bitstream performed in an encoding device (200) according to the present disclosure.
[0190] A video picture being encoded can be received (S600).
[0191] Video information regarding the video picture can be generated by encoding the received video picture (S610).
[0192] A bitstream containing video information about a video picture can be generated (S620).
[0193] In addition, quality indicator information applied to the bitstream can be generated, as seen with reference to FIG. 4. The quality indicator information can be included in the bitstream.
[0194] FIG. 7 illustrates a schematic configuration of an encoding device (200) that performs a method for generating a bitstream according to the present disclosure.
[0195] Referring to FIG. 7, the encoding device (200) may include a receiving unit (700), a video compression unit (710), and a bitstream generation unit (720).
[0196] The receiver (700) can receive one or more video pictures that are encoded.
[0197] The video compression unit (710) can generate video information regarding the video picture by encoding one or more received video pictures. The video compression unit (710) can generate quality indicator information applied to the bitstream.
[0198] The bitstream generation unit (720) can generate a bitstream including the video information. The bitstream generation unit (720) can generate a bitstream including the generated quality indicator information.
[0199] In the embodiments described above, methods are described based on flowcharts 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 as described above. Furthermore, those skilled in the art will understand that the steps shown in the flowcharts are not exclusive, and other steps may be included, or one or more steps of the flowcharts may be omitted without affecting the scope of the embodiments of this document.
[0200] The method according to the embodiments of the present document described above may be implemented in the form of software, and the encoding device and / or decoding device according to the present document may be included in a device that performs image processing, such as a TV, computer, smartphone, set-top box, display device, etc.
[0201] When the embodiments described in this document are implemented in software, the method described above may be implemented as a module (process, function, etc.) that performs the function described above. The module may be stored in memory and executed by a processor. The memory may be located inside or outside the processor and may be connected to the processor by various well-known means. The processor may include an application-specific integrated circuit (ASIC), other chipsets, logic circuits, and / or data processing devices. The memory may include read-only memory (ROM), random access memory (RAM), flash memory, memory cards, storage media, and / or other storage devices. That is, the embodiments described in this document may be implemented and executed on a processor, microprocessor, controller, or chip. For example, the functional units illustrated in each figure may be implemented and executed on a computer, processor, microprocessor, controller, or chip. In this case, information on instructions or algorithms for implementation may be stored on a digital storage medium.
[0202] In addition, the decoding device and encoding device to which the embodiment(s) of the present specification are applied may be included in multimedia broadcasting transmission and reception devices, mobile communication terminals, home cinema video devices, digital cinema video devices, surveillance cameras, video conversation devices, real-time communication devices such as video communication, mobile streaming devices, storage media, camcorders, Video on Demand (VoD) service providers, Over-the-top video (OTT) devices, internet streaming service providers, 3D video devices, virtual reality (VR) devices, augmented reality (AR) devices, video phone video devices, transportation terminals (e.g., vehicle terminals (including autonomous vehicles), airplane terminals, ship terminals, etc.), and medical video devices, and may be used to process video signals or data signals. For example, Over-the-top video (OTT) devices may include game consoles, Blu-ray players, internet-connected TVs, home theater systems, smartphones, tablet PCs, Digital Video Recorders (DVRs), etc.
[0203] Additionally, the processing method to which the embodiment(s) of this specification are applied may be produced in the form of a program that is executed by a computer and may be stored on a computer-readable recording medium. Multimedia data having a data structure according to the embodiment(s) of this specification may also be stored on 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 may 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. Additionally, the computer-readable recording medium includes a medium implemented in the form of a carrier wave (e.g., transmission over the Internet). Furthermore, a bitstream generated by an encoding method may be stored on a computer-readable recording medium or transmitted via a wired or wireless communication network.
[0204] Additionally, the embodiments of this specification may be implemented as a computer program product by program code, and said program code may be executed on a computer by the embodiments of this specification. said program code may be stored on a carrier readable by a computer.
[0205] FIG. 8 shows an example of a content streaming system to which embodiments of the present disclosure can be applied.
[0206] Referring to FIG. 8, 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.
[0207] The above encoding server compresses content input from multimedia input devices, such as smartphones, cameras, and camcorders, into digital data to generate a bitstream and transmits it to the streaming server. As another example, if multimedia input devices, such as smartphones, cameras, and camcorders, generate the bitstream directly, the encoding server may be omitted.
[0208] The bitstream above may 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 may temporarily store the bitstream during the process of transmitting or receiving the bitstream.
[0209] 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 a medium to inform the user of available services. When a user requests a desired service from the web server, the web server transmits it to the streaming server, and the streaming server transmits the multimedia data to the user. At this time, the content streaming system may include a separate control server, and in this case, the control server plays the role of controlling commands and responses between each device within the content streaming system.
[0210] The streaming server may receive content from a media storage and / or an encoding server. For example, when receiving content from the encoding server, the content may be received in real time. In this case, to provide a seamless streaming service, the streaming server may store the bitstream for a certain period of time.
[0211] Examples of the above user devices may include mobile phones, smartphones, laptop computers, digital broadcasting terminals, PDAs (personal digital assistants), PMPs (portable multimedia players), navigation systems, slate PCs, tablet PCs, ultrabooks, wearable devices (e.g., smartwatches, smart glasses, HMDs (head-mounted displays)), digital TVs, desktop computers, digital signage, etc.
[0212] Each server within the above-mentioned content streaming system can be operated as a distributed server, and in this case, data received from each server can be processed in a distributed manner.
[0213] The claims described in this specification may be combined in various ways. For example, the technical features of the method claims in this specification may be combined to be implemented as a device, and the technical features of the device claims in this specification may be combined to be implemented as a method. Furthermore, the technical features of the method claims and the technical features of the device claims in this specification may be combined to be implemented as a device, and the technical features of the method claims and the technical features of the device claims in this specification may be combined to be implemented as a method.
Claims
1. A step of receiving a bitstream including an encoded video picture; and The method includes the step of restoring an encoded video picture contained in the bitstream, The above bitstream includes a quality indicator SEI (Supplementary Enhancement Information) message, and The above quality indicator SEI message includes a quality indicator definition flag indicating whether information defining the quality indicator is included within the quality indicator SEI message, quality indicator count information indicating the number of quality indicator entries, and a quality indicator component count flag indicating the number of component values signaled for the quality indicator. A method in which the above quality indicator SEI message is obtained from the NAL (network abstraction layer) unit of the bitstream.
2. In Paragraph 1, A method in which the number of quality indicator components flag is signaled regardless of the value of the quality indicator definition flag.
3. In Paragraph 1, If the above quality indicator component count flag is 0, it indicates that a single component value is signaled for the above quality indicator, and A method indicating that when the number of quality indicator components flag is 1, three component values are signaled for the quality indicator.
4. In Paragraph 1, A method in which the number of quality indicator components flag is signaled based on the number of quality indicators information.
5. In Paragraph 1, If the value of the above quality indicator definition flag is 0, it indicates that information defining the above quality indicator does not exist, and A method indicating that information defining the quality indicator exists when the value of the quality indicator definition flag is 1.
6. In Paragraph 1, A method in which, when a plurality of quality indicator SEI messages are included within a Coded Layer Video Sequence (CLVS), the number of quality indicators included in each of the plurality of quality indicator SEI messages is constrained to have the same value.
7. Step of receiving the video picture to be encoded; A step of encoding the received video picture to generate video information regarding the video picture; Step of generating a quality indicator SEI (Supplementary Enhancement Information) message; and The method includes the step of generating a bitstream including the video information and the quality indicator SEI message, The above quality indicator SEI message includes a quality indicator definition flag indicating whether information defining the quality indicator is included within the quality indicator SEI message, quality indicator count information indicating the number of quality indicator entries, and a quality indicator component count flag indicating the number of component values signaled for the quality indicator. A method in which the above quality indicator SEI message is encoded in the NAL (network abstraction layer) unit of the bitstream.
8. A computer-readable storage medium that stores a bitstream generated by the method according to paragraph 7.
9. A step of generating a bitstream; wherein the bitstream is generated based on the steps of receiving a video picture to be encoded, encoding the received video picture to generate video information regarding the video picture, and generating a quality indicator SEI (Supplementary Enhancement Information) message, and The method includes the step of transmitting data including the above bitstream, The above quality indicator SEI message includes a quality indicator definition flag indicating whether information defining the quality indicator is included within the quality indicator SEI message, quality indicator count information indicating the number of quality indicator entries, and a quality indicator component count flag indicating the number of component values signaled for the quality indicator. A method in which the above quality indicator SEI message is encoded in the NAL (network abstraction layer) unit of the bitstream.