Image encoding / decoding method and apparatus and recording medium storing bitstream

CN123023319APending Publication Date: 2026-10-30LG ELECTRONICS INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202580023129.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-03-28
Filing Date
2025-03-28
Publication Date
2026-10-30

AI Technical Summary

Benefits of technology

[0023]根据本公开,通过在考虑用于定义明确优化目标的约束的情况下对优化相关信息进行编码,可以更高效地用信号通知编码器优化信息。

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN123023319A_ABST
    Figure CN123023319A_ABST
Patent Text Reader

Abstract

An image encoding method and apparatus according to the present disclosure can receive a video picture to be encoded, encode the received video picture to generate a compressed video picture, generate encoder optimization information, and generate a bitstream including the compressed video picture and the encoder optimization information. Here, the encoder optimization information can include at least one of an EOI identifier for human viewing and an EOI identifier for machine analysis.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to an image encoding / decoding method and apparatus, as well as a recording medium for storing bit streams. Background Technology

[0002] Recently, the demand for high-resolution and high-quality images, such as HD (high-definition) and UHD (ultra-high-definition) images, has been increasing in various application areas, and therefore, efficient image compression technologies are being discussed.

[0003] Various techniques exist, such as inter-frame prediction techniques that use video compression technology to predict pixel values ​​included in the current frame from frames before or after the current frame, intra-frame prediction techniques that use pixel information in the current frame to predict pixel values ​​included in the current frame, and entropy coding techniques that assign short codes to values ​​that occur frequently and long codes to values ​​that occur infrequently. These image compression techniques can be used to effectively compress image data and send or store it. Summary of the Invention

[0004] Technical issues

[0005] This disclosure provides methods and apparatus for configuring encoder optimization information.

[0006] This disclosure provides a method and apparatus for signaling encoder optimization information.

[0007] Technical solution

[0008] The image encoding method and apparatus according to this disclosure can receive a video frame to be encoded, encode the received video frame to generate a compressed video frame, generate encoder optimization information, and generate a bitstream including the compressed video frame and the encoder optimization information. The encoder optimization information can be encoded into the network abstraction layer (NAL) unit of the bitstream. The encoder optimization information may include at least one of an EOI identifier for human viewing or an EOI identifier for machine analysis.

[0009] In the image encoding method and apparatus according to this disclosure, both the EOI identifier for human viewing and the EOI identifier for machine analysis can have a value in the range of 0 to 3.

[0010] In the image encoding method and apparatus according to this disclosure, a constraint can be applied that neither the EOI identifier for human viewing nor the EOI identifier for machine analysis should be 1.

[0011] In the image encoding method and apparatus according to this disclosure, when the value of the EOI identifier for human viewing is 1, it may mean that the video is not suitable for human viewing, and when the value of the EOI identifier for machine analysis is 1, it may mean that the video is not suitable for machine analysis.

[0012] In the image encoding method and apparatus according to this disclosure, the number of values ​​that can be set for the other of the EOI identifier for human viewing and the EOI identifier for machine analysis can be determined differently based on the value of one of the EOI identifier for human viewing and the EOI identifier for machine analysis.

[0013] In the image encoding method and apparatus according to this disclosure, a constraint can be applied that neither the EOI identifier for human viewing nor the EOI identifier for machine analysis should be 0.

[0014] In the image encoding method and apparatus according to this disclosure, a constraint may be applied that at least one of the EOI identifier for human viewing and the EOI identifier for machine analysis should have a value of 3.

[0015] In the image encoding method and apparatus according to this disclosure, encoder optimization information may include object-based optimization-related information. Here, whether object-based optimization-related information is encoded may be determined based on the value of the EOI identifier for human viewing.

[0016] In the image encoding method and apparatus according to this disclosure, the encoder optimization information may include privacy-preserving optimization-related information. Here, whether the privacy-preserving optimization-related information is encoded may be determined based on the value of the EOI identifier for human viewing.

[0017] In the image encoding method and apparatus according to this disclosure, the encoder optimization information may include bit depth optimization related information, and the bit depth optimization related information may include information indicating the type of bit depth optimization. Here, based on the value of the EOI identifier for human viewing, a constraint may be applied that the value of the information indicating the type of bit depth optimization should not be 0.

[0018] The image decoding method and apparatus according to this disclosure can receive a bitstream including encoded video frames and reconstruct the encoded video frames included in the bitstream. Here, the bitstream may include encoder optimization information, and the encoder optimization information may be obtained from the network abstraction layer (NAL) unit of the bitstream. The encoder optimization information may include at least one of an EOI identifier for human viewing or an EOI identifier for machine analysis.

[0019] A computer-readable digital storage medium is provided for storing encoded video / image information, which enables a decoding device according to the present disclosure to perform an image decoding method.

[0020] A computer-readable digital storage medium is provided for storing video / image information generated based on the image encoding method of this disclosure.

[0021] A method and apparatus are provided for transmitting video / image information generated according to the image encoding method of this disclosure.

[0022] Beneficial effects

[0023] According to this disclosure, by encoding optimization-related information in consideration of constraints used to define a well-defined optimization objective, the encoder can be signaled with optimization information more efficiently.

[0024] According to this disclosure, by encoding detailed information related to optimization characteristics while taking optimization purposes into account, the encoder can be notified of optimization information more efficiently via signals. Attached Figure Description

[0025] Figure 1 A video / image encoding system according to this disclosure is shown.

[0026] Figure 2 A schematic block diagram of an encoding apparatus to which embodiments of the present disclosure are applicable and which performs encoding of video / image signals is shown.

[0027] Figure 3 A schematic block diagram of a decoding apparatus to which embodiments of the present disclosure are applicable and which performs decoding of video / image signals is shown.

[0028] Figure 4 A method for generating a bit stream, performed by an encoding device 200 according to the present disclosure, is illustrated.

[0029] Figure 5 An illustrative configuration of an encoding device 200 for performing a method for generating a bitstream according to the present disclosure is shown.

[0030] Figure 6 A method for reconstructing a video frame, performed by a decoding device 300 according to the present disclosure, is illustrated.

[0031] Figure 7 An illustrative configuration of a decoding device 300 for performing a method for reconstructing a video frame according to the present disclosure is shown.

[0032] Figure 8 Examples of content streaming systems to which embodiments of this disclosure can be applied are shown. Detailed Implementation

[0033] Because this disclosure can be modified in various ways and has multiple embodiments, specific embodiments will be shown in the accompanying drawings and described in detail in the specific embodiments. However, this disclosure is not intended to be limited to the specific embodiments, but should be understood to include all changes, equivalents, and substitutions included within the spirit and scope of this disclosure. Similar reference numerals are used for similar components in the description of the various figures.

[0034] Terms such as "first," "second," etc., may be used to describe various components, but components should not be limited by these terms. Terms are used only to distinguish one component from others. For example, without departing from the scope of this disclosure, a first component may be referred to as a second component, and similarly, a second component may be referred to as a first component. Terms include any combination of one or more of the associated terms.

[0035] When a component is described as "connected" or "linked" to another component, it should be understood that it can be directly connected or linked to the other component, but the other component can exist in between. On the other hand, when a component is described as "directly connected" or "directly linked" to another component, it should be understood that there is no other component in between.

[0036] The terminology used in this application is for describing particular embodiments only and is not intended to limit this disclosure. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this application, it should be understood that terms such as “comprising” or “having” are intended to specify the presence of the features, quantities, steps, operations, components, portions, or combinations thereof described in this specification, but do not preclude the possibility of the presence or addition of one or more other features, quantities, steps, operations, components, portions, or combinations thereof.

[0037] This disclosure relates to video / image coding. For example, the methods / implementations disclosed herein can be applied to methods disclosed in the Multifunctional Video Coding (VVC) standard. Additionally, the methods / implementations disclosed herein can be applied to methods disclosed in the Basic Video Coding (EVC) standard, the AOMedia Video 1 (AV1) standard, the Audio Video Coding 2 (AVS2) standard, or next-generation video / image coding standards (e.g., H.267 or H.268).

[0038] This specification sets forth various implementations of video / image encoding, and unless otherwise specified, these implementations may be combined with each other.

[0039] In this article, video can refer to a collection of images over time. A frame typically refers to a unit representing an image within a specific time period, and a slice / tile is a unit that forms part of a frame during encoding. A slice / tile can include at least one Code Tree Unit (CTU). A frame can consist of at least one slice / tile. A tile is a rectangular area composed of multiple CTUs within a specific tile column and a specific tile row of a frame. A tile column is a rectangular area of ​​CTUs with a height equal to the height of the frame and a width specified by the syntax requirements of the frame parameter set. A tile row is a rectangular area of ​​CTUs with a height specified by the frame parameter set and a width equal to the width of the frame. CTUs within a tile can be arranged continuously according to CTU raster scans, and tiles within a frame can be arranged continuously according to tile raster scans. A slice can include an integer number of complete tiles of a frame that can be exclusively included in a single NAL unit, or an integer number of consecutive complete CTU rows within a tile. Furthermore, a frame can be divided into at least two sub-frames. A sub-frame can be a rectangular area of ​​at least one slice within a frame.

[0040] A pixel, or pelin, can represent the smallest unit that makes up a frame (or image). Additionally, "sample" can be used as the term corresponding to a pixel. A sample can typically represent a pixel or a pixel value, and can represent only the pixel / pixel value of the luminance component or only the pixel / pixel value of the chrominance component.

[0041] A unit can represent the basic unit of image processing. A unit may include a specific region of the image and at least one of the information associated with that region. A unit may include a luminance block and two chrominance (e.g., cb, cr) blocks. In some cases, the term "unit" may be used interchangeably with terms such as "block" or "region". In general, an M×N block may include a set (or array) of transform coefficients or samples (or sample arrays) consisting of M columns and N rows.

[0042] In this document, “A or B” can mean “A only”, “B only”, or “both A and B”. In other words, “A or B” can be interpreted as “A and / or B”. For example, “A, B or C” can mean “A only”, “B only”, “C only”, or “any combination of A, B and C”.

[0043] The forward slash ( / ) or comma used in this article can indicate "and / or". For example, "A / B" can mean "A and / or B". Therefore, "A / B" can mean "A only", "B only", or "both A and B". For example, "A, B, C" can mean "A, B, or C".

[0044] In this document, "at least one of A and B" can mean "only A", "only B" or "both A and B". Furthermore, in this document, expressions such as "at least one of A or B" or "at least one of A and / or B" can be interpreted in the same way as "at least one of A and B".

[0045] Additionally, in this document, "at least one of A, B, and C" can mean "A only", "B only", "C only" or "any combination of A, B, and C". Furthermore, "at least one of A, B, or C" or "at least one of A, B, and / or C" can mean "at least one of A, B, and C".

[0046] Additionally, the parentheses used in this document can indicate "for example". Specifically, when the indication is "prediction (intra-frame prediction)", "intra-frame prediction" can be cited as an example of "prediction". In other words, "prediction" in this document is not limited to "intra-frame prediction", and "intra-frame prediction" can be cited as an example of "prediction". Furthermore, even when the indication is "prediction (i.e., intra-frame prediction)", "intra-frame prediction" can be cited as an example of "prediction".

[0047] In this article, the technical features described individually in a single diagram can be implemented individually or simultaneously.

[0048] Figure 1 A video / image encoding system according to this disclosure is shown.

[0049] Reference Figure 1 A video / image encoding system may include a first device (source device) and a second device (receiving device).

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

[0051] A video source can acquire video / images through processes that capture, synthesize, or generate video / images. A video source may include means for capturing video / images and means for generating video / images. Means for capturing video / images may include at least one camera, a video / image archive containing previously captured video / images, etc. Means for generating video / images may include a computer, tablet computer, smartphone, etc., and can generate video / images (electronically). For example, virtual video / images can be generated by a computer, etc., and in this case, the process of capturing video / images can be replaced by a process of generating related data.

[0052] Encoding devices can encode input video / images. They can perform a series of processes such as prediction, transformation, and quantization for compression and encoding efficiency. The encoded data (encoded video / image information) can be output as a bitstream.

[0053] The transmitting unit can send encoded video / image information or data, output in bitstream form, to the receiving unit of the receiving device in the form of a file or stream via a digital storage medium or network. The digital storage medium can include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc. The transmitting unit can include elements for generating media files according to a predetermined file format, and may include elements for transmission via a broadcast / communication network. The receiving unit can receive / extract the bitstream and send it to a decoding device.

[0054] Decoding devices can decode video / images by performing a series of processes, such as dequantization, inverse transform, and prediction, that correspond to the operations of encoding devices.

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

[0056] Figure 2 A schematic block diagram of an encoding apparatus that can be applied to embodiments of the present disclosure and perform encoding of video / image signals is shown.

[0057] Reference Figure 2The encoding device 200 may consist of an image segmenter 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-frame predictor 221 and an intra-frame 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 also include a subtractor 231. The adder 250 may be referred to as a reconstructor or a reconstruction block generator. According to embodiments, the image segmenter 210, predictor 220, residual processor 230, entropy encoder 240, adder 250, and filter 260 may be configured by at least one hardware component (e.g., an encoder chipset or processor). Additionally, the memory 270 may include a decoded picture buffer (DPB) and may be configured by a digital storage medium. The hardware component may also include the memory 270 as an internal / external component.

[0058] Image segmenter 210 can segment an input image (or picture or frame) input to encoding device 200 into at least one processing unit. As an example, a processing unit can be referred to as a coding unit (CU). In this case, the coding unit can be recursively segmented from coding tree unit (CTU) or maximum coding unit (LCU) according to a quadtree-binary-tritree (QTBTTT) structure.

[0059] For example, a coding unit can be segmented into multiple deeper coding units based on a quadtree, binary tree, and / or ternary tree structure. In this case, for example, a quadtree structure can be applied first, followed by a binary tree and / or ternary tree structure. Alternatively, a binary tree structure can be applied before the quadtree structure. The coding process according to this specification can be performed based on the final coding unit that is no longer segmented. In this case, based on image characteristics, coding efficiency, etc., the largest coding unit can be directly used as the final coding unit, or, if necessary, the coding unit can be recursively segmented into deeper coding units, and the coding unit with the optimal size can be used as the final coding unit. Here, the coding process can include processes such as prediction, transformation, and reconstruction, as described later.

[0060] As another example, the processing unit may also include a prediction unit (PU) or a transform unit (TU). In this case, the prediction unit and the transform unit can be divided or segmented from the aforementioned final encoding unit, respectively. The prediction unit may be a unit for predicting samples, and the transform unit may be a unit for deriving transform coefficients and / or a unit for deriving residual signals from transform coefficients.

[0061] In some cases, a unit can be used interchangeably with terms such as block or region. Generally, an M×N block can represent a set of transform coefficients or samples consisting of M columns and N rows. Samples can typically represent pixels or pixel values, and can represent only the pixel / pixel value of the luminance component, or only the pixel / pixel value of the chrominance component. Samples can be used as a term to form a frame (or image) corresponding to a pixel or cell.

[0062] Encoding device 200 can subtract the prediction signal (prediction block, prediction sample array) output from inter-frame predictor 221 or intra-frame predictor 222 from the input image signal (original block, original sample array) to generate a residual signal (residual signal, residual sample array), and the generated residual signal is sent to converter 232. In this case, the unit in encoding device 200 that subtracts the prediction signal (prediction block, prediction sample array) from the input image signal (original block, original sample array) can be called subtractor 231.

[0063] Predictor 220 can perform prediction on the block to be processed (hereinafter referred to as the current block) and generate a prediction block that includes prediction samples of the current block. Predictor 220 can determine whether to apply intra-frame prediction or inter-frame prediction on a per-block or per-unit basis. Predictor 220 can generate various information about the prediction (e.g., prediction mode information) and send it to entropy encoder 240, as described later in the description of the various prediction modes. The information about the prediction can be encoded in entropy encoder 240 and output as a bitstream.

[0064] Intra-frame predictor 222 can predict the current block by referencing samples within the current frame. Depending on the prediction mode, the referenced samples can be located near the current block or positioned at a specific distance away from the current block. In intra-frame prediction, the prediction mode can include at least one non-directional mode and multiple directional modes. The non-directional mode can include at least one of a DC mode or a planar mode. Depending on the granularity of the prediction direction, the directional modes can include 33 or 65 directional modes. However, this is just an example; more or fewer directional modes can be used depending on the configuration. Intra-frame predictor 222 can determine the prediction mode applied to the current block by using prediction modes applied to neighboring blocks.

[0065] Inter-frame predictor 221 can deduce the predicted block of the current block based on a reference block (reference sample array) specified by motion vectors on a reference frame. In this case, to reduce the amount of motion information transmitted in inter-frame prediction mode, motion information can be predicted on a block, sub-block, or sample basis based on the correlation between motion information between neighboring blocks and the current block. Motion information may include motion vectors and reference frame indices. Motion information may also include inter-frame prediction direction information (L0 prediction, L1 prediction, Bi prediction, etc.). For inter-frame prediction, neighboring blocks may include spatially neighboring blocks existing in the current frame and temporally neighboring blocks existing in the reference frame. The reference frame including the reference block and the reference frame including the temporally neighboring block may be the same or different. The temporally neighboring block may be referred to as a co-located reference block, a co-located CU (colCU), etc., and the reference frame including the temporally neighboring block may be referred to as a co-located frame (colPic). For example, inter-frame predictor 221 can configure a motion information candidate list based on neighboring blocks and generate information indicating which candidate to use to deduce the motion vector and / or reference frame index of the current block. Inter-frame prediction can be performed based on various prediction modes. For example, in skip mode and merge mode, the inter-frame predictor 221 can use the motion information of neighboring blocks as the motion information of the current block. In skip mode, unlike merge mode, residual signals may not be sent. In motion vector prediction (MVP) mode, the motion vectors of neighboring blocks are used as motion vector predictors, and the motion vector difference is signaled to indicate the motion vector of the current block.

[0066] Predictor 220 can generate a prediction signal based on various prediction methods described later. For example, the predictor can not only apply intra-frame prediction or inter-frame prediction to predict a block, but can also apply both intra-frame and inter-frame prediction simultaneously. This can be referred to as the Inter-intra-frame Combined Prediction (CIIP) mode. Alternatively, the predictor can predict blocks based on the Intra-Block Copy (IBC) prediction mode, or it can predict blocks based on a palette mode. The IBC prediction mode or palette mode can be used for content image / video coding such as Screen Content Coding (SCC) in games, etc. IBC essentially performs prediction within the current frame, but it can be performed similarly to inter-frame prediction because it derives a reference block within the current frame. In other words, IBC can use at least one of the inter-frame prediction techniques described herein. The palette mode can be considered an example of intra-frame coding or intra-frame prediction. When applying a palette mode, sample values ​​within the frame can be signaled based on information about the palette table and palette index. The prediction signal generated by predictor 220 can be used to generate a reconstructed signal or a residual signal.

[0067] Transformer 232 can generate transform coefficients by applying transform techniques to the residual signal. For example, the transform techniques may include at least one of Discrete Cosine Transform (DCT), Discrete Sine Transform (DST), Karhunen–Loève Transform (KLT), Graph-Based Transform (GBT), or Conditional Nonlinear Transform (CNT). Here, GBT represents the transform obtained from a graph when the relationship information between pixels is represented as a graph. CNT represents the transform obtained based on generating a prediction signal using all previously reconstructed pixels. Furthermore, the transform processing can be applied to square pixel blocks of the same size, or it can be applied to non-square blocks of variable size.

[0068] Quantizer 233 can quantize the transform coefficients and send them to entropy encoder 240, which can encode the quantized signal (information about the quantized transform coefficients) and output it as a bitstream. This information about the quantized transform coefficients can be called residual information. Quantizer 233 can reorder the block-form quantized transform coefficients into a 1D vector form based on the coefficient scan order, and can generate information about the quantized transform coefficients based on this 1D vector form.

[0069] The entropy encoder 240 can perform various encoding methods such as Golomb, context-adaptive variable-length coding (CAVLC), and context-adaptive binary arithmetic coding (CABAC). The entropy encoder 240 can encode information required for video / image reconstruction other than quantization transform coefficients (e.g., values ​​of syntax elements, etc.) together or separately.

[0070] Encoded information (e.g., encoded video / image information) can be transmitted or stored in bitstream form at the Network Abstraction Layer (NAL) unit level. The video / image information may also include information about various parameter sets such as Adaptive Parameter Set (APS), Picture Parameter Set (PPS), Sequence Parameter Set (SPS), or Video Parameter Set (VPS). Additionally, the video / image information may include general constraint information. Information and / or syntax elements transmitted from the encoding device to / signaled to the decoding device may be included in the video / image information. The video / image information can be encoded and included in the bitstream through the encoding process described above. The bitstream can be transmitted over a network or stored in a digital storage medium. Here, the network may include broadcast networks and / or communication networks, and the digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc. A transmitting unit (not shown) for transmitting the signal output from the entropy encoder 240 and / or a storage unit (not shown) for storing the signal may be configured as internal / external components of the encoding device 200, or the transmitting unit may also be included in the entropy encoder 240.

[0071] The quantized transform coefficients output from quantizer 233 can be used to generate a prediction signal. For example, the residual signal (residual block or residual sample) can be reconstructed by applying dequantization and inverse transform to the quantized transform coefficients via dequantizer 234 and inverse transformer 235. Adder 250 can add the reconstructed residual signal to the prediction signal output from inter-frame predictor 221 or intra-frame predictor 222 to generate a reconstructed signal (reconstructed frame, reconstructed block, reconstructed sample array). When there is no residual for the block to be processed (similar to when a skip mode is applied), the prediction block can be used as a reconstructed block. Adder 250 can be referred to as a reconstructor or reconstructed block generator. The generated reconstructed signal can be used for intra-frame prediction of the next block to be processed in the current frame, and can also be used for inter-frame prediction of the next frame by filtering, as described later. Furthermore, luminance mapping and chroma scaling (LMCS) can be applied in frame encoding and / or reconstruction processing.

[0072] Filter 260 can improve subjective / objective image quality by applying filtering to the reconstructed signal. For example, filter 260 can generate a modified reconstructed image by applying various filtering methods to the reconstructed image, and the modified reconstructed image can be stored in memory 270 (specifically, the DPB of memory 270). Various filtering methods can include deblocking filtering, sample adaptive offsetting, adaptive loop filtering, bilateral filtering, etc. Filter 260 can generate various information about the filtering and send it to entropy encoder 240. The information about the filtering can be encoded in entropy encoder 240 and output as a bitstream.

[0073] The modified reconstructed frame sent to memory 270 can be used as a reference frame in inter-frame predictor 221. When inter-frame prediction is applied through it, the encoding device can avoid prediction mismatch between the encoding device 200 and the decoding device, and can also improve encoding efficiency.

[0074] The DPB of memory 270 can store modified reconstructed frames for use as reference frames in inter-frame predictor 221. Memory 270 can store motion information of blocks from which motion information in the current frame is derived (or encoded) and / or motion information of blocks in previously reconstructed frames. The stored motion information can be sent to inter-frame predictor 221 as motion information for spatially or temporally neighboring blocks. Memory 270 can store reconstructed samples of reconstructed blocks in the current frame and send them to intra-frame predictor 222.

[0075] Figure 3 A schematic block diagram of a decoding device that can be implemented using embodiments of the present disclosure and performs decoding of video / image signals is shown.

[0076] Reference Figure 3 The decoding device 300 can 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-frame predictor 332 and an intra-frame predictor 331. The residual processor 320 may include a dequantizer 321 and an inverse transformer 322.

[0077] According to the implementation, the entropy decoder 310, residual processor 320, predictor 330, adder 340, and filter 350 described above can be configured by a single hardware component (e.g., a decoder chipset or processor). Additionally, the memory 360 may include a decoded screen buffer (DPB) and can be configured by a digital storage medium. The hardware component may also include the memory 360 as an internal / external component.

[0078] When the input includes a bitstream containing video / image information, the decoding device 300 can respond to... Figure 2 The encoding device processes video / image information to reconstruct the image. For example, the decoding device 300 can deduce units / blocks based on block segmentation information obtained from the bitstream. The decoding device 300 can perform decoding using processing units applied in the encoding device. Therefore, the decoding processing unit can be an encoding unit, and the encoding unit can be segmented from the encoding tree unit or a larger encoding unit according to a quadtree structure, binary tree structure, and / or ternary tree structure. At least one transform unit can be derived from the encoding unit. Furthermore, the reconstructed image signal decoded and output by the decoding device 300 can be played back by a playback device.

[0079] Decoding device 300 can receive data in bitstream form from... Figure 2The signal output by the encoding device can be decoded by the entropy decoder 310. For example, the entropy decoder 310 can parse the bitstream to derive the information (e.g., video / image information) required for image reconstruction (or picture reconstruction). The video / image information may also include information about various parameter sets such as Adaptive Parameter Set (APS), Picture Parameter Set (PPS), Sequence Parameter Set (SPS), or Video Parameter Set (VPS). In addition, the video / image information may also include general constraint information. The decoding device can also decode the picture based on the information about the parameter sets and / or general constraint information. The information and / or syntax elements that are signaled / received, as described later herein, can be decoded and obtained from the bitstream through the decoding process. For example, the entropy decoder 310 can decode the information in the bitstream based on encoding methods such as Exponential Golomb coding, CAVLC, CABAC, etc., and output the values ​​of the syntax elements required for image reconstruction and the quantized values ​​of the transform coefficients of the residuals. More specifically, the CABAC entropy decoding method can receive bins corresponding to each syntax element from the bitstream, determine a context model using information about the syntax element to be decoded, decoding information of adjacent blocks and the block to be decoded, or information about symbols / bins decoded in previous steps, perform arithmetic decoding of bins by predicting the occurrence probability of bins based on the determined context model, and generate symbols corresponding to the values ​​of each syntax element. In this case, after determining the context model, the CABAC entropy decoding method can update the context model by using information about the decoded symbols / bins for the context model of the next symbol / bin. Among the information decoded in the entropy decoder 310, information about prediction is provided to the predictors (inter-frame predictor 332 and intra-frame predictor 331), and the residual values ​​(i.e., quantization transform coefficients and related parameter information) from which entropy decoding has been performed in the entropy decoder 310 can be input to the residual processor 320. The residual processor 320 can derive residual signals (residual blocks, residual samples, residual sample arrays). In addition, information about filtering from the information decoded in the entropy decoder 310 can be provided to the filter 350. Furthermore, the receiving unit (not shown) that receives the signal output from the encoding device can be further configured as an internal / external component of the decoding device 300, or the receiving unit can be a component of the entropy decoder 310.

[0080] Furthermore, the decoding device according to this specification may be referred to as a video / image / screen decoding device, and the decoding device may be divided into an information decoder (video / image / screen information decoder) and a sample decoder (video / image / screen sample decoder). The information decoder may include an entropy decoder 310, and the sample decoder may include at least one of a dequantizer 321, an inverse transformer 322, an adder 340, a filter 350, a memory 360, an inter-frame predictor 332, and an intra-frame predictor 331.

[0081] Dequantizer 321 can dequantize the quantized transform coefficients and output the transform coefficients. Dequantizer 321 can reorder the quantized transform coefficients into two-dimensional blocks. In this case, the reordering can be performed based on the coefficient scan order performed in the encoding device. Dequantizer 321 can perform dequantization on the quantized transform coefficients using quantization parameters (e.g., quantization step size information) and obtain the transform coefficients.

[0082] The inverse transformer 322 performs an inverse transformation on the transformation coefficients to obtain the residual signal (residual block, residual sample array).

[0083] Predictor 320 can perform prediction on the current block and generate a prediction block that includes prediction samples of the current block. Predictor 320 can determine whether to apply intra-frame prediction or inter-frame prediction to the current block based on the prediction information output from entropy decoder 310, and determine the specific intra-frame / inter-frame prediction mode.

[0084] Predictor 320 can generate prediction signals based on various prediction methods described later. For example, predictor 320 can not only apply intra-frame prediction or inter-frame prediction to predict a block, but can also apply intra-frame prediction and inter-frame prediction simultaneously. This can be referred to as the Inter-Frame Intra-Frame Combined Prediction (CIIP) mode. Alternatively, the predictor can predict blocks based on the Intra-Frame Block Copy (IBC) prediction mode, or it can predict blocks based on a palette mode. The IBC prediction mode or palette mode can be used for content image / video coding such as Screen Content Coding (SCC) in games, etc. IBC essentially performs prediction within the current frame, but it can be performed similarly to inter-frame prediction because it derives a reference block within the current frame. In other words, IBC can use at least one of the inter-frame prediction techniques described herein. The palette mode can be considered an example of intra-frame coding or intra-frame prediction. When the palette mode is applied, information about the palette table and palette index can be included in the video / image information and signaled.

[0085] Intra-predictor 331 can predict the current block by referencing samples within the current frame. Depending on the prediction mode, the referenced samples can be located near the current block or at a specific distance away. In intra-prediction, the prediction mode can include at least one non-directional mode and multiple directional modes. Intra-predictor 331 can determine the prediction mode applied to the current block by using prediction modes applied to neighboring blocks.

[0086] Inter-frame predictor 332 can deduce the predicted block of the current block based on a reference block (reference sample array) specified by motion vectors on a reference frame. In this case, to reduce the amount of motion information transmitted in inter-frame prediction mode, motion information can be predicted on a block, sub-block, or sample basis based on the correlation of motion information between neighboring blocks and the current block. Motion information may include motion vectors and reference frame indices. Motion information may also include inter-frame prediction direction information (L0 prediction, L1 prediction, Bi prediction, etc.). For inter-frame prediction, neighboring blocks may include spatially neighboring blocks existing in the current frame and temporally neighboring blocks existing in the reference frame. For example, inter-frame predictor 332 can configure a motion information candidate list based on neighboring blocks and deduce the motion vector and / or reference frame index of the current block based on the received candidate selection information. Inter-frame prediction can be performed based on various prediction modes, and the information about the prediction may include information indicating the inter-frame prediction mode of the current block.

[0087] Adder 340 can add the obtained residual signal to the prediction signal (prediction block, prediction sample array) output from the predictor (including inter-frame predictor 332 and / or intra-frame predictor 331) to generate a reconstruction signal (reconstructed frame, reconstruction block, reconstruction sample array). When there is no residual for the block to be processed (similar to when a skip mode is applied), the prediction block can be used as a reconstruction block.

[0088] Adder 340 can be referred to as a reconstructor or reconstruction block generator. The generated reconstructed signal can be used for intra-frame prediction of the next block to be processed in the current frame, can be output through filtering as described later, or can be used for inter-frame prediction of the next frame. In addition, luminance mapping and chroma scaling (LMCS) can be applied in the frame decoding process.

[0089] Filter 350 can improve subjective / objective image quality by applying filtering to the reconstructed signal. For example, filter 350 can generate a modified reconstructed image by applying various filtering methods to the reconstructed image and send the modified reconstructed image to memory 360 (specifically, the DPB of memory 360). Various filtering methods may include deblocking filtering, sample adaptive offset, adaptive loop filter, bilateral filter, etc.

[0090] The (modified) reconstructed frame stored in the DPB of memory 360 can be used as a reference frame in inter-frame predictor 332. Memory 360 can store motion information of blocks in the current frame from which motion information is derived (or decoded) and / or motion information of blocks in previously reconstructed frames. The stored motion information can be sent to inter-frame predictor 332 as motion information of spatially or temporally neighboring blocks. Memory 360 can store reconstructed samples of reconstructed blocks in the current frame and send them to intra-frame predictor 331.

[0091] The embodiments described in this document in the filter 260, inter-frame predictor 221 and intra-frame predictor 222 of the encoding device 200 can also be applied equivalently or correspondingly to the filter 350, inter-frame predictor 332 and intra-frame predictor 331 of the decoding device 300, respectively.

[0092] Figure 4 A method for generating a bit stream, performed by an encoding device 200 according to the present disclosure, is illustrated.

[0093] It can receive video frames to be encoded using the S400.

[0094] The received video frame can be encoded to generate a compressed video frame S410.

[0095] It can generate encoder optimization information (EOI) S420.

[0096] The encoder optimization information disclosed herein can be related to the received or compressed video footage. The encoder optimization information can define the purpose, characteristics, and application scope (or objective) of the encoder optimization.

[0097] As an example, encoder optimization information may include an EOI cancellation flag (eoi_cancel_flag). eoi_cancel_flag can be associated with the persistence of encoder optimization information. When the value of eoi_cancel_flag is 1, it indicates that the persistence of previously applied encoder optimization information is cancelled. For example, when the value of eoi_cancel_flag is 1, it indicates that the persistence of encoder optimization information included in previous prediction units (PUs) in output order is cancelled. When the value of eoi_cancel_flag is 0, it indicates that optimization-related information applied during preprocessing or encoding follows.

[0098] Optimization-related information can include at least one of the following: EOI persistence flag (eoi_persistence_flag), EOI identifier for human viewing (eoi_for_human_viewing_idc), EOI identifier for machine analysis (eoi_for_machine_analysis_idc), or EOI type information (eoi_type). In other words, based on the value of eoi_cancel_flag being 0, the above optimization-related information can be generated and encoded into a bitstream.

[0099] `eoi_persistence_flag` relates to the persistence of optimization information. `eoi_persistence_flag` represents the persistence of optimization information as indicated by `eoi_type`. When the value of `eoi_persistence_flag` is 0, it indicates that the optimization information (based on the `eoi_type` identifier) ​​applies only to the current frame. When the value of `eoi_persistence_flag` is 1, it indicates that the optimization information (based on the `eoi_type` identifier) ​​applies to the current frame and all subsequent frames. Here, "subsequent frames" can refer to all subsequent frames of the current layer in output order.

[0100] `eoi_for_human_viewing_idc` represents information used to identify the purpose and objective of optimization. A value of 3 indicates that the optimization aims to include human viewing. A value of 2 indicates that the video is suitable for human viewing but is not specifically optimized for human viewing. A value of 1 indicates that the video is not suitable for human viewing. A value of 0 indicates that it is unknown whether the video is suitable for human viewing.

[0101] `eoi_for_machine_analysis_idc` represents information used to identify the purpose and objective of optimization. A value of 3 indicates that the optimization objective includes machine analysis. A value of 2 indicates that the video is suitable for machine analysis but not specifically optimized for it. A value of 1 indicates that the video is not suitable for machine analysis. A value of 0 indicates that it is unknown whether the video is suitable for machine analysis.

[0102] `eoi_type` can represent a characteristic of an optimization method. For example, `eoi_type` can be defined as shown in Table 1 below. `eoi_type` can identify the optimization characteristic (or optimization type) defined in Table 1. When the value of `eoi_type` is 0, this can mean that an optimization performed by the application or user is applied. However, the optimization characteristics defined in Table 1 are merely examples, and new optimization characteristics can also be defined under the corresponding structure. Alternatively, `eoi_type` can identify only a portion of the optimization characteristics defined in Table 1. Additional optimization characteristics not defined in Table 1 can also be additionally defined in Table 1.

[0103] [Table 1]

[0104] When (eoi_type & bitMask) is not 0, it indicates that the application has the optimization features with the bitmask values ​​in Table 1. When eoi_type is greater than 0 and (eoi_type & bitMask) is 0, it indicates that the optimization features with the corresponding bitmask values ​​are not applied. When eoi_type is 0, it indicates that the optimizations determined by the application are used. For example, the optimization features based on eoi_type can also be defined as shown in Table 2 below.

[0105] [Table 2]

[0106] The encoder optimization information related to the objectives, characteristics, and application scope of the optimizations described above can also be applied equivalently to the implementation methods described below. The encoder optimization information can be defined in the SEI message, as shown in Table 3 below.

[0107] [Table 3]

[0108] To clarify the optimization objectives of the bitstream, constraints can be defined on the values ​​of eoi_for_machine_analysis_idc and eoi_for_human_viewing_idc.

[0109] 1. Constraints used to prevent situations where the optimization objective does not exist.

[0110] The optimization objective defined based on encoder optimization information can be at least one of human viewing or machine analysis. In this case, defining human viewing and machine analysis as not optimization objectives may be unnecessary and wasteful from an information signaling perspective. Therefore, it is possible to restrict `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` to values ​​that imply they are unsuitable for their respective purposes. In other words, the constraint that the values ​​of `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` should not be 1 can be applied.

[0111] Specifically, `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` can be encoded as an integer in the range of 0 to 3. In this case, the possible combinations of values ​​for `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` are limited to the 15 cases shown in Table 4 below. It is permissible for both `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` to be 1.

[0112] [Table 4]

[0113] `eoi_for_human_viewing_idc` can be encoded before `eoi_for_machine_analysis_idc`. In this case, the range (or number) of values ​​that can be set for `eoi_for_machine_analysis_idc` can differ based on the value of `eoi_for_human_viewing_idc`.

[0114] For example, when the value of `eoi_for_human_viewing_idc` is encoded as 1, `eoi_for_machine_analysis_idc` can be encoded as one of 0, 2, or 3, and can be restricted to not being encoded as the value 1. In other words, when the value of `eoi_for_human_viewing_idc` is encoded as 1, the number of values ​​that can be set for `eoi_for_machine_analysis_idc` can be 3. On the other hand, when the value of `eoi_for_human_viewing_idc` is not encoded as 1, `eoi_for_machine_analysis_idc` can be encoded as one of 0, 1, 2, or 3. In other words, when the value of `eoi_for_human_viewing_idc` is not encoded as 1, the number of values ​​that can be set for `eoi_for_machine_analysis_idc` can be 4.

[0115] Alternatively, `eoi_for_machine_analysis_idc` can be encoded before `eoi_for_human_viewing_idc`. In this case, the range (or number) of values ​​that can be set for `eoi_for_human_viewing_idc` based on the value of `eoi_for_machine_analysis_idc` can be different.

[0116] For example, when the value of `eoi_for_machine_analysis_idc` is encoded as 1, `eoi_for_human_viewing_idc` can be encoded as one of 0, 2, or 3, and can be restricted to not being encoded as the value 1. In other words, when the value of `eoi_for_machine_analysis_idc` is encoded as 1, the number of values ​​that can be set for `eoi_for_human_viewing_idc` can be 3. On the other hand, when the value of `eoi_for_machine_analysis_idc` is not encoded as 1, `eoi_for_human_viewing_idc` can be encoded as one of 0, 1, 2, or 3. In other words, when the value of `eoi_for_machine_analysis_idc` is not encoded as 1, the number of values ​​that can be set for `eoi_for_human_viewing_idc` can be 4.

[0117] 2. Constraints used to reduce the uncertainty of the optimization objective

[0118] Considering that the information represented by the encoder's optimization information is optimized for both human viewing and machine analysis, from an information signaling perspective, situations where the suitability of human viewing and machine analysis is unknown may be unnecessary and wasteful. Therefore, it's possible to restrict `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` to values ​​that imply uncertainty about their suitability for the corresponding purpose. In other words, the constraint that the values ​​of `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` should not be 0 can be applied.

[0119] Specifically, `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` can be encoded as an integer in the range of 0 to 3. In this case, the possible combinations of values ​​for `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` are limited to the 15 cases shown in Table 5 below. It is permissible for both `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` to be 0.

[0120] [Table 5]

[0121] `eoi_for_human_viewing_idc` can be encoded before `eoi_for_machine_analysis_idc`. In this case, the range (or number) of values ​​that can be set for `eoi_for_machine_analysis_idc` can differ based on the value of `eoi_for_human_viewing_idc`.

[0122] For example, when the value of `eoi_for_human_viewing_idc` is encoded as 0, `eoi_for_machine_analysis_idc` can be encoded as one of 1, 2, or 3, and can be restricted to not being encoded as the value 0. In other words, when the value of `eoi_for_human_viewing_idc` is encoded as 0, the number of values ​​that can be set for `eoi_for_machine_analysis_idc` can be 3. On the other hand, when the value of `eoi_for_human_viewing_idc` is not encoded as 0, `eoi_for_machine_analysis_idc` can be encoded as one of 0, 1, 2, or 3. In other words, when the value of `eoi_for_human_viewing_idc` is not encoded as 1, the number of values ​​that can be set for `eoi_for_machine_analysis_idc` can be 4.

[0123] Alternatively, `eoi_for_machine_analysis_idc` can be encoded before `eoi_for_human_viewing_idc`. In this case, the range (or number) of values ​​that can be set for `eoi_for_human_viewing_idc` based on the value of `eoi_for_machine_analysis_idc` can be different.

[0124] For example, when the value of `eoi_for_machine_analysis_idc` is encoded as 0, `eoi_for_human_viewing_idc` can be encoded as one of 1, 2, or 3, and can be restricted to not being encoded as the value 0. In other words, when the value of `eoi_for_machine_analysis_idc` is encoded as 0, the number of values ​​that can be set for `eoi_for_human_viewing_idc` can be 3. On the other hand, when the value of `eoi_for_machine_analysis_idc` is not encoded as 0, `eoi_for_human_viewing_idc` can be encoded as one of 0, 1, 2, or 3. In other words, when the value of `eoi_for_machine_analysis_idc` is not encoded as 0, the number of values ​​that can be set for `eoi_for_human_viewing_idc` can be 4.

[0125] Constraint 1 and Constraint 2 above can be applied together. In other words, the constraint that the values ​​of both eoi_for_human_viewing_idc and eoi_for_machine_analysis_idc should not be 1 or 0 can be applied.

[0126] Specifically, `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` can be encoded as an integer in the range of 0 to 3. In this case, the possible combinations of values ​​for `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` are limited to the 14 cases shown in Table 6 below. It is permissible to disallow both `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` being 0, or both being 1.

[0127] [Table 6]

[0128] `eoi_for_human_viewing_idc` can be encoded before `eoi_for_machine_analysis_idc`. In this case, the range (or number) of values ​​that can be set for `eoi_for_machine_analysis_idc` can differ based on the value of `eoi_for_human_viewing_idc`.

[0129] For example, when the value of `eoi_for_human_viewing_idc` is encoded as 0, `eoi_for_machine_analysis_idc` can be encoded as one of 1, 2, or 3, and can be restricted to not being encoded as the value 0. When the value of `eoi_for_human_viewing_idc` is encoded as 1, `eoi_for_machine_analysis_idc` can be encoded as one of 0, 2, or 3, and can be restricted to not being encoded as the value 1. In other words, when the value of `eoi_for_human_viewing_idc` is encoded as 0 or 1, the number of values ​​that can be set for `eoi_for_machine_analysis_idc` can be 3. On the other hand, when the value of `eoi_for_human_viewing_idc` is encoded as 2 or 3, `eoi_for_machine_analysis_idc` can be encoded as one of 0, 1, 2, or 3. In other words, when the value of eoi_for_human_viewing_idc is encoded as 2 or 3, the number of values ​​that can be set for eoi_for_machine_analysis_idc can be 4.

[0130] Alternatively, `eoi_for_machine_analysis_idc` can be encoded before `eoi_for_human_viewing_idc`. In this case, the range (or number) of values ​​that can be set for `eoi_for_human_viewing_idc` based on the value of `eoi_for_machine_analysis_idc` can be different.

[0131] For example, when the value of `eoi_for_machine_analysis_idc` is encoded as 0, `eoi_for_human_viewing_idc` can be encoded as one of 1, 2, or 3, and can be restricted to not being encoded as the value 0. When the value of `eoi_for_machine_analysis_idc` is encoded as 1, `eoi_for_human_viewing_idc` can be encoded as one of 0, 2, or 3, and can be restricted to not being encoded as the value 1. In other words, when the value of `eoi_for_machine_analysis_idc` is encoded as 0 or 1, the number of values ​​that can be set for `eoi_for_human_viewing_idc` can be 3. On the other hand, when the value of `eoi_for_machine_analysis_idc` is encoded as 2 or 3, `eoi_for_human_viewing_idc` can be encoded as one of 0, 1, 2, or 3. In other words, when the value of eoi_for_machine_analysis_idc is encoded as 2 or 3, the number of values ​​that can be set for eoi_for_human_viewing_idc can be 4.

[0132] 3. Constraints used to define a clear optimization objective (1)

[0133] When performing optimization, it is essential to be able to specify the optimization objective. However, when the applicability of human observation and machine analysis is not explicitly known, it can be difficult to determine the optimization objective and its applicability. Table 7 can illustrate situations where the applicability of human observation and machine analysis is not explicitly known. However, this is merely an example, and some of the cases 1 through 4 may not be included in situations where the applicability of human observation and machine analysis is not explicitly known.

[0134] [Table 7]

[0135] Scenario 1 corresponds to a situation where it is unknown whether the material is suitable for human viewing and machine analysis. Scenario 2 corresponds to a situation where it is unknown whether the material is unsuitable for human viewing but suitable for machine analysis. Scenario 3 corresponds to a situation where it is unknown whether the material is unsuitable for machine analysis but suitable for human viewing. Scenario 4 corresponds to a situation where the material is unsuitable for both human viewing and machine analysis.

[0136] For the video to be used for the appropriate purpose, it may be necessary to be suitable for at least one of machine analysis and human viewing. In other words, the following constraint may apply: the value of at least one of eoi_for_machine_analysis_idc or eoi_for_human_viewing_idc should be greater than 1.

[0137] Specifically, `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` can be encoded as an integer ranging from 0 to 3. However, the possible combinations of values ​​for `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` are limited to the 12 cases shown in Table 8 below. The minimum sum of `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` can be 2, and the maximum sum of `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` can be 6.

[0138] [Table 8]

[0139] `eoi_for_human_viewing_idc` can be encoded before `eoi_for_machine_analysis_idc`. In this case, the range (or number) of values ​​that can be set for `eoi_for_machine_analysis_idc` can differ based on the value of `eoi_for_human_viewing_idc`.

[0140] For example, when the value of `eoi_for_human_viewing_idc` is encoded as 0 or 1, `eoi_for_machine_analysis_idc` can be encoded as a value of 2 or 3, and can be restricted to not being encoded as the values ​​0 and 1. In other words, when the value of `eoi_for_human_viewing_idc` is encoded as 0 or 1, the number of values ​​that can be set for `eoi_for_machine_analysis_idc` can be 2. On the other hand, when the value of `eoi_for_human_viewing_idc` is encoded as 2 or 3, `eoi_for_machine_analysis_idc` can be encoded as a value of 0, 1, 2, or 3. In other words, when the value of `eoi_for_human_viewing_idc` is encoded as 2 or 3, the number of values ​​that can be set for `eoi_for_machine_analysis_idc` can be 4.

[0141] Alternatively, `eoi_for_machine_analysis_idc` can be encoded before `eoi_for_human_viewing_idc`. In this case, the range (or number) of values ​​that can be set for `eoi_for_human_viewing_idc` based on the value of `eoi_for_machine_analysis_idc` can be different.

[0142] For example, when the value of `eoi_for_machine_analysis_idc` is encoded as 0 or 1, `eoi_for_human_viewing_idc` can be encoded as a value of 2 or 3, and can be restricted to not being encoded as the values ​​0 and 1. In other words, when the value of `eoi_for_machine_analysis_idc` is encoded as 0 or 1, the number of values ​​that can be set for `eoi_for_human_viewing_idc` can be 2. On the other hand, when the value of `eoi_for_machine_analysis_idc` is encoded as 2 or 3, `eoi_for_human_viewing_idc` can be encoded as a value of 0, 1, 2, or 3. In other words, when the value of `eoi_for_machine_analysis_idc` is encoded as 2 or 3, the number of values ​​that can be set for `eoi_for_human_viewing_idc` can be 4.

[0143] 4. Constraints used to define specific optimization objectives (2)

[0144] The optimization objective identified by at least one of `eoi_for_machine_analysis_idc` or `eoi_for_human_viewing_idc` may be ambiguous. For example, when both `eoi_for_machine_analysis_idc` and `eoi_for_human_viewing_idc` are 2, it may mean that it is suitable for both machine analysis and human viewing, but is not optimized for the corresponding purpose. At least one of machine analysis and human viewing needs to be explicitly defined as the optimization objective. To this end, the following constraint can be applied: at least one of `eoi_for_machine_analysis_idc` and `eoi_for_human_viewing_idc` should be 3. In this case, the possible combinations of values ​​for `eoi_for_human_viewing_idc` and `eoi_for_machine_analysis_idc` can be limited to the seven cases shown in Table 9 below.

[0145] [Table 9]

[0146] `eoi_for_human_viewing_idc` can be encoded before `eoi_for_machine_analysis_idc`. In this case, the range (or number) of values ​​that can be set for `eoi_for_machine_analysis_idc` can differ based on the value of `eoi_for_human_viewing_idc`.

[0147] For example, when the value of `eoi_for_human_viewing_idc` is encoded as 3, `eoi_for_machine_analysis_idc` can be encoded as one of 0, 1, 2, or 3. In other words, when the value of `eoi_for_human_viewing_idc` is encoded as 3, the number of values ​​that can be set for `eoi_for_machine_analysis_idc` can be 4. On the other hand, when the value of `eoi_for_human_viewing_idc` is not encoded as 3, `eoi_for_machine_analysis_idc` can be restricted to not being encoded as the value 3. In other words, when the value of `eoi_for_human_viewing_idc` is not encoded as 3, the number of values ​​that can be set for `eoi_for_machine_analysis_idc` can be 1.

[0148] Alternatively, `eoi_for_machine_analysis_idc` can be encoded before `eoi_for_human_viewing_idc`. In this case, the range (or number) of values ​​that can be set for `eoi_for_human_viewing_idc` based on the value of `eoi_for_machine_analysis_idc` can be different.

[0149] For example, when the value of `eoi_for_machine_analysis_idc` is encoded as 3, `eoi_for_human_viewing_idc` can be encoded as one of 0, 1, 2, or 3. In other words, when the value of `eoi_for_machine_analysis_idc` is encoded as 3, the number of values ​​that can be set for `eoi_for_human_viewing_idc` can be 4. On the other hand, when the value of `eoi_for_machine_analysis_idc` is not encoded as 3, `eoi_for_human_viewing_idc` can be restricted to not being encoded as the value 3. In other words, when the value of `eoi_for_machine_analysis_idc` is not encoded as 3, the number of values ​​that can be set for `eoi_for_human_viewing_idc` can be 1.

[0150] When constraint (2) above is applied, there are 7 combinations of the values ​​of eoi_for_machine_analysis_idc and eoi_for_human_viewing_idc. In this case, encoding eoi_for_machine_analysis_idc and eoi_for_human_viewing_idc as 2 bits each may be inefficient. This is because the 7 cases can be expressed using 3 bits. Therefore, eoi_for_machine_analysis_idc and eoi_for_human_viewing_idc can be integrated into a single identifier encoded with 3 bits, and Table 10 shows an example of such an identifier.

[0151] [Table 10]

[0152] As shown in Table 10, eoi_for_machine_analysis_idc and eoi_for_human_viewing_idc can be defined by replacing them with an identifier (eoi_purpose_idc). eoi_cancel_flag, eoi_persistence_flag, and eoi_type are the same as described above.

[0153] `eoi_purpose_idc` can be information used to identify the purpose of optimization. Optimization purposes identified by `eoi_purpose_idc` can include human observation, machine analysis, etc. Based on the value of `eoi_purpose_idc`, optimization states can be further subdivided and identified, such as 1) it is unknown whether the optimization is suitable for a specific purpose, 2) the optimization is not suitable for a specific purpose, 3) the optimization is suitable for a specific purpose but was not optimized for that specific purpose, or 4) the optimization is suitable for a specific purpose and was optimized for that specific purpose. For example, `eoi_purpose_idc` can be defined as shown in Table 11 below.

[0154] [Table 11]

[0155] Based on the values ​​of eoi_for_human_viewing_idc and eoi_for_machine_analysis_idc, or the value of eoi_purpose_idc mentioned above, there may be constraints on the value of eoi_type defined subsequently and / or on the details of eoi_type.

[0156] Based on `eoi_type`, the optimization characteristics of an application can be identified. Detailed information related to these optimization characteristics can be additionally defined in the encoder optimization information. Optimization characteristics that can be identified based on `eoi_type` can include at least one of object-based optimization, temporal resampling optimization, spatial resampling optimization, temporal quality optimization, spatial quality optimization, privacy protection optimization, or bit depth optimization.

[0157] Table 12 below provides an example of detailed information related to the application's optimization features based on eoi_type.

[0158] [Table 12]

[0159] Object-based optimization information can be generated and encoded into a bitstream based on a flag indicating whether object-based optimization is applied (eoiObjectBasedFlag).

[0160] For example, a value of 1 for eoiObjectBasedFlag could mean that object-based optimizations are applied, and a value of 0 for eoiObjectBasedFlag could mean that object-based optimizations are not applied. eoiObjectBasedFlag can be derived as shown in Equation 1 below.

[0161] [Formula 1]

[0162] eoiObjectBasedFlag = ( ( eoi_type & 0x01 ) > 0 ) ? 1 : 0

[0163] When the value of eoiObjectBasedFlag is 1, object-based optimization-related information can be generated and encoded into the bitstream. On the other hand, when the value of eoiObjectBasedFlag is 0, object-based optimization-related information can be omitted and not encoded into the bitstream.

[0164] Object-based optimization information may include an identifier (eoi_object_based_idc) representing the type of object-based optimization.

[0165] For example, `eoi_object_based_idc` can be defined as shown in Table 13 below. Here, when the value of `(eoi_object_based_idc & bitMask)` is not 0, this indicates that the type of object-based optimization corresponding to the corresponding bitmask value is applied. When `eoi_object_based_idc` is greater than 0 and the value of `(eoi_object_based_idc & bitMask)` is 0, this indicates that the type of object-based optimization corresponding to the corresponding bitmask value is not applied. When the value of `eoi_object_based_idc` is 0, this indicates that the type of object-based optimization defined in the application is applied. The value of `eoi_object_based_idc` can be in the range of 0 to 7. Values ​​of `eoi_object_based_idc` from 8 to 65535 are reserved for future use by ITU-T|ISO / IEC and may not exist in the bitstream. When the value of `eoi_object_based_idc` is in the range of 8 to 65535, the decoder must ignore the value of `eoi_object_based_idc`.

[0166] [Table 13]

[0167] When the value of `eoi_for_human_viewing_idc` is 3, the constraint that the value of `(eoi_object_based_idc & 0x04)` should not be 1 can be applied. Alternatively, when the value of `(eoi_object_based_idc & 0x04)` is 1, the constraint that the value of `eoi_for_human_viewing_idc` should not be 3 can also be applied. Alternatively, when the value of `eoi_for_human_viewing_flag` is 3, the constraint that the value of `EoiObjectBasedFlag` should not be 1 can also be applied. For example, the constraint that the value of `(eoi_type & 0x01)` should not be greater than 1 can be applied. This is because when the value of `EoiObjectBasedFlag` is 1, each region of the image may have inconsistent quality, which could negatively impact human viewing.

[0168] When `eoi_for_human_viewing_idc` is 3, a constraint can be applied that object-based optimization-related information is not generated and is not encoded into the bitstream. Therefore, when `eoi_for_human_viewing_idc` is 3, the value of `EoiObjectBasedFlag` can be forced to derive to 0. On the other hand, when `eoi_for_human_viewing_idc` is not 3, `EoiObjectBasedFlag` can be adaptively derived to a value of either 0 or 1, and object-based optimization-related information can be generated and encoded into the bitstream based on the value of `EoiObjectBasedFlag`. In other words, when `eoi_for_human_viewing_idc` is not 3, the above constraint can be disregarded. Therefore, based on the value of `eoi_for_human_viewing_idc`, it can be determined whether or not object-based optimization-related information is encoded.

[0169] Temporal resampling optimization information can be generated and encoded into a bitstream based on a flag indicating whether temporal resampling optimization is applied (eoiTemporalResamplingFlag).

[0170] For example, a value of 1 for eoiTemporalResamplingFlag could mean that temporal resampling optimization is applied, while a value of 0 for eoiTemporalResamplingFlag could mean that temporal resampling optimization is not applied. eoiTemporalResamplingFlag can be derived as shown in Equation 2 below.

[0171] [Equation 2]

[0172] eoiTemporalResamplingFlag = ( ( eoi_type & 0x02 ) > 0 ) ? 1 : 0

[0173] When the value of eoiTemporalResamplingFlag is 1, temporal resampling optimization information can be generated and encoded into the bitstream. On the other hand, when the value of eoiTemporalResamplingFlag is 0, temporal resampling optimization information can be omitted and not encoded into the bitstream.

[0174] Spatial resampling optimization information can be generated and encoded into a bitstream based on a flag indicating whether spatial resampling optimization is applied (eoiSpatialResamplingFlag).

[0175] For example, a value of 1 for eoiSpatialResamplingFlag could mean that spatial resampling optimization has been applied, while a value of 0 for eoiSpatialResamplingFlag could mean that spatial resampling optimization has not been applied. eoiSpatialResamplingFlag can be derived as shown in Equation 3 below.

[0176] [Formula 3]

[0177] eoiSpatialResamplingFlag = ( ( eoi_type & 0x04 ) > 0 ) ? 1 : 0

[0178] When the value of eoiSpatialResamplingFlag is 1, spatial resampling optimization information can be generated and encoded into the bitstream. On the other hand, when the value of eoiSpatialResamplingFlag is 0, spatial resampling optimization information can be omitted and not encoded into the bitstream.

[0179] Time quality optimization information can be generated and encoded into a bitstream based on a flag indicating whether time quality optimization is applied (eoiTemporalQualityFlag).

[0180] For example, a value of 1 for eoiTemporalQualityFlag could mean that time quality optimization has been applied, and a value of 0 for eoiTemporalQualityFlag could mean that time quality optimization has not been applied. eoiTemporalQualityFlag can be derived as shown in Equation 4 below.

[0181] [Formula 4]

[0182] eoiTemporalQualityFlag = ( ( eoi_type & 0x08 ) > 0 ) ? 1 : 0

[0183] When the value of eoiTemporalQualityFlag is 1, time quality optimization information can be generated and encoded into the bitstream. On the other hand, when the value of eoiTemporalQualityFlag is 0, time quality optimization information can be not generated and can not be encoded into the bitstream.

[0184] Spatial quality optimization information can be generated and encoded into a bitstream based on a flag indicating whether spatial quality optimization is applied (eoiSpatialQualityFlag).

[0185] For example, a value of 1 for eoiSpatialQualityFlag could mean that space quality optimization has been applied, and a value of 0 for eoiSpatialQualityFlag could mean that space quality optimization has not been applied. eoiSpatialQualityFlag can be derived as shown in Equation 5 below.

[0186] [Formula 5]

[0187] eoiSpatialQualityFlag = ( ( eoi_type & 0x10 ) > 0 ) ? 1 : 0

[0188] When the value of eoiSpatialQualityFlag is 1, spatial quality optimization information can be generated and encoded into the bitstream. On the other hand, when the value of eoiSpatialQualityFlag is 0, spatial quality optimization information can be omitted and not encoded into the bitstream.

[0189] Privacy protection optimization information can be generated and encoded into a bitstream based on a flag indicating whether privacy protection optimization is applied (eoiPrivacyProtectionFlag).

[0190] For example, a value of 1 for eoiPrivacyProtectionFlag could mean that privacy protection optimizations are applied, while a value of 0 for eoiPrivacyProtectionFlag could mean that privacy protection optimizations are not applied. eoiPrivacyProtectionFlag can be derived as shown in Equation 6 below.

[0191] [Formula 6]

[0192] eoiPrivacyProtectionFlag = ( ( eoi_type & 0x20 ) > 0 ) ? 1 : 0

[0193] When the value of eoiPrivacyProtectionFlag is 1, privacy-preserving optimization information can be generated and encoded into the bitstream. On the other hand, when the value of eoiPrivacyProtectionFlag is 0, privacy-preserving optimization information can be omitted and not encoded into the bitstream.

[0194] Privacy protection optimization information may include at least one of an identifier representing the type of privacy protection optimization (eoi_privacy_protection_type_idc) or information representing the type of protected information (eoi_privacy_protected_info_type). For example, eoi_privacy_protection_type_idc can be defined in Table 14 below. eoi_privacy_protected_info_type can be defined in Table 15 below.

[0195] [Table 14]

[0196] [Table 15]

[0197] When the value of `eoi_privacy_protected_info_type` is greater than 0 and `(eoi_privacy_protected_info_type & bitMask)` is not 0, this indicates that the information corresponding to the corresponding bitmask value is protected. When the value of `eoi_privacy_protected_info_type` is 0, this indicates that the type of information defined in the application is protected. The value of `eoi_privacy_protected_info_type` can be in the range of 0 to 7. Values ​​of `eoi_privacy_protected_info_type` from 8 to 255 are reserved for future use by ITU-T|ISO / IEC and may not exist in the bitstream. When the value of `eoi_privacy_protected_info_type` is in the range of 8 to 255, the decoder must ignore `eoi_privacy_protected_info_type`.

[0198] When the value of eoi_for_human_viewing_idc is 3, the constraint that the value of eoiPrivacyProtectionFlag should not be 1 can be applied to eoi_type. This is because when protecting privacy, quality degradation occurs in information that humans can recognize from the video, which may make it difficult to consider for optimizations aimed at human viewing.

[0199] When `eoi_for_human_viewing_idc` is 3, a constraint can be applied that privacy-preserving optimization information is not generated and is not encoded into the bitstream. Therefore, when `eoi_for_human_viewing_idc` is 3, the value of `eoiPrivacyProtectionFlag` can be forced to derive to 0. On the other hand, when `eoi_for_human_viewing_idc` is not 3, `eoiPrivacyProtectionFlag` can be adaptively derived to a value of either 0 or 1, and privacy-preserving optimization information can be generated and encoded into the bitstream based on the value of `eoiPrivacyProtectionFlag`. In other words, when `eoi_for_human_viewing_idc` is not 3, the above constraint can be disregarded. Therefore, based on the value of `eoi_for_human_viewing_idc`, it can be determined whether privacy-preserving optimization information is encoded.

[0200] Bit depth optimization information can be generated and encoded into a bitstream based on a flag indicating whether bit depth optimization is applied (eoiBitdepthOptimizationFlag).

[0201] For example, a value of 1 for eoiBitdepthOptimizationFlag could mean that bit depth optimization is applied, and a value of 0 for eoiBitdepthOptimizationFlag could mean that bit depth optimization is not applied. eoiBitdepthOptimizationFlag can be derived as shown in Equation 7 below.

[0202] [Formula 7]

[0203] eoiBitdepthOptimizationFlag = ( ( eoi_type & 0x40 ) > 0 ) ? 1 : 0

[0204] When the value of eoiBitdepthOptimizationFlag is 1, bit depth optimization information can be generated and encoded into the bitstream. On the other hand, when the value of eoiBitdepthOptimizationFlag is 0, bit depth optimization information can be not generated and can not be encoded into the bitstream.

[0205] Bit depth optimization information may include at least one of the following: information indicating the type of bit depth optimization (or the direction of bit shift) (eoi_bit_depth_optimization_type_flag), information identifying the shift size for the luminance component (eoi_bit_depth_shift_luma), or information identifying the shift size for the chrominance component (eoi_bit_depth_shift_chroma).

[0206] When the value of `eoi_bit_depth_optimization_type_flag` is 0, it indicates that the bit depth optimization type is truncated bit depth, and when the value of `eoi_bit_depth_optimization_type_flag` is 1, it indicates that the bit depth optimization type is increased bit depth. For example, when the value of `eoi_bit_depth_optimization_type_flag` is 0, a right shift can be applied, and when the value of `eoi_bit_depth_optimization_type_flag` is 1, a left shift can be applied.

[0207] `eoi_bit_depth_shift_luma` can represent the size of a right shift relative to the luminance component when a truncation bit depth is applied, and it can also represent the size of a left shift relative to the luminance component when an increase in bit depth is applied. For example, values ​​of `eoi_bit_depth_shift_luma` of 0, 1, 2, 3, 4, 5, 6, and 7 can mean that the input sample is shifted by 0 bits, 1 bit, 2 bits, 3 bits, 4 bits, 5 bits, 6 bits, and 7 bits, respectively. When no shift is required, there is no reason to define a corresponding value, and in this case, the value 0 can be omitted.

[0208] `eoi_bit_depth_shift_chroma` can represent the size of a right shift relative to the chroma component when a truncation bit depth is applied, and it can also represent the size of a left shift relative to the chroma component when an increase in bit depth is applied. For example, values ​​of `eoi_bit_depth_shift_chroma` of 0, 1, 2, 3, 4, 5, 6, and 7 can mean that the input sample is shifted by 0 bits, 1 bit, 2 bits, 3 bits, 4 bits, 5 bits, 6 bits, and 7 bits, respectively. When no shift is required, there is no reason to define a corresponding value, and in this case, the value 0 can be omitted.

[0209] The range (or number) of values ​​that can be set for `eoi_bit_depth_optimization_type_flag` can differ based on the value of `eoi_for_human_viewing_idc`. The range (or number) of applicable bit depth optimization types can also differ based on the value of `eoi_for_human_viewing_idc`.

[0210] For example, when eoi_for_human_viewing_idc is 3, the constraint that the value of eoi_bit_depth_optimization_type_flag should not be 0 can be applied to eoi_type. This is because when truncated bit depth is over-applied, quality degradation can occur in information that humans can recognize through video, which may make it difficult to consider it for optimizations for human viewing.

[0211] When `eoi_for_human_viewing_idc` is 3, the following constraint applies: `eoi_bit_depth_optimization_type_flag` is generated as a value of 1 and encoded into the bitstream. In other words, when `eoi_for_human_viewing_idc` is 3, the number of values ​​that can be set for `eoi_bit_depth_optimization_type_flag` can be 1, and the applicable bit depth optimization type can be limited to increasing bit depth. On the other hand, when `eoi_for_human_viewing_idc` is not 3, `eoi_bit_depth_optimization_type_flag` can be generated as either 0 or 1 and encoded into the bitstream. When `eoi_for_human_viewing_idc` is not 3, the above constraint does not apply. In other words, when `eoi_for_human_viewing_idc` is not 3, the number of values ​​that can be set for `eoi_bit_depth_optimization_type_flag` can be 2, and the applicable bit depth optimization types can include truncating bit depth and increasing bit depth.

[0212] Alternatively, when the value of eoi_for_human_viewing_idc is 3 and the value of eoi_bit_depth_optimization_type_flag is 0, the values ​​of eoi_bit_depth_shift_luma and eoi_bit_depth_shift_chroma can be constrained to minimize the quality degradation caused by bit truncation. For example, the values ​​of eoi_bit_depth_shift_luma and eoi_bit_depth_shift_chroma can be constrained so that the optimized bit depth is not less than a specific value (e.g., 8).

[0213] Based on the bit depth optimization type (or `eoi_bit_depth_optimization_type_flag`), the range or number of values ​​that can be set for `eoi_for_human_viewing_idc` can vary. For example, when applying a truncated bit depth, a constraint can be applied that the value of `eoi_for_human_viewing_idc` should not be 3. In other words, when applying a truncated bit depth, `eoi_for_human_viewing_idc` can be encoded as a value of 0, 1, or 2. The number of values ​​that can be set for `eoi_for_human_viewing_idc` when applying a truncated bit depth can be 3. When applying an increased bit depth, the constraint can be disregarded for the value of `eoi_for_human_viewing_idc`. In other words, when applying an increased bit depth, `eoi_for_human_viewing_idc` can be encoded as a value from 0 to 3. The number of values ​​that can be set for `eoi_for_human_viewing_idc` when applying an increased bit depth can be 4.

[0214] The range or number of values ​​that can be set for `eoi_for_human_viewing_idc` can vary depending on whether the optimized bit depth is less than a specific value. For example, when the optimized bit depth is less than a specific value (e.g., 8), a constraint that the value of `eoi_for_human_viewing_idc` should not be 3 can be applied. In other words, when the optimized bit depth is less than a specific value (e.g., 8), `eoi_for_human_viewing_idc` can be encoded as a value of 0, 1, or 2. The number of values ​​that can be set for `eoi_for_human_viewing_idc` when the optimized bit depth is less than a specific value (e.g., 8) can be 3. On the other hand, when the optimized bit depth is greater than or equal to a specific value (e.g., 8), no constraint can be applied to the value of `eoi_for_human_viewing_idc`. In other words, `eoi_for_human_viewing_idc` can be encoded as a value from 0 to 3, and the number of values ​​that can be set for `eoi_for_human_viewing_idc` can be 4.

[0215] The S430 can generate a bitstream that includes compressed video footage and encoder optimization information. Encoder optimization information can be configured in the SEI message of the bitstream. The SEI message can be included in the Network Abstraction Layer (NAL) unit of the bitstream.

[0216] Figure 5 An illustrative configuration of an encoding device 200 for performing a method for generating a bitstream according to the present disclosure is shown.

[0217] Reference Figure 5 The encoding device 200 may include a receiver 500, a video compressor 510, an EOI generator 520, and a bitstream generator 530.

[0218] Receiver 500 can receive one or more encoded video frames.

[0219] The video compressor 510 can encode one or more received video frames to generate compressed video frames.

[0220] The EOI generator 520 can generate encoder optimization information. This encoder optimization information can be generated by considering the constraints mentioned above, which is consistent with the reference... Figure 4 The descriptions are the same.

[0221] Bitstream generator 530 can generate bitstreams that include compressed video footage and encoder optimization information.

[0222] Figure 6 A method for reconstructing a video frame, performed by a decoding device 300 according to the present disclosure, is illustrated.

[0223] It can receive bitstreams of encoded video footage from the S600.

[0224] It can reconstruct encoded video footage from the S610 bitstream.

[0225] Video information related to encoded video frames can be extracted from the bitstream. The extracted video information can then be used to reconstruct the encoded video frames.

[0226] Additionally, SEI messages can be included in the NAL units of the bitstream. Encoder optimization information (EOI) S420 can be defined in the SEI message. Encoder optimization information can be related to the encoded video frame. Encoder optimization information can be included in the SEI message and signaled via the bitstream.

[0227] Encoder optimization information can include the EOI cancellation flag (eoi_cancel_flag). Based on eoi_cancel_flag being 0, optimization-related information can be included in the encoder optimization information, which is consistent with the reference... Figure 4 The descriptions are the same.

[0228] The eoi_for_machine_analysis_idc and eoi_for_human_viewing_idc, which are signaled by the encoder to optimize information, are encoded according to the above constraints and can be decoded into values ​​that conform to the constraints. This is consistent with the reference... Figure 4 The descriptions are the same, and repeated descriptions will be omitted here.

[0229] The range (or number) of values ​​that can be set for eoi_for_machine_analysis_idc based on the value of eoi_for_human_viewing_idc can be different. Alternatively, the range (or number) of values ​​that can be set for eoi_for_human_viewing_idc based on the value of eoi_for_machine_analysis_idc can be different.

[0230] Based on the value of `eoi_for_human_viewing_idc`, it can be determined whether detailed information related to the optimization characteristics according to `eoi_type` has been decoded. The range (or number) of values ​​that can be set for detailed information related to the optimization characteristics according to `eoi_type` based on the value of `eoi_for_human_viewing_idc` can differ. This differs from the reference... Figure 4 The descriptions are the same.

[0231] Based on the bit depth optimization type (or eoi_bit_depth_optimization_type_flag), the range or number of values ​​that can be set for eoi_for_human_viewing_idc can differ. This differs from the reference... Figure 4 The descriptions are the same.

[0232] Depending on whether the optimized bit depth is less than a specific value, the range or number of values ​​that can be set for `eoi_for_human_viewing_idc` can differ. This differs from the reference... Figure 4 The descriptions are the same.

[0233] Figure 7 An illustrative configuration of a decoding device 300 for performing a method for reconstructing a video frame according to the present disclosure is shown.

[0234] Reference Figure 7 The decoding device 300 may include a receiver 700, a video information extractor 710, and a video reconstructor 720.

[0235] Receiver 700 can receive bitstreams including encoded video footage.

[0236] The video information extractor 710 can extract video information related to encoded video frames from the bitstream. Additionally, the video information extractor 710 can extract SEI messages from the NAL units of the bitstream. The extracted SEI messages may include encoder optimization information.

[0237] The Video Reconstructor 720 can reconstruct encoded video footage based on the extracted video information.

[0238] In the above embodiments, the method is described based on a flowchart as a series of steps or blocks. However, the corresponding embodiments are not limited to this order of steps. Some steps may occur simultaneously with other steps or in a different order, as described above. In addition, those skilled in the art will understand that the steps shown in the flowchart are not exclusive. Other steps may be included, or one or more steps in the flowchart may be deleted, without affecting the scope of the embodiments of this disclosure.

[0239] The methods described above according to embodiments of the present disclosure can be implemented in software, and the encoding and / or decoding devices according to the present disclosure can be included in an apparatus for performing image processing, such as a TV, computer, smartphone, set-top box, display device, etc.

[0240] In this disclosure, when the implementation is implemented as software, the above-described method can be implemented as a module (process, function, etc.) performing the above-described functions. The module can be stored in memory and can be executed by a processor. The memory can be internal or external to the processor and can be connected to the processor by various well-known means. The processor may include an application-specific integrated circuit (ASIC), another chipset, logic circuitry, 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. In other words, the implementations described herein can be executed by implementation on a processor, microprocessor, controller, or chip. For example, the functional units shown in the various figures can be executed by implementation on a computer, processor, microprocessor, controller, or chip. In this case, information for implementation (e.g., information about instructions) or algorithms can be stored in a digital storage medium.

[0241] Furthermore, decoding and encoding devices employing embodiments of this disclosure can be included in multimedia broadcasting transmitting and receiving devices, mobile communication terminals, home theater video devices, digital cinema video devices, surveillance cameras, video conferencing devices, real-time communication devices similar to video communication, mobile streaming devices, storage media, cameras, devices for providing video-on-demand (VOD) services, OTT (over-the-top) video devices, devices for providing internet streaming services, three-dimensional (3D) video devices, virtual reality (VR) devices, augmented reality (AR) devices, video telephony devices, transportation terminals (e.g., vehicle (including autonomous vehicle) terminals, aircraft terminals, ship terminals, etc.), and medical video devices, and can be used to process video signals or data signals. For example, OTT (over-the-top) video devices can include game consoles, Blu-ray players, internet-connected televisions, home theater systems, smartphones, tablet PCs, digital video recorders (DVRs), etc.

[0242] Furthermore, the processing methods applying the embodiments of this disclosure can be generated in the form of a computer-executable program and can be stored in a computer-readable recording medium. Multimedia data with data structures according to the embodiments of this disclosure can also be stored in a computer-readable recording medium. Computer-readable recording media include all types of storage devices and distributed storage devices that store computer-readable data. Computer-readable recording media can include, for example, Blu-ray discs (BD), Universal Serial Bus (USB), ROM, PROM, EPROM, EEPROM, RAM, CD-ROM, magnetic tape, floppy disks, and optical media storage devices. Additionally, computer-readable recording media include media implemented in the form of carrier waves (e.g., transmission via the Internet). Furthermore, bitstreams generated by encoding methods can be stored in computer-readable recording media or transmitted via wired / wireless communication networks.

[0243] Furthermore, the embodiments of this disclosure can be implemented by a computer program product using program code, and the program code can be executed on a computer using the embodiments of this disclosure. The program code can be stored on a computer-readable medium.

[0244] Figure 8 Examples of content streaming systems to which embodiments of this disclosure can be applied are shown.

[0245] Reference Figure 8 A content streaming system that applies embodiments of the present disclosure may generally include an encoding server, a streaming server, a network server, a media storage device, a user device, and a multimedia input device.

[0246] An encoding server generates a bitstream by compressing content input from multimedia input devices such as smartphones, cameras, and camcorders into digital data and then sends it to a streaming server. As another example, when multimedia input devices such as smartphones, cameras, and camcorders directly generate bitstreams, the encoding server can be omitted.

[0247] A bitstream can be generated by an encoding method or bitstream generation method that applies the embodiments of this disclosure, and the streaming server can temporarily store the bitstream during the sending or receiving of the bitstream.

[0248] A streaming server sends multimedia data to a user device via a web server based on a user request, and the web server acts as a medium to inform the user what services are available. When a user requests a desired service from the web server, the web server transmits the request to the streaming server, and the streaming server sends the multimedia data to the user. In this scenario, the content streaming system may include a separate control server, which controls the commands / responses between the various devices in the content streaming system.

[0249] A streaming server can receive content from media storage and / or encoding servers. For example, when receiving content from an encoding server, the content can be received in real time. In this case, to provide a smooth streaming service, the streaming server can store the bitstream for a specific time period.

[0250] Examples of user devices may include mobile phones, smartphones, laptops, digital broadcasting terminals, personal digital assistants (PDAs), portable multimedia players (PMPs), navigators, touchscreen PCs, tablet PCs, ultrabooks, wearable devices (e.g., smartwatches, smart glasses, head-mounted displays (HMDs)), digital TVs, desktop computers, digital signage, etc.

[0251] In a content streaming system, each server can operate as a distributed server, and in this case, the data received from each server can be distributed and processed.

[0252] The claims set forth herein can be combined in various ways. For example, the technical features of the method claims of this disclosure can be combined and implemented as an apparatus, and the technical features of the apparatus claims of this disclosure can be combined and implemented as a method. Furthermore, the technical features of the method claims and the apparatus claims of this disclosure can be combined and implemented as an apparatus, and the technical features of the method claims and the apparatus claims of this disclosure can be combined and implemented as a method.

Claims

1. A method comprising the following steps: Receive the video frame to be encoded; The received video footage is encoded to generate compressed video footage; Generate encoder optimization information (EOI); as well as Generate a bitstream that includes the compressed video footage and the encoder optimization information. The encoder optimization information is encoded into the Network Abstraction Layer (NAL) unit of the bitstream, and The encoder optimization information includes at least one of an EOI identifier for human viewing or an EOI identifier for machine analysis.

2. The method according to claim 1, wherein, Both the EOI identifier for human viewing and the EOI identifier for machine analysis have a value ranging from 0 to 3.

3. The method according to claim 2, wherein, The constraint is that neither the EOI identifier for human viewing nor the EOI identifier for machine analysis should be 1.

4. The method according to claim 3, wherein, A value of 1 for the EOI identifier for human viewing means that the video is not suitable for human viewing, and In this context, an EOI identifier value of 1 for the machine analysis means that the video is not suitable for the machine analysis.

5. The method according to claim 2, wherein, The number of values ​​that can be set for the other of the EOI identifier for human viewing and the EOI identifier for machine analysis, based on the value of one of them, is determined differently.

6. The method according to claim 2, wherein, The constraint applies that neither the EOI identifier for human viewing nor the EOI identifier for machine analysis should be 0.

7. The method according to claim 2, wherein, The constraint applies that at least one of the EOI identifier for human viewing and the EOI identifier for machine analysis should have a value of 3.

8. The method according to claim 1, wherein, The encoder optimization information includes object-based optimization-related information, and Whether the object-based optimization-related information is encoded is determined based on the value of the EOI identifier for the human view.

9. The method according to claim 1, wherein, The encoder optimization information includes privacy protection optimization information, and Whether the privacy protection optimization-related information is encoded is determined based on the value of the EOI identifier for the human view.

10. The method according to claim 1, wherein, The encoder optimization information includes bit depth optimization related information. The bit depth optimization related information includes information indicating the type of bit depth optimization, and Specifically, based on the value of the EOI identifier for the human view, a constraint is applied indicating that the value of the information of the type optimized for bit depth should not be 0.

11. A method comprising the following steps: Receive bitstreams including encoded video frames; as well as The reconstructed encoded video frames included in the bitstream The bitstream includes encoder optimization information (EOI). The encoder optimization information is obtained from the Network Abstraction Layer (NAL) unit of the bitstream, and The encoder optimization information includes at least one of an EOI identifier for human viewing or an EOI identifier for machine analysis.

12. A computer-readable storage medium for storing a bit stream generated by the method according to claim 1.

13. A method comprising the following steps: A bitstream is generated based on the following steps: receiving a video frame to be encoded; encoding the received video frame to generate a compressed video frame; generating encoder optimization information (EOI); and generating the bitstream including the compressed video frame and the encoder optimization information; and Send data including the bit stream. The encoder optimization information is encoded into the Network Abstraction Layer (NAL) unit of the bitstream, and The encoder optimization information includes at least one of an EOI identifier for human viewing or an EOI identifier for machine analysis.