High-level syntax for video encoding and decoding
By placing APS ID-related syntax elements at the beginning of picture and slice headers, the complexity of bitstream analysis is reduced, addressing the increased complexity introduced by new video coding tools, and enhancing processing efficiency in streaming applications.
Patent Information
- Application Number
- JP2023208814
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-12-20
- Filing Date
- 2023-12-11
- Publication Date
- 2025-03-19
- Estimated Expiration
- 2040-12-18
AI Technical Summary
The introduction of new tools in the JVET Exploration Model for video coding, such as the picture header, increases the complexity of bitstream analysis, particularly in streaming applications where only APS ID information may be needed.
By setting syntax elements related to APS ID information at the beginning of the picture and slice headers, the need to parse the entire header is eliminated, reducing analysis complexity and allowing for faster processing in streaming applications.
This modification simplifies the analysis process in streaming applications without degrading coding performance, as it allows for quicker access to the necessary APS ID information, reducing computational overhead.
Smart Images

Figure 0007649365000019 
Figure 0007649365000020 
Figure 0007649365000021
Abstract
Description
[Technical field]
[0001] The present invention relates to video encoding and decoding, and in particular to high level syntax used in the bitstream. [Background technology]
[0002] Recently, the Joint Video Experts Team (JVET), a joint team formed by MPEG and the VCEG of ITU-T Study Group 16, has begun work on a new video coding standard called Versatile Video Coding (VVC). The goal of VVC is to provide significant improvements in compression performance over the existing HEVC standard (i.e., typically twice as much as before) and to be completed in 2020. Primary target applications and services include (but are not limited to) 360-degree and high dynamic range (HDR) video. In total, the JVET evaluated responses from 32 parties using formal subjective testing conducted by an independent testing laboratory. Several proposals demonstrated compression efficiency gains of typically 40% or more compared to using HEVC. They showed particular effectiveness for ultra-high definition (UHD) video test material. Compression efficiency gains are therefore expected to far exceed the 50% targeted for the final standard. Summary of the Invention [Problem to be solved by the invention]
[0003] The JVET Exploration Model (JEM) uses all the HEVC tools and introduces a number of new tools. These changes required changes to the bitstream structure, especially the high-level syntax, which may affect the overall bitstream bitrate.
[0004] One of the key changes in the high-level syntax is the introduction of a "picture header" to the bitstream. A picture header is a header that specifies the syntax elements used to decode each slice in a particular picture (or frame). Thus, the picture header precedes the data related to the slice in the bitstream, and each slice has its own "slice header." This structure is described in more detail below with reference to FIG. 6.
[0005] Document JVET-P0239 from the 16th meeting: Geneva, CH, 1-11 October 2019, entitled "AHG17: Picture Header", proposed the introduction of a mandatory picture header into VVC, which was adopted as Generic Video Coding (Draft 7), uploaded as document JVET_P2001.
[0006] However, this header has a number of parameters, all of which must be parsed in order to use a particular decoding tool.
[0007] The present invention relates to an improvement to the structure of the picture header to simplify this parsing process, which leads to reduced complexity without compromising coding performance.
[0008] In particular, by placing syntax elements related to APS ID information at the beginning of the picture header, these elements can be parsed first, potentially eliminating the need to parse the remainder of the header.
[0009] Similarly, if the slice header has syntax elements related to APS ID information, these are set at the beginning of the slice header.
[0010] In one example, it is proposed to move syntax elements related to APS IDs earlier in the picture and slice headers. The purpose of this modification is to reduce the parsing complexity of some streaming applications that need to track APS IDs in picture and slice headers in order to remove unused APSs. The proposed modification does not impact BDR performance.
[0011] This reduces parsing complexity for streaming applications where the APS ID information may be all that is needed from the header. Other streaming-related syntax elements may also be moved towards the beginning of the header for the same reasons.
[0012] It should be understood that the term "beginning" does not mean the first entry of the respective header, since there may be multiple introductory syntax elements before the syntax elements related to the APS ID information. The detailed description provides various examples, but the general definition is that the syntax elements related to the APS ID information are provided before the syntax elements related to the decoding tool. In one specific example, the syntax elements related to the APS IDs of the ALF, LMCS, and scaling list are set immediately after the poc_msb_val syntax element. [Means for solving the problem]
[0013] According to an aspect of the present invention, there is provided a method for decoding video data from a bitstream, where the video data corresponds to one or more slices, the bitstream having a header including syntax elements for use in decoding the one or more slices, the decoding comprising parsing from the header at least one syntax element for an APS ID decoding tool prior to parsing a syntax element declared for decoding the decoding tool, and decoding the bitstream utilizing the syntax elements.
[0014] According to another aspect of the present invention, there is provided a method for encoding video data into a bitstream, the bitstream having video data corresponding to one or more slices, the bitstream comprising a header having syntax elements for use in decoding the one or more slices, the encoding comprising encoding a header having at least one syntax element relating to an APS ID decoding tool prior to syntax elements declared for decoding the decoding tool.
[0015] Optional features of both the above decoding method and encoding method counterparts are as follows. Optionally, the header is a picture header having syntax elements for use when decoding multiple slices within a picture. Optionally, the at least one APS ID-related syntax element is preceded by a syntax element indicating that the current picture is never used as a reference picture. Optionally, the at least one APS ID related syntax element is preceded by a syntax element indicating that the current picture is a gradual decoding refresh picture. Optionally, the at least one APS ID related syntax element follows a syntax element indicating a change in a previously decoded picture in the decoded picture buffer. Optionally, the at least one APS ID related syntax element follows picture type information. Optionally, the at least one APS ID related syntax element follows picture parameter set information. Optionally, the header is a slice header. Optionally, the at least one APS ID related syntax element follows sub-picture information. Optionally, the at least one APS ID related syntax element follows a syntax element indicating a sub-picture ID of the current slice. Optionally, the at least one APS ID related syntax element follows a syntax element indicating an address of a slice. Optionally, the at least one APS ID related syntax element follows a syntax element indicating the number of tiles in a slice. Optionally, the at least one APS ID related syntax element follows a syntax element indicating the type of the current slice. Optionally, the syntax elements declared for the decoding tool include low level tool parameters. Optionally, the low level tool parameters comprise deblocking filter parameters. Optionally, the low level tool parameters comprise quantization parameters. Optionally, the low level tool parameters comprise SAO parameters. Optionally, the low level tool parameters include a syntax element that indicates that the signs of the two color residual samples are sign inverted. Optionally, the low level tool parameters comprise motion parameters. Optionally, the low level tool parameters include a QP offset parameter. Optionally, the low level tool parameters comprise partitioning parameters. Optionally, the low level tool parameters comprise a reference picture list parameter. Optionally, the low level tool parameters include a syntax element that indicates that the current picture is the output picture. Optionally, the low level tool parameters include a syntax element that indicates a color plane index. Optionally, the low level tool parameters include a CABAC initialization flag. Optionally, the low level tool parameters comprise collocated prediction parameters. Optionally, the low level tool parameters comprise weighted prediction parameters. Optionally, the at least one APS ID related syntax element comprises an APS ID LMCS. Optionally, the at least one APS ID related syntax element comprises an APS ID scaling list. Optionally, the APS scaling list contains information to enable scaling matrices in the LNST method. Optionally, the at least one APS ID related syntax element comprises an APS ID ALF list. Optionally, the APS ALF list contains information regarding signaling of clip values.
[0016] According to an aspect of the present invention, there is provided a method for encoding video data into a bitstream, where the bitstream comprises video data corresponding to a plurality of pictures and an APS transmission, and the encoding comprises signaling a presence of a resynchronization picture to the bitstream and resetting an APS ID based on the signaling that an APS ID of a previous picture is not used in a subsequent picture.
[0017] Optionally, determining whether the picture is relevant for a resynchronization process comprises determining whether the picture is an IRAP or GDR picture.
[0018] According to an aspect of the present invention, there is provided a decoder for decoding video data from a bitstream, where the bitstream comprises video data corresponding to one or more slices, the bitstream comprises a header comprising syntax elements for use when decoding the one or more slices, and the decoder comprises means for parsing from the header at least one syntax element relating to an APS ID decoding tool before parsing syntax elements declared to a decoding tool, and means for decoding the bitstream using the syntax elements.
[0019] According to an aspect of the present invention, there is provided an encoder for encoding video data into a bitstream, wherein the bitstream comprises video data corresponding to one or more slices, the bitstream comprising a header comprising syntax elements for use in decoding the one or more slices, the encoder comprising means for encoding a header comprising at least one syntax element relating to an APS ID decoding tool prior to syntax elements declared for decoding the decoding tool.
[0020] According to a further aspect of the present invention, there is provided an encoder for encoding video data into a bitstream, wherein the bitstream comprises video data corresponding to a plurality of pictures and an APS transmission, the encoder comprising means for signaling a presence of a resynchronization picture to the bitstream, and means for resetting an APS ID based on the signaling such that an APS ID of a previous picture is not used in a subsequent picture.
[0021] In another aspect of the invention there is provided a computer readable storage medium storing a program or instructions which, when executed on a programmable device, causes said programmable device to carry out a method according to any of the method aspects described above.
[0022] According to one aspect of the present invention, there is provided a method for decoding video data from a bitstream, where the bitstream comprises video data corresponding to a plurality of slices, the bitstream comprises a header having syntax elements for use in decoding one or more slices, and the decoding comprises parsing the picture header, parsing at least one APS ID related syntax element before syntax elements relating to a decoding tool, and decoding the bitstream using the syntax elements.
[0023] This allows for a simpler and faster parsing process, especially in streaming applications.
[0024] In a related aspect of the invention, there is provided a method of encoding video data into a bitstream, the bitstream having video data corresponding to a plurality of slices, the bitstream having a header including syntax elements for use in decoding one or more slices, and the encoding includes encoding a picture header with APS ID related syntax elements before decoding tool related syntax elements.
[0025] Optionally, the at least one APS ID related syntax element comprises an APS ID LMCS. Optionally, the at least one APS ID related syntax element comprises an APS ID cabling list. Optionally, the APS ID scaling list contains information to validate the scaling matrices for the LNST method.
[0026] Optionally, the at least one APS ID related syntax element includes an APS ID ALF list. Preferably, the APS ALF list includes information related to signaling of clipping values.
[0027] To reduce parsing complexity, the at least one APS ID related syntax element may be after syntax elements that do not depend on values from other headers.
[0028] Optionally, the header is a picture header that contains syntax elements used when decoding multiple slices within a picture.
[0029] Optionally, the at least one APS ID related syntax element follows one or more of: a syntax element indicating that the current picture is never used as a reference picture, a syntax element indicating that the current picture is a gradual decoding refresh picture, a syntax element indicating a change in a previously decoded picture in the decoding picture buffer, picture parameter set information, sub-picture information, or picture type information.
[0030] For ease of parsing, the at least one APS ID related syntax element can be after fixed length syntax elements, so that the APS ID related syntax elements can be parsed first since they are always in the same place in the header.
[0031] Optionally, syntax elements associated with a decoding tool include low-level tool parameters.
[0032] Optionally, the low-level tool parameters include one or more of a deblocking filter parameter, a quantization parameter, an SAO parameter, a syntax element indicating that the signs of the two color residual samples have inverted signs, a motion parameter, a QP offset parameter, a partitioning parameter, a reference picture list parameter, a syntax element indicating that the current picture is an output picture, or a syntax element indicating a color plane index.
[0033] Optionally, the method comprises determining whether the picture is involved in a resynchronization process, and if so, decoding to reset the APS ID.
[0034] According to another aspect of the present invention, there is provided a method for decoding video data from a bitstream, where the bitstream comprises video data corresponding to a plurality of slices, the bitstream comprising a header including syntax elements for use in decoding one or more slices, and the decoding includes parsing the picture header, determining whether the picture is related to a resynchronization process based on a signal in the bitstream, and if so, resetting an APS ID.
[0035] This allows flexibility in the use of resynchronization frames while simplifying the analysis process.
[0036] Optionally, the APS associated with the APS ID is not used in the decoding process of future decoded pictures.
[0037] According to another aspect of the present invention, there is provided a method of encoding video data into a bitstream, where the bitstream comprises video data corresponding to a plurality of pictures and an APS transmission, and the encoding comprises signaling a presence of a resynchronization picture into the bitstream and resetting an APS ID based on the signaling such that an APS ID of a previous picture is not used in a subsequent picture.
[0038] Optionally, determining whether the picture is involved in the resynchronization process includes determining whether the picture is an IRAP or GDR picture. Optionally, the header is a slice header.
[0039] Optionally, the at least one APS ID-related syntax element follows one or more of a syntax element indicating a POC of the current slice, a syntax element indicating a subpicture ID of the current slice, a syntax element indicating a destination of the slice, a syntax element indicating the number of tiles in the slice, or a syntax element indicating the type of the current slice. Optionally, syntax elements associated with a decoding tool include low-level tool parameters. Optionally, the low level tool parameters comprise one or more of a reference picture list parameter, a CABAC initialization flag, a collocated prediction parameter, a weighted prediction parameter, a QP parameter, or a SAO parameter.
[0040] Yet another aspect of the invention relates to an encoder and a decoder defined for carrying out the encoding method and the decoding method respectively described above.
[0041] Yet another aspect of the invention relates to a program which, when executed, causes the method of the method aspect described above to be performed. The program may be provided by itself or may be carried on, by or within a carrier medium. The carrier medium may be non-transitory, for example a storage medium, in particular a computer-readable storage medium. The carrier medium may also be transitory, for example a signal or other transmission medium. The signal may be transmitted over any suitable network, including the Internet.
[0042] Further aspects of the invention are characterized in the other independent and dependent claims.
[0043] Any feature of one aspect of the invention may be applied to other aspects of the invention in any appropriate combination, in particular method aspects may be applied to apparatus aspects and vice versa.
[0044] Furthermore, features implemented in hardware may be implemented in software and vice versa, and any references herein to software and hardware features should be interpreted accordingly.
[0045] Any apparatus features as described herein may be provided as method features, and vice versa. As used herein, means-plus-function features may alternatively be expressed in terms of their corresponding structures, such as a suitably programmed processor and associated memory.
[0046] It is also to be understood that specific combinations of the various features described and defined in any embodiment of the present invention can be implemented and / or provided and / or used independently. [Brief description of the drawings]
[0047] Reference is now made, by way of example, to the accompanying drawings in which: [Figure 1] FIG. 1 is a diagram for explaining the coding structure used in HEVC and VVC. [Diagram 2] 1 is a block diagram that illustrates generally a data communications system in which one or more embodiments of the present invention may be implemented; [Diagram 3] FIG. 1 is a block diagram illustrating components of a processing device capable of implementing one or more embodiments of the present invention. [Figure 4] 4 is a flow chart illustrating steps of an encoding method according to an embodiment of the present invention. [Diagram 5] 4 is a flow chart illustrating steps of a decoding method according to an embodiment of the present invention. [Figure 6] FIG. 2 illustrates the structure of a bitstream in an exemplary coding system VVC. [Figure 7] FIG. 1 is a diagram showing Luma Modelling Chroma Scaling (LMCS). [Figure 8] FIG. 1 is a diagram showing sub-tools of LMCS. [Figure 9] FIG. 1 illustrates a system comprising an encoder or decoder and a communication network according to an embodiment of the invention. [Figure 10] 1 is a schematic block diagram of a computing device for implementing one or more embodiments of the present invention. [Figure 11] FIG. 1 illustrates a network camera system. [Figure 12] FIG. 1 illustrates a smartphone. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0048] Figure 1 relates to the coding structure used in the High Efficiency Video Coding (HEVC) video standard. A video sequence 1 consists of a sequence of digital images i. Each such digital image is represented by one or more matrices, whose coefficients represent pixels.
[0049] An image 2 of a sequence can be divided into slices 3. A slice can possibly constitute an entire image. These slices are divided into non-overlapping Coding Tree Units (CTUs). A Coding Tree Unit (CTU) is the basic processing unit of the High Efficiency Video Coding (HEVC) video standard and corresponds conceptually to the macroblock unit used in some previous video standards. A CTU is sometimes also called a Largest Coding Unit (LCU). A CTU has luma (luminance) and chroma (color difference) component parts, each of which is called a Coding Tree Block (CTB). These different color components are not shown in FIG. 1.
[0050] A CTU is typically 64 pixels by 64 pixels in size. Each CTU may be recursively divided into smaller variable-sized coding units (CUs) 5 using a quadtree decomposition.
[0051] A coding unit is an elementary coding element and consists of two types of sub-units called prediction unit (PU) and transform unit (TU). The maximum size of a PU or TU is equal to the CU size. A prediction unit corresponds to a partition of a CU for prediction of pixel values. Various different partitions of a CU into PUs are possible, including a partition into four square PUs and two different partitions into two rectangular PUs, as shown by 606. A transform unit is a basic unit that performs spatial transformation using DCT. A CU can be divided into TUs based on a quadtree representation 607.
[0052] Each slice is embedded in one Network Abstraction Layer (NAL) unit. Furthermore, the coding parameters of a video sequence are stored in a dedicated NAL unit called a parameter set. In HEVC and H.264 / AVC, two types of parameter set NAL units are used: the first is the Sequence Parameter Set (SPS) NAL unit, which collects all parameters that do not change during the entire video sequence. Typically, it handles the coding profile, the size of the video frames, and other parameters. The second is the Picture Parameter Set (PPS) NAL unit, which contains parameters that can change from one picture (or frame) of the sequence to another. HEVC also includes the Video Parameter Set (VPS) NAL unit, which contains parameters that describe the overall structure of the bitstream. The VPS is a new type of parameter set defined in HEVC that applies to all layers of the bitstream. A layer can contain multiple temporal sublayers, and all version 1 bitstreams are limited to one layer. HEVC has specific layer extensions for scalability and multiview that allow for multiple layers with a backwards compatible version 1 base layer.
[0053] Fig. 2 illustrates a data communication system in which one or more embodiments of the present invention can be implemented. The data communication system includes a transmitting device, in this case a server 201, operable to transmit data packets of a data stream to a receiving device, in this case a client terminal 202, via a data communication network 200. The data communication network 200 may be a wide area network (WAN) or a local area network (LAN). Such a network may be, for example, a wireless network (Wifi / 802.11a or b or g), an Ethernet network, an Internet network, or a mixed network consisting of several different networks. In a particular embodiment of the present invention, the data communication system may be a digital television broadcasting system in which a server 201 transmits the same data content to multiple clients.
[0054] The data stream 204 provided by the server 201 may be composed of multimedia data representing video and audio data. The audio and video data streams may, in some embodiments of the invention, be captured by the server 201 using a microphone and a camera, respectively. In some embodiments, the data streams may be stored on the server 201 or may be received by the server 201 from another data provider or may be generated at the server 201. The server 201 comprises, inter alia, an encoder for encoding the video and audio streams to provide a compressed bitstream for transmission, which is a more compact representation of the data presented as input to the encoder.
[0055] In order to obtain a better ratio of the quality of the transmitted data to the amount of the transmitted data, the compression of the video data may for example be according to the HEVC format or the H.264 / AVC format.
[0056] Client 202 receives the transmitted bitstream, decodes the reconstructed bitstream, and plays the video images on a display device and the audio data through speakers.
[0057] Although the example of FIG. 2 considers a streaming scenario, it will be appreciated that in some embodiments of the invention, data communication between the encoder and the decoder may be performed using a media storage device, such as, for example, an optical disc.
[0058] In one or more embodiments of the invention, a video image is transmitted along with data representing compensation offsets to apply to the reconstructed pixels of the image to provide filtered pixels in the final image.
[0059] 3 shows a schematic diagram of a processing device 300 configured to implement at least one embodiment of the present invention. The processing device 300 may be a device such as a microcomputer, a workstation, or a light portable device. The device 300 has a communication bus 313 to which the following are connected: - a central processing unit 311, such as a microprocessor, indicated by CPU; - a read-only memory 306, denoted ROM, for storing a computer program for implementing the invention; a random access memory 312, denoted as RAM, for storing the executable code of the method of the embodiments of the invention, as well as registers adapted to record variables and parameters necessary for implementing the method of encoding a sequence of digital images and / or the method of decoding a bitstream according to an embodiment of the invention; and a communications interface 302 connected to a communications network 303 over which the digital data to be processed is transmitted and received;
[0060] Optionally, the device 300 may also include the following components: - a data storage means 304, such as a hard disk, for storing computer programs for implementing the methods of one or more embodiments of the invention, and data used or generated during the implementation of one or more embodiments of the invention; - a disk drive 305 configured to read data from or write data to a disk 306; A screen 309 for displaying data and acting as a graphical interface for communicating with the user by means of a keyboard 310 or any other pointing means;
[0061] The device 300 may be connected to various peripheral devices, such as a digital camera 320 or a microphone 308 , each connected to an input / output card (not shown) for providing multimedia data to the device 300 .
[0062] The communication bus provides communication and interoperability between the various elements included in or connected to the device 300. The representation of the bus is not limiting, in particular the central processing unit is operable to communicate instructions to any element of the device 300, either directly or by means of another element of the device 300.
[0063] The disk 306 may be replaced by any information carrier, for example a compact disk (CD-ROM), a ZIP disk or a memory card, rewritable or not, etc. Generally speaking, it may be replaced by any information storage means readable by a microcomputer or a microprocessor, integrated or not integrated in the device, possibly removable, and configured to store one or more programs whose execution enables the method of encoding a sequence of digital images and / or the method of decoding a bitstream according to the invention.
[0064] The executable code may be stored either in the read-only memory 306, in the hard disk 304 or on a removable digital medium as previously explained, such as for example the disk 306. According to a variant, the executable code of the program may be received by means of the communication network 303, via the interface 302, in order to be stored in one of the storage means of the device 300, such as the hard disk 304, before being executed.
[0065] The central processing unit 311 is arranged to control and direct the execution of instructions or parts of the program or software code of the program according to the invention with instructions stored in one of the aforementioned storage means. On power-up, the program or programs stored in a non-volatile memory, for example on the hard disk 304 or the read-only memory 306, are transferred to the random access memory 312. This includes the executable code of the program or programs as well as registers for storing variables and parameters necessary to implement the invention.
[0066] The device in this embodiment is a programmable device that uses software to implement the invention, however, alternatively, the invention may be implemented in hardware (e.g. in the form of an application specific integrated circuit (ASIC)).
[0067] 4 shows a block diagram of an encoder according to at least one embodiment of the present invention. The encoder is represented by connected modules, each adapted to perform at least one or more corresponding steps of a method for implementing at least one or more embodiments of encoding images of an image sequence according to at least one embodiment of the present invention, for example in the form of program instructions to be executed by the CPU 311 of the device 300.
[0068] An original sequence of digital images i0 to in401 is received as input by the encoder 400. Each digital image is represented by a set of samples known as pixels.
[0069] A bitstream 410 is output by the encoder 400 after the encoding process is performed. The bitstream 410 comprises a number of coding units or slices. Each slice comprises a slice header for transmitting coded values of coding parameters used to code the slice, and a slice body with coded video data.
[0070] An input digital image i0 to in401 is divided by a module 402 into pixel blocks. The blocks correspond to image portions and may be of variable size (for example 4x4, 8x8, 16x16, 32x32, 64x64, 128x128 pixels, and also several rectangular block sizes can be considered). A coding mode is selected for each input block. Two families of coding modes are provided: coding modes based on spatial predictive coding (intra prediction) and coding modes based on temporal prediction (inter coding, merge, SKIP). The possible coding modes are tested.
[0071] Module 403 performs an intra prediction process, where a given block to be coded is predicted by a predictor calculated from pixels in the neighborhood of the block to be coded. If intra coding is selected, an indication of the selected intra predictor and the difference between the given block and its predictor are coded to provide a residual.
[0072] Temporal prediction is performed by the motion estimation module 404 and the motion compensation module 405. First, a reference image is selected from the set of reference images 416, and the part of the reference image, also called reference region or image part, that is closest to the given block to be coded is selected by the motion estimation module 404. The motion compensation module 405 then uses the selected area to predict the block to be coded. The difference between the selected reference region and the given block, also called residual block, is calculated by the motion compensation module 405. The selected reference region is indicated by a motion vector.
[0073] Thus, in both cases (spatial and temporal prediction), the residual is calculated by subtracting the prediction from the original block.
[0074] In the INTRA prediction implemented by module 403, the prediction direction is coded. In the temporal prediction, at least one motion vector is coded. In the inter prediction implemented by modules 404, 405, 416, 418, 417, at least one motion vector or data for identifying such a motion vector is coded for the temporal prediction.
[0075] If inter prediction is selected, the motion vector and information about the residual block are coded. To further reduce the bit rate, assuming that the motion is uniform, the motion vector is coded by difference to the motion vector predictor. The motion vector predictor of the set of motion information predictors is obtained from the motion vector field 418 by the motion vector prediction coding module 417.
[0076] The encoder 400 further comprises a selection module 406 for selecting a coding mode by applying a coding cost criterion, such as a rate-distortion criterion. To further reduce redundancy, a transform (such as a DCT) is applied to the residual block by a transform module 407, and the resulting transformed data is quantized by a quantization module 408 and entropy coded by an entropy coding module 409. Finally, the coded residual block of the coded current block is inserted into a bitstream 410.
[0077] The encoder 400 also performs decoding of the coded images to generate reference images for the motion estimation of subsequent images. This allows the encoder and decoder receiving the bitstream to have the same reference frame. The inverse quantization module 411 performs inverse quantization of the quantized data, followed by inverse transformation by the inverse transformation module 412. The inverse intra prediction module 413 uses the prediction information to decide which predictor to use for a given block, and the inverse motion compensation module 414 actually adds the residual obtained by module 412 to a reference region obtained from a set of reference images 416.
[0078] Post-filtering is then applied by module 415 to filter the frame of reconstructed pixels. In an embodiment of the invention, an SAO loop filter is used in which a compensating offset is added to the pixel values of the reconstructed pixels of the reconstructed image.
[0079] 5 shows a block diagram of a decoder 60 that may be used to receive data from an encoder according to one embodiment of the present invention. The decoder is represented by connected modules, each module configured to carry out a corresponding step of a method realized by the decoder 60, for example in the form of program instructions executed by the CPU 311 of the device 300.
[0080] The decoder 60 receives a bitstream 61 containing coding units, each of which consists of a header containing information about coding parameters and a body containing the coded video data. The structure of a bitstream in VVC is explained in more detail below with reference to FIG. 6. As explained with reference to FIG. 4, the coded video data is entropy coded and the index of the motion vector predictor is coded with a predefined number of bits for a given block. The received coded video data is entropy decoded by module 62. The residual data is then inverse quantized by module 63 and then an inverse transform is applied by module 64 to obtain pixel values.
[0081] Mode data indicating the coding mode is also entropy decoded, and based on the mode, INTRA-type or INTER-type decoding is performed on the coded block of image data.
[0082] For INTRA mode, the INTRA predictor is determined by the intra inverse prediction module 65 based on the intra prediction mode specified in the bitstream.
[0083] If the mode is INTER, motion prediction information is extracted from the bitstream to find the reference region used by the encoder. The motion prediction information consists of a reference frame index and a motion vector residual. The motion vector predictor is added to the motion vector residual to obtain a motion vector by the motion vector decoding module 70.
[0084] A motion vector decoding module 70 applies motion vector decoding for each current block coded by motion prediction. Once the motion vector predictor index is obtained, for the current block, the actual value of the motion vector associated with the current block may be decoded and used to apply inverse motion compensation by module 66. The reference image portion indicated by the decoded motion vector is extracted from reference image 68 and inverse motion compensation 66 is applied. Motion vector field data 71 is updated with the decoded motion vector for use in inverse prediction of subsequent decoded motion vectors.
[0085] Finally, the decoded blocks are obtained. Post-filtering is applied by a post-filtering module 67. A decoded video signal 69 is finally provided by the decoder 60.
[0086] FIG. 6 shows the structure of a bitstream in an exemplary coding system VVC, as described in JVET_P2001-VE.
[0087] The bitstream 61 from the VVC coding system consists of an ordered sequence of syntax elements and coded data. The syntax elements and coded data are arranged in Network Abstraction Layer (NAL) units 601-608. There are different NAL unit types. The Network Abstraction Layer provides the ability to encapsulate the bitstream into different protocols, such as RTP / IP, Real Time Protocol / Internet Protocol, ISO Base Media File Format, etc. The Network Abstraction Layer also provides a framework for packet loss resiliency.
[0088] The NAL units are divided into Video Coding Layer (VCL) NAL units and non-VCL NAL units. The VCL NAL units contain the actual encoded video data. The non-VCL NAL units contain additional information, which may be parameters required for decoding the encoded video data or supplementary data that may improve the usability of the decoded video data. The NAL units 606 correspond to slices and constitute the VCL NAL units of the bitstream.
[0089] Different NAL units 601-605 correspond to different parameter sets, and these NAL units are non-VCL NAL units. The decoder parameter set (DPS) NAL unit 301 contains parameters that are constant for a given decoding process. The video parameter set (VPS) NAL unit 602 contains parameters defined for the entire video, i.e., the entire bitstream. The DPS NAL unit may define parameters that are more static than the parameters in the VPS. In other words, the parameters of the DPS change less frequently than the parameters of the VPS.
[0090] The sequence parameter set (SPS) NAL unit 603 contains parameters defined for a video sequence. In particular, the SPS NAL unit can define the subpicture layout and associated parameters of a video sequence. The parameters associated with each subpicture specify the coding constraints that apply to the subpicture. In particular, it includes a flag that indicates that temporal prediction between subpictures is restricted to data coming from the same subpicture. Another flag can enable or disable a loop filter that crosses subpicture boundaries.
[0091] Picture Parameter Set (PPS) NAL unit 604, PPS contains parameters defined for a picture or group of pictures. Adaptive Parameter Set (APS) NAL unit 605 contains parameters for loop filters, typically an Adaptive Loop Filter (ALF) or reshaper model (or Luma mapping with chroma scaling (LMCS) model) or scaling matrices used at slice level.
[0092] The syntax of the PPS as proposed in the current version of VVC includes syntax elements that specify the size of the picture in luma samples, and the division of each picture into tiles and slices.
[0093] The PPS contains syntax elements that allow to determine the location of slices within a frame. Since a subpicture forms a rectangular region within a frame, it is possible to determine from the parameter set NAL unit the set of slices, parts of tiles, or tiles that belong to a subpicture. The PPS as an APS has an ID mechanism to limit the amount of identical PPSs transmitted.
[0094] The main difference between the PPS and the Picture Header is that the PPS is transmitted, and generally, for a group of pictures, as compared to the PH, which is transmitted systematically for each picture. Thus, in comparison to the PH, the PPS contains parameters that may be constant for several pictures.
[0095] The bitstream may also contain Supplemental Enhancement Information (SEI) NAL units (not shown in FIG. 6). The periodicity with which these parameter sets occur within the bitstream is variable. A VPS defined for the entire bitstream may occur only once in the bitstream. Conversely, an APS defined for a slice may occur once for each slice in each picture. In practice, different slices may rely on the same APS, and thus, in general, there are fewer APSs than slices in each picture. In particular, the APSs are defined in the picture header. However, the ALF APSs may be refined in the slice header.
[0096] An Access Unit Delimiter (AUD) NAL unit 607 separates two access units. An access unit is a set of NAL units that can comprise one or more coded pictures with the same decoding timestamp. This optional NAL unit contains only one syntax element in the current VVC specification: pic_type. This syntax element indicates the slice_type values of all slices of coded pictures in the AU. If pic_type is set equal to 0, the AU contains only intra slices. If it is equal to 1, it contains P and I slices. If it is equal to 2, it contains B, P or intra slices. This NAL unit contains only one syntax element of pic-type.
[0097] Table 1 Syntax AUD JPEG0007649365000001.jpg26126
[0098] In JVET-P2001-vE, pic_type is defined as follows: "pic_type indicates that the slice_type values for all slices of the coded picture in the AU that contains the AU delimiter NAL unit are members of the set listed in Table 2 for a given value of pic_type. Values of pic_type shall be equal to 0, 1, or 2 in bitstreams that conform to this version of this specification. Other values of pic_type are reserved for future use by ITU-T |ISO / IEC. Decoders that conform to this version of this specification ignore reserved values of pic_type."
[0099] Table 2 Interpretation of pic_type JPEG0007649365000002.jpg2788
[0100] The PH NAL unit 608 is a picture header NAL unit that groups parameters common to a set of slices of one coded picture. A picture may reference one or more APSs to indicate the AFL parameters, reshaper models, and scaling matrices used by the slices of the picture.
[0101] Each of the VCL NAL units 606 contains a slice. A slice can correspond to an entire picture or a subpicture, a single tile, or multiple tiles, or a portion of a tile. For example, the slice in Figure 3 contains several tiles 620. A slice consists of a slice header 610 and a RAW Byte Sequence payload RBSP 611 that contains coded pixel data coded as coding blocks 640.
[0102] The syntax of the PPS as proposed in the current version of VVC includes syntax elements that specify the size of the picture in luma samples, and the division of each picture into tiles and slices.
[0103] The PPS contains syntax elements that allow determining the location of slices within a frame. Since a subpicture forms a rectangular region within a frame, it is possible to determine from the parameter set NAL unit the set of slices, portions of tiles, or tiles that belong to a subpicture.
[0104] NAL unit slice The NAL unit slice layer includes a slice header and slice data, as shown in Table 3.
[0105] Table 3 Slice Layer Syntax JPEG0007649365000003.jpg32125
[0106] APS The adaptation parameter set (APS) NAL unit 605 is defined in Table 4, which shows syntax elements. As shown in Table 4, there are three types of APS that can be specified with the APS_params_type syntax element: ALF_AP: For ALF parameters LMCS parameter LMCS_APS SCALING_APS in Scaling list relative parameters Table 4. Syntax of adaptation parameter set JPEG0007649365000004.jpg89125These three types of APS parameters are explained in turn below:
[0107] ALF APS The ALF parameters are described in the Adaptive Loop Filter Data syntax element (Table 5). First, two flags are declared to specify whether an ALF filter is sent for luma and / or chroma. If the luma filter flag is enabled, another flag is decoded to know if the clip value is signaled (alf_Luma_clip_flag). Then, the number of filters signaled is decoded using the alf_luma_num_filters_signalled_minus1 syntax element. If necessary, the syntax element "ALF_Luma_coeff_delta_idx", which represents the ALF coefficient delta, is decoded for each enabled filter. Then, the absolute value and sign are decoded for each coefficient of each filter.
[0108] If alf_luma_clip_flag is enabled, the clip index for each coefficient of each enabled filter is decoded. Similarly, the ALF chroma coefficients are decoded if necessary.
[0109] Table 5. Adaptive Loop Filter Data Syntax JPEG0007649365000005.jpg178125JPEG0007649365000006.jpg73123
[0110] LMCS syntax elements for both luma mapping and chroma scaling Table 6 below lists all LMCS syntax elements coded in the adaptation parameter set (APS) syntax structure when the APS_params_type parameter is set to 1 (LMCS_APS). Up to four LMCS APS can be used in a coded video sequence, but only a single LMCS APS can be used for a given picture.
[0111] These parameters are used to construct the forward and backward mapping functions for luma and the scaling function for chroma.
[0112] Table 6. Luma mapping using chroma scaling data syntax JPEG0007649365000007.jpg77123
[0113] Scaling List APS The scaling list provides the possibility to update the quantization matrix used for quantization. In VVC, this scaling matrix is s in the APS as described in the Scaling List Data syntax element (Table 7). This syntax specifies whether to use the scaling matrix for the LFNST (Low Frequency Non-Separable Transform) tool based on the flag scaling_matrix_for_lfnst_disabled_flag. Then the syntax elements required to build the scaling matrix are decoded (scaling_list_copy_mode_flag, scaling_list_pred_mode_flag, scaling_list_pred_id_delta, scaling_list_dc_coef, scaling_list_delta_coef).
[0114] Table 7 Scaling List Data Syntax JPEG0007649365000008.jpg182127
[0115] Picture Header The picture header is transmitted at the beginning of each picture. The picture header table syntax currently contains 82 syntax elements and about 60 test conditions or loops. This is much larger than the previous header in previous drafts of the standard. A complete description of all these parameters can be found in JVET_P2001-VE. Table 8 shows these parameters in the current picture header decoding syntax. In this simplified table version, some syntax elements have been grouped together for ease of reading.
[0116] The relevant syntax elements that can be decoded are: Usage of this picture, whether it is a reference frame Output Frame · Usage of subpictures if necessary Reference image list if necessary Color planes as needed Updating partitions when override flag is enabled Delta QP parameters if necessary Movement information parameters if necessary ALF parameters if necessary SAO parameters as required Quantification parameters as required LMCS parameters if necessary Scaling list parameters if necessary Picture header extension if necessary
[0117] The first three fixed length flags are non_reference_picture_flag, gdr_pic_flag, and no_output_of_prior_pics_flag, which give information related to picture characteristics in the bitstream.
[0118] Next, if gdr_pic_flag is enabled, recovery_poc_cnt is decoded.
[0119] The PPS parameters “PS_parameters()” sets the PPS ID and other information as required, and it contains three syntax elements: ph_pic_parameter_set_id ph_poc_msb_present_flag poc_msb_val
[0120] The subpicture parameter Subpic_parameter() is valid if it is enabled in the SPS and if subpicture id signaling is disabled. It also contains some information about the virtual border. Eight syntax elements are defined for the subpicture parameters: · ph_subpic_id_signalling_present_flag ph_subpic_id_len_minus1 ph_subpic_id · ph_loop_filter_across_virtual_boundaries_disabled_present_flag · ph_num_ver_virtual_boundaries · ph_virtual_boundaries_pos_x · ph_num_hor_virtual_boundaries · ph_virtual_boundaries_pos_y
[0121] Next, if the sequence contains separate colour planes and is followed by pic_output_flag, the colour plane id "colour_plane_id" is decoded.
[0122] Next, the reference picture list parameters are decoded, and “reference_picture_list_parameters()” contains the following syntax elements: pic_rpl_present_flag pic_rpl_sps_flag pic_rpl_idx pic_poc_lsb_lt · pic_delta_poc_msb_present_flag pic_delta_poc_msb_cycle_lt
[0123] If necessary, another group of syntax elements related to the reference picture list structure "ref_pic_list_struct", which contains eight other syntax elements, can also be decoded.
[0124] The set of partitioning parameters “partitioning_parameters()”, decoded as necessary, contains the following 13 syntax elements: · partition_constraints_override_flag · pic_log2_diff_min_qt_min_cb_intra_slice_luma · pic_log2_diff_min_qt_min_cb_inter_slice · pic_max_mtt_hierarchy_depth_inter_slice · pic_max_mtt_hierarchy_depth_intra_slice_luma · pic_log2_diff_max_bt_min_qt_intra_slice_luma · pic_log2_diff_max_tt_min_qt_intra_slice_luma · pic_log2_diff_max_bt_min_qt_inter_slice · pic_log2_diff_max_tt_min_qt_inter_slice · pic_log2_diff_min_qt_min_cb_intra_slice_chroma · pic_max_mtt_hierarchy_depth_intra_slice_chroma · pic_log2_diff_max_bt_min_qt_intra_slice_chroma · pic_log2_diff_max_tt_min_qt_intra_slice_chroma
[0125] After these partition parameters, four delta QP syntax elements “Delta_QP_parameters()” may be decoded as required: · pic_cu_qp_delta_subdiv_intra_slice · pic_cu_qp_delta_subdiv_inter_slice · pic_cu_chroma_qp_offset_subdiv_intra_slice · pic_cu_chroma_qp_offset_subdiv_inter_slice
[0126] The pic_joint_cbcr_sign_flag is decoded if necessary and is followed by a set of three SAO syntax elements, “SAO_parameters()”: · pic_sao_enabled_present_flag pic_sao_luma_enabled_flag · pic_sao_chroma_enabled_flag
[0127] Next, if ALF is enabled at the SPS level, a set of ALF APS id syntax elements is decoded. First, decode pic_alf_enabled_present_flag to determine whether to decode pic_alf_enabled_flag. If pic_ALF_enabled_flag is enabled, ALF is enabled for all slices of the current picture.
[0128] If ALF is enabled, the amount of ALF APS ids for luma is decoded using the pic_num_alf_aps_ids_luma syntax element. For each APS id, the luma APS id value is decoded to “pic_alf_aps_id_Luma”.
[0129] For chrominance syntax elements, pic_alf_chroma_idc is decoded to determine if ALF is enabled for chroma, Cr only, or Cb only. If enabled, the value of the APS Id for chroma is decoded using the pic_alf_aps_id_Chroma syntax element.
[0130] After the ALF APS id parameter is set, the quantization parameters in the picture header are decoded as needed: pic_dep_quant_enabled_flag · sign_data_hiding_enabled_flag
[0131] The set of three deblocking filter syntax elements “deblocking_filter_parameters()” is decoded as needed: · pic_deblocking_filter_override_present_flag · pic_deblocking_filter_override_flag · pic_deblocking_filter_disabled_flag pic_beta_offset_div2 pic_tc_offset_div2
[0132] The LMCS APS ID syntax element set is then decoded if LMCS is enabled in the SPS. First, pic_lmcs_enabled_flag is decoded to determine if LMCS is enabled for the current picture. If LMCS is enabled, its Id value is the decoded pic_lmcs_aps_Id. For chroma, only pic_chroma_residual_scale_flag is decoded to enable or disable the chroma method.
[0133] A set of scaling list APS ID is decoded if the scaling list is enabled at the SPS level. The pic_scaling_list_present_flag is decoded to determine if the scaling matrix is valid for the current picture. Then the value of the APS ID, pic_scaling_list_APS_ID, is decoded. Finally, the picture header extension syntax elements are decoded as necessary.
[0134] Table 8 Partial Picture Header JPEG0007649365000009.jpg175122JPEG0007649365000010.jpg155124
[0135] Slice Header A slice header is transmitted at the beginning of each slice. The slice header table syntax currently contains 57 syntax elements, which is significantly larger than previous slice headers in previous versions of the standard. A complete description of all slice header parameters can be found in JVET_P2001-VE. Table 9 shows these parameters in the current picture header decode syntax. In this simplified table version, some syntax elements have been grouped together to make the table easier to read.
[0136] Table 9 Partial Slice Header JPEG0007649365000011.jpg180124JPEG0007649365000012.jpg149123
[0137] First, slice_pic_order_cnt_lsb is decoded to determine the POC of the current slice. Next, slice_subpic_id is decoded, if necessary, to determine the subpicture id of the current slice. Next, slice_address is decoded to determine the address of the current slice. Next, if the number of tiles in the current picture is greater than 1, num_tiles_in_slice_minus1 is decoded. Then the slice_type is decoded.
[0138] A set of reference picture list parameters is decoded. These are similar to the parameters in the picture header.
[0139] If the slice type is not intra, and if necessary, cabac_init_flag and / or collocated_from_l0_flag and collocated_ref_idx are decoded. These data relate to CABAC encoding and motion vector collocated.
[0140] Similarly, if the slice type is not intra, the parameters of the weighted prediction pred_weight_table() are decoded.
[0141] In slice_quantization_parameters(), slice_qp_delta is intentionally decoded before other parameters of QP offset if required: slice_cb_qp_offset, slice_cr_qp_offset, slice_joint_cbcr_qp_offset, cu_chroma_qp_offset_enabled_flag.
[0142] If signaled in the picture header, valid flags for SAO are decoded in both luma and chroma: slice_sao_luma_flag, slice_sao_chroma_flag.
[0143] Next, the APS ALF ID is decoded if necessary, and the same data restrictions as for the picture header are applied. Then the deblocking filter parameters are decoded before any other data (slice_deblocking_filter_parameters()).
[0144] Similar to the picture header, the ALF APS ID is set at the end of the slice header.
[0145] APS in picture header As shown in Table 8, the APS ID information for the three tools ALF, LMCS and scaling list is at the end of the picture header syntax element.
[0146] Streaming Applications Some streaming applications extract only certain parts of the bitstream. These extractions may be spatial (as sub-pictures) or temporal (sub-parts of a video sequence). These extracted parts can then be merged into other bitstreams. Some others reduce the frame rate by extracting only a few frames. In general, the main goal of these streaming applications is to provide the maximum quality to the end user using the maximum of the allowed bandwidth.
[0147] In VVC, APS ID numbering is limited for frame rate reduction so that new APS id numbers for a frame cannot be used for frames at higher levels in the temporal hierarchy. However, streaming applications that extract portions of the bitstream need to keep track of APS IDs to determine which APSs should be retained for a sub-portion of the bitstream, since frames (as IRAPs) do not reset the APS ID numbering.
[0148] LMCS (Luma Mapping with Chroma Scaling) The Luma Mapping with Chroma scaling technique is a sample value transformation method that is applied to blocks before applying a loop filter in a video decoder such as VVC.
[0149] LMCS can be split into two sub-tools: the first applies to luma blocks and the second to chroma blocks, as explained below. 1) The first sub-tool is in-loop mapping of the luma component based on an adaptive piecewise linear model. The in-loop mapping of the luma component adjusts the dynamic range of the input signal by redistributing codewords across the dynamic range to improve compression efficiency. Luma mapping utilizes a forward mapping function to the "mapped domain" and a corresponding inverse mapping function to return to the "input domain". 2) The second sub-tool is related to the chroma components where luma-dependent chroma residual scaling is applied. The chroma residual scaling is designed to compensate the interaction of the luma signal with its corresponding chroma signal. The chroma residual scaling depends on the average value of the top and / or left reconstructed neighboring luma samples of the current block.
[0150] Like most other tools in video coders such as VVC, LMCS can be enabled / disabled at the sequence level using the SPS flag. Whether chroma residual scaling is enabled or not is also signaled at the slice level. If luma mapping is enabled, an additional flag is signaled to indicate whether luma-dependent chroma residual scaling is enabled or not. If luma mapping is not used, luma-dependent chroma residual scaling is completely disabled. In addition, luma-dependent chroma residual scaling is always disabled for chroma blocks whose size is less than or equal to 4.
[0151] FIG. 7 illustrates the principle of LMCS as described above for the luma mapping sub-tool. The hatched blocks in FIG. 7 are new LMCS functional blocks that contain the forward and backward mapping of the luma signal. It is important to note that when using LMCS, several decoding operations are applied in the "mapped domain". These operations are represented by the dashed blocks in this FIG. 7. Typically, they correspond to inverse quantization, inverse transform, luma prediction, and the reconstruction step of adding the luma prediction to the luma residual. Conversely, the solid blocks in FIG. 7 indicate where the decoding process is applied in the original (i.e., unmapped) domain, which includes deblocking, loop filtering such as ALF and SAO, motion compensated prediction, and storage of the decoded picture (DPB) as a reference picture.
[0152] FIG. 8 shows a diagram similar to FIG. 7, but this time for the chroma scaling subtool of the LMCS tool. The hatched blocks in FIG. 8 are new LMCS functional blocks that contain the luma-dependent chroma scaling process. However, there are some important differences in chroma compared to the luma case. Here, only the inverse quantization and inverse transform, represented by the dashed blocks, are performed in the "mapped domain" for the chroma samples. The intra-chroma prediction, motion compensation, loop filter and other steps are performed in the original domain. As shown in FIG. 8, there is only the scaling process, and there is no forward and backward processing on the luma mapping.
[0153] Luma mapping using a piece wise linear model The luma mapping sub-tool uses a piecewise linear model, which means that the input signal dynamic range is separated into 16 equal sub-ranges, and for each sub-range, its linear mapping parameters are expressed using the number of codewords assigned to that range.
[0154] Luma mapping semantics The syntax element lmcs_min_bin_idx specifies the minimum bin index used in the luma mapping with chroma scaling (LMCS) construction process. The value of lmcs_min_bin_idx must be in the range of 0 to 15.
[0155] The syntax element lmcs_delta_max_bin_idx specifies the delta value between 15 and the maximum bin index, LmcsMaxBinIdx, used in luma mapping in the chroma scaling construction process. The value of lmcs_delta_max_bin_idx must be in the range of 0 to 15. The value of LmcsMaxBinIdx is set to 15-lmcs_delta_max_bin_idx. The value of LmcsMaxBinIdx must be greater than or equal to lmcs_min_bin_idx.
[0156] The syntax element lmcs_delta_cw_prec_minus1plus1 specifies the number of bits used to represent the syntax element lmcs_delta_abs_cw[i]. The syntax element lmcs_delta_abs_cw[i] specifies the absolute delta codeword value for the i-th bin. The syntax element lmcs_delta_sign_cw_flag[i] specifies the sign of the variable lmcsDeltaCW[i]. If lmcs_delta_sign_cw_flag[i] is not present, it is inferred to be equal to 0.
[0157] LMCS intermediate variable calculations for luma mapping To apply the forward and backward luma mapping processes, several intermediate variables and data arrays are needed. First, the variable OrgCW is derived as follows: OrgCW=(1< <BitDepth) / 16 Next, the variable lmcsDeltaCW[i] is calculated for i = lmcs_min_bin_idx to LmcsMaxBinIdx as follows: lmcsDeltaCW[i]=(1-2 * lmcs_delta_sign_cw_flag[i])* lmcs_delta_abs_cw[i] The new variable lmcsCW[i] is derived as follows: - For i=0.. lmcs_min_bin_index-1, set lmcsCW[i] to 0. - For i = lmcs_min_bin_idx..LmcsMAxBinIdx the following applies: lmcsCW[i] = OrgCW + lmcsDeltaCW[i] The value of lmcsCW[i] is in the range of (OrgCW>>3) to (OrgCW<<3-1). - For i = LmcsMaxBinIdx+1 .. 15, set lmcsCW[i] equal to 0. The variable InputPivot[i] (i=0..16) is derived as follows: InputPivot[i] = i * OrgCW
[0158] The variables LmcsPivot[i], for i = 0..16, and the variables ScaleCoeff[i] and InvScaleCoeff[i], for i = 0..15, are calculated as follows: LmcsPivot[0] = 0; for(i=0; i <= 15; i++) LmcsPivot[i + 1]= LmcsPivot[i]+ lmcsCW[i] ScaleCoeff[i]=(lmcsCW[i]*(1 << 11)+(1 << (Log2(OrgCW)- 1))) >> (Log2(OrgCW)) if (lmcsCW[i]==0) InvScaleCoeff[i] = 0 else InvScaleCoeff[i]= OrgCW *(1 << 11) / lmcsCW[i]
[0159] Forward Luma Mapping As shown in FIG. 7, when LMCS is applied to luma, a luma remapped sample, called predMapSamples[i][j], is obtained from the predicted sample predSamples[i][j]. predMapSamples[i][j] is calculated as follows: First, at position (i, j), calculate the index idxY from the predicted samples predSamples[i][j]. idxY = preSamples[i][j] >> Log2(OrgCW) Next, using the intermediate variables idxY, LmcsPivot[idxY] and InputPivot[idxY] from section 0, derive predMapSamples[i][j] as follows: predMapSamples[i][j] = LmcsPivot[idxY] +(ScaleCoeff[idxY]*(predSamples[i][j]- InputPivot[idxY])+(1 << 10))>> 11
[0160] Luma reconstruction samples The reconstruction process is derived from predicted luma samples predMapSample[i][j] and residual luma samples resiSamples[i][j]. The reconstructed luma picture sample recSamples[i][j] is simply obtained by adding predMapSamples[i][j] to resiSamples[i][j] as follows: recSamples[i][j]= Clip1(predMapSamples[i][j]+ resiSamples[i][j]]) In the above relationship, the Clip1 function is a clipping function to ensure that the reconstructed sample is within the range of 0 to 1<<BitDepth-1.
[0161] Inverse Luma mapping When applying the inverse luma mapping according to FIG. 7, the following operations are applied to each sample recSample[i][j] of the current block being processed: First, calculate the index idxY from the reconstructed sample recSamples[i][j] at position (i,j). idxY = recSamples[i][j] >> Log2(OrgCW) Derive the inverse map sample invLumaSample[i][j] based on the following: invLumaSample[i][j]= InputPivot[idxYInv] + (InvScaleCoeff[idxYInv] * (recSample[i][j]- LmcsPivot[idxYInv])+(1 << 10)) >> 11 Next, perform a clipping operation to obtain the final sample: finalSample[i][j] = Clip1(invLumaSample[i][j])
[0162] Chroma scaling LMCS semantics for chroma scaling The syntax element lmcs_delta_abs_crs in Table 6 specifies the absolute codeword value of the variable lmcsDeltaCrs. The value of lmcs_delta_abs_crs is in the range of 0 and 7. If it does not exist, lmcs_delta_abs_crs is presumed to be equal to 0. The syntax element lmcs_delta_sign_crs_flag specifies the sign of the variable lmcsDeltaCrs. If not present, lmcs_delta_sign_crs_flag is inferred to be equal to 0.
[0163] LMCS intermediate variable calculation for chroma scaling To apply the chroma scaling process, several intermediate variables are needed. The variable lmcsDeltaCrs is derived as follows: lmcsDeltaCrs =(1 - 2 * lmcs_delta_sign_crs_flag) * lmcs_delta_abs_crs The variable ChromaScaleCoeff[i], for i=0..15, is derived as follows: if (lmcsCW[i]==0) ChromaScaleCoeff[i]=(1 << 11) else ChromaScaleCoeff[i]= OrgCW * (1<< 11) / (lmcsCW[i] + lmcsDeltaCrs)
[0164] Chroma Scaling Process In a first step, a variable invAvgLuma is derived to calculate the average luma value of the reconstructed luma samples around the current corresponding chroma block. The average luma is calculated from the top-left luma block surrounding the corresponding chroma block. If no samples are available, the variable invAvgLuma is set to: invAvgLuma = 1 << (BitDepth -1)
[0165] Based on the intermediate array LmcsPivot[] of section 0, the variable idxYInv is derived as follows: (For idxYInv = lmcs_min_bin_idx; idxYInv <= LmcsMaxBinIdx; idxYInv++){ if(invAvgLuma < LmcsPivot [idxYInv + 1 ]) break } IdxYInv = Min(idxYInv, 15) The variable varScale is derived as follows: varScale = ChromaScaleCoeff[idxYInv]
[0166] When the transform is applied to the current chroma block, the reconstructed chroma picture sample array recSamples is derived as follows: recSamples[i][j]= Clip1(predSamples[i][j] + Sign(resiSamples[i][j])*((Abs(resiSamples[i][j])* varScale +(1 << 10)) >> 11)) If no transformations have been applied to the current block, the following apply: recSamples[i][j]= Clip1(predSamples[i][j])
[0167] Encoder Considerations The basic principle of the LMCS encoder is to first assign more codewords to those dynamic range segments with codewords lower than the average variance. In this alternative formulation, the main goal of LMCS is to assign fewer codewords to those dynamic range segments with codewords higher than the average variance. In this way, smooth areas of the picture are coded with more codewords than the average and vice versa. All parameters of the LMCS tools (see Table 6) stored in the APS are determined on the encoder side. The LMCS encoder algorithm is based on the evaluation of the local luma variance and optimizes the decision of the LMCS parameters according to the basic principle mentioned above. Then, the optimization is performed to obtain the best PSNR metric for the final reconstructed samples of a given block.
[0168] As described below, parsing complexity can be reduced by placing the APS ID information at the beginning of the slice / picture header, allowing syntax elements related to the APS ID to be parsed before syntax elements related to decoding tools.
[0169] Picture Header The following description provides details or alternatives to the following table of syntax elements for the picture header. Table 10 shows an example of a picture header modification where the APS ID information for LMCS, ALF, and scaling list is set closer to the beginning of the picture header to solve the parsing problems of the prior art (see Table 8 above). This change is indicated by strike-through and underlined text. With this table of syntax elements, tracking of APS IDs becomes less complicated.
[0170] Table 10 Partial Picture Header Showing Modification of APS ID Information JPEG0007649365000013.jpg179126JPEG0007649365000014.jpg183123JPEG0007649365000015.jpg114123
[0171] APS ID-related syntax elements may contain one or more of the following: APS ID LMCS. APS ID Scaling List. APS scaling list containing information to enable the scaling matrix for the LNST method APS ID ALF List. APS ALF list with information on signaling clipping values
[0172] In one example, the APS ID related syntax elements are placed at or near the beginning of the picture header.
[0173] The advantage of this feature is that it reduces the complexity of streaming applications that need to track APS ID usage to remove non-useful APS NAL units.
[0174] As mentioned above, "beginning" does not necessarily mean "beginning", since some syntax elements precede APS ID related syntax elements. These are explained in turn below.
[0175] The set of APS ID-related syntax elements is configured after one or more of the following: Parse Tool A syntax element useful for streaming applications that need to parse a bitstream in order to cut or split or extract parts of a video sequence without parameters. · A syntax element (e.g., non_reference_picture_flag) that indicates that the current picture is never used as a reference picture, which, when equal to 1, indicates that the picture is never used as a reference picture. Since this information is useful for many streaming applications, it is advisable to set this flag before any set of APS ID LMCS syntax elements. o A syntax element that indicates that the current picture is a GDR picture (e.g., the GDR_pic_flag syntax) equal to 1 indicates that the current picture is a GDR picture. This type of picture means that the bitstream is independent of the previous picture, which is important information for many streaming applications. For the same reason, the APS ID LMCS syntax element set must follow the recovery_poc_cnt syntax element, which is decoded if gdr_pic_flag is enabled. · Syntax elements (e.g. no_output_of_prior_pics_flag) that indicate changes in previously decoded pictures in the Decoded Picture Buffer (DBP) that affect the DBP. This is important information for many applications. · ph_pic_parameter_set_id and / or other syntax elements related to PPS information. In fact, the PPS id is required for many applications. · Syntax elements related to sub-picture information. In fact, these information are important for bitstream extraction for some streaming applications. · Picture type information transmitted in the picture header. In fact, the picture type is important information for many applications.
[0176] In a particularly advantageous embodiment, the set of APS ID related syntax elements is set after the syntax elements at the beginning of the picture header that have a fixed length codeword without any condition for decoding, which corresponds to a syntax element with descriptor u(N) in the table of syntax elements, where N is an integer value.
[0177] Compared to the current VVC specification, this corresponds to non_reference_picture_flag, gdr_pic_flag, and no_output_of_prior_pics_flag.
[0178] The advantage of this is for streaming applications which can easily bypass these first codewords since the number of bits is always the same at the beginning of the picture header and goes directly to the useful information of the corresponding application, so the decoder can parse the APS ID related syntax elements directly from the header since they are always in the same bit position in the header.
[0179] In a variant that reduces parsing complexity, the set of APS ID-related syntax elements is set after the syntax elements at the beginning of the picture header that do not require one or more values from another header, and parsing of such syntax elements does not require other variables, reducing parsing complexity.
[0180] In one variation, the APS ID scaling list syntax element set is at the beginning of the picture header.
[0181] The advantage of this variant is that it reduces the complexity of streaming applications that need to keep track of APS ID usage to remove non-useful APS NAL units.
[0182] It should be understood that the above types of APS ID related syntax elements can be treated individually or in combination. A non-exhaustive list of particularly advantageous combinations is described below. The APS ID LMCS syntax element set and the APS ID scaling list syntax element set are placed at or near the beginning of the picture header, optionally following any information useful to streaming applications. The APS ID LMCS syntax element set and the APS ID ALF syntax element set are placed at the beginning of the picture header, optionally following information useful for streaming applications. The APS ID LMCS syntax element set, the APS ID scaling list syntax element set, and the APS ID ALF syntax element set are placed at or near the beginning of the picture header, optionally following any information useful to streaming applications.
[0183] In one embodiment, the APS ID related syntax elements (APS LMCS, APS Scaling List, and / or APS ALF) are set before the low level tool parameters.
[0184] This results in a reduction in complexity for some streaming applications that need to keep track of a different APS ID for each picture. Indeed, the information related to the low-level tools is necessary for parsing and decoding slice data, but is not necessary for such applications that only extract the bitstream without decoding. Examples of low-level tools are provided below: A set of deblocking filter parameters; these parameters are for the deblocking filter that is only needed for slice data decoding. A set of quantization parameters; these parameters are needed for parsing and decoding the slice data. A set of SAO parameters; these parameters are required for parsing and decoding the slice data. · pic_joint_cbcr_sign_flag;These parameters are required for parsing and decoding the slice data. A set of motion parameters; these parameters are necessary for parsing and decoding the slice data. A set of QP offset parameters; these parameters are necessary for parsing and decoding the slice data. A set of partitioning parameters; these parameters are required for parsing and decoding the slice data. A set of reference picture list parameters; these parameters are necessary for parsing and decoding the slice data. · pic_output_fl flags; these parameters are required for decoding the slice data. · colour_plane_id flag; these parameters are needed to parse and decode the slice data.
[0185] It should be understood that the above types of APS ID related syntax elements can be treated individually or in combination. A non-exhaustive list of particularly advantageous combinations is described below. The APS ID LMCS syntax element set and the APS ID scaling list syntax element set are set before the low level tool syntax elements. The APS ID LMCS syntax element set and the APS ID ALF syntax element set are set before the low level tool syntax elements. The APS ID LMCS syntax element set, the APS ID scaling list syntax element set, and the APS ID ALF syntax element set are set before the low level tool syntax elements.
[0186] Resynchronization picture There are some resynchronization frames or slices in the bitstream. These frames allow the bitstream to be read without considering previous decoding information. For example, a clean random access picture (CRA picture) does not refer to any picture other than itself for inter prediction in its decoding process. This means that slices of this picture are indicated as intra or IBC. In VVC, a CRA picture is an IRAP (Intra Random Access Point) picture with each VCL NAL unit having nal unit_type equal to CRA_NUT.
[0187] In VVC, these resynchronization frames can be IRAP or GDR pictures.
[0188] However, IRAP or GDR pictures, or IRAP slices for some configurations, may have APS IDs in their picture headers resulting from previously decoded APSs, so it is necessary to keep track of the APS IDs at the actual random access points, or when the bitstream is split.
[0189] One way to improve this problem is that when decoding an IRAP or GDR picture, all APS IDs are reset and / or no APS is allowed to be derived from another decoded APS. The APS may be for an LMCS or a scaling list or an ALF. Thus, the decoder determines whether the picture is relevant to the resynchronization process, and if so, the decoding includes resetting the APS ID.
[0190] In a variant, if one slice in a picture is IRAP, all APS ODs are reset.
[0191] Resetting the APS ID means that the decoder considers all previous APSs to be no longer valid and, as a result, the APS ID values do not refer to previous APSs.
[0192] This resynchronization process is particularly advantageous when combined with the syntax structure above, as the APS ID information can be more easily parsed and decoded, allowing for fast and efficient resynchronization when required.
[0193] APS ID related information in slice header The following description concerns a modification of the slice header syntax elements table, in which the ALF APS ID information is set near the beginning of the slice header to solve the parsing problem of the invention described above. The modified slice header in Table 11 is based on the current slice header description of syntax elements (see Table 9 above) with the changes indicated by strikethrough and underline.
[0194] Table 11 Partial slice header showing modifications JPEG0007649365000016.jpg170124JPEG0007649365000017.jpg186123JPEG0007649365000018.jpg81125
[0195] APS ID ALF at the beginning of the slice header The APS ID ALF syntax element set is located at or near the beginning of the slice header, as shown in Table 11. In particular, the ALF APS includes at least syntax elements related to signaling clipping values.
[0196] This reduces the complexity of streaming applications that need to track APS ID usage to remove non-useful APS NAL units.
[0197] A set of APS ID ALF syntax elements can be followed by syntax elements that are useful for streaming applications that require extracting portions of a video sequence without parsing, cutting, splitting, or parsing tool parameters. An example of such a syntax element is shown below: The slice_pic_order_cnt_lsb syntax element indicates the POC of the current slice. This information is useful for many streaming applications, so it is preferable to set this flag before any APS ID ALF syntax element is set. · slice_subpic_ID syntax element indicating the subpicture ID of the current slice. This information is useful for many streaming applications, so it is advisable to set this flag before any APS ID ALF syntax element is set. A slice_address syntax element indicating the address of the slice. This information is useful for many streaming applications, so it is advisable to set this flag before setting the APS ID ALF syntax element. · The num_tiles_in_slice_minus syntax element. It is advisable to set this flag before any set of APS ID ALF syntax elements, as this information is useful for many streaming applications. A slice_type element indicating the type of the current slice. This information is useful for many streaming applications, so it is advisable to set this flag before any set of APS ID ALF syntax elements.
[0198] In a further variation, when the ALF APSS includes at least syntax elements related to signaling clipping values, the APS ID ALF syntax element set before the low level tool parameters in the slice header.
[0199] This results in reduced complexity for some streaming applications that need to keep track of different APS ALF APS IDs for each picture. Indeed, the relevant information is necessary for low-level tools to parse and decode slice data, but is not necessary for such applications that only extract the bitstream without decoding. An example of such a syntax element is shown below: A set of reference picture list parameters in the slice header: in fact, these parameters are required for slice data decoding. The CABAC initialization flag set in the slice header. In fact, this flag is only for decoding slice data. A set of collocated prediction parameters in the slice header. These parameters are in fact required for the slice data decoding. A set of weighted prediction parameters in the slice header. These parameters are in fact required for the slice data decoding. A set of quantization parameter update parameters in the slice header. These parameters are indeed required for slice data decoding. The SAO enabled flags in the slice header are set. In fact, these parameters are required for slice data decoding.
[0200] It should be understood that the above features may be provided in combination with one another. As with the particular combinations discussed above, doing so may provide certain advantages suited to a particular implementation, such as increased flexibility, or specification of a "worst case" example. In other instances, complexity requirements may have a higher priority than rate reduction (for example), and such features may be implemented individually.
[0201] Implementation of the invention Fig. 9 shows a system 191 195 comprising at least one of the encoder 150 or the decoder 100 and a communication network 199 according to an embodiment of the present invention. According to an embodiment, the system 195 is for processing and providing content (e.g. video and audio content for displaying / outputting or streaming video / audio content) to a user who can access the decoder 100, for example, via a user interface of a user terminal including the decoder 100 or a user terminal capable of communicating with the decoder 100. Such a user terminal may be a computer, a mobile phone, a tablet, or any other type of device capable of providing / displaying (provided / streamed) content to a user. The system 195 obtains / receives the bitstream 101 (e.g. while a previous video / audio is being displayed / output) via the communication network 199. According to an embodiment, the system 191 is for processing content and storing the processed content, for example the processed video and audio content for later displaying / outputting / streaming. The system 191 obtains / receives content comprising an original image sequence 151 that has been received and processed (including filtering by a deblocking filter according to the invention) by an encoder 150, which generates a bitstream 101 that is communicated to the decoder 100 via a communication network 191. The bitstream 101 is then communicated to the decoder 100 in several ways, for example being pre-generated by the encoder 150 and stored as data in a storage device (e.g. a server or cloud storage) in the communication network 199 until a user requests the content (i.e. bitstream data) from the storage device, at which point the data is communicated / streamed from the storage device to the decoder 100.The system 191 may also provide / stream to the user (e.g., by communicating data for a user interface to be displayed on the user terminal) content information (e.g., title of the content and other meta / storage location data for identifying, selecting and requesting the content) of the content stored in the storage device, and may comprise a content providing device for receiving and processing user requests for content so that the requested content can be delivered / streamed from the storage device to the user terminal. Alternatively, the encoder 150 generates the bitstream 101 when the user requests the content and communicates / streams it directly to the decoder 100. The decoder 100 then receives the bitstream 101 (or signal) and performs filtering with a deblocking filter according to the present invention to obtain / generate a video signal 109 and / or an audio signal, which is used by the user terminal to provide the requested content to the user.
[0202] Any step of the method / process according to the present invention or function described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the step / function may be stored or transmitted as one or more instructions or codes or programs or a computer-readable medium and executed by one or more hardware-based processing units such as a PC ("personal computer"), a DSP ("digital signal processor"), a circuit, a circuit, a processor and memory, a programmable computing machine, which may be a general-purpose microprocessor or central processing unit, a microcontroller, an ASIC ("application specific integrated circuit"), a field programmable logic array (FPGA), or other equivalent integrated or discrete logic circuit. Thus, the term "processor" as used herein may refer to any of the aforementioned structures, or any other structure suitable for implementing the techniques described herein.
[0203] The embodiments of the present invention may be implemented by a wide variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs), or sets of JCs (e.g., chipsets), and various components, modules, or units are described herein to illustrate functional aspects of devices / apparatuses configured to perform the embodiments, but do not necessarily require implementation by different hardware units. Rather, the various modules / units may be combined in a codec hardware unit, or may be provided by a collection of interoperable hardware units including one or more processors along with appropriate software / firmware.
[0204] The embodiments of the present invention can be realized by a computer of a system or apparatus including one or more processors or circuits for reading and executing computer executable instructions (e.g., one or more programs) recorded on a storage medium to perform one or more modules / units / functions of the above-mentioned embodiments, and / or by a method executed by the computer of the system or apparatus, e.g., by reading and executing computer executable instructions from a storage medium to perform one or more functions of the above-mentioned embodiments, and / or by controlling one or more processors or circuits to perform one or more functions of the above-mentioned embodiments. The computer may include a separate computer or a network of separate processing units to read and execute the computer executable instructions. The computer executable instructions may be provided to the computer from a computer readable medium, such as a communication medium, for example, via a network or a tangible storage medium. The communication medium may be a signal / bit stream / carrier wave. The tangible storage medium may be, for example, a hard disk, a random access memory, a read-only memory, a storage device of a distributed computing system, an optical disk (Compact Disc (CD), Digital Versatile Disc (DVD), or Blu-ray Disc (BD)). TMThe "non-transitory computer-readable storage medium" may include one or more of a memory device, a flash memory device, a memory card, etc. At least some of the steps / functions may also be implemented in hardware by machines or dedicated components such as an FPGA ("Field Programmable Gate Array") or an ASIC ("Application Specific Integrated Circuit").
[0205] Fig. 10 is a schematic block diagram of a computing device 1300 for implementing one or more embodiments of the present invention. The computing device 1300 can be a device such as a microcomputer, a workstation, or a light portable device. The computing device 1300 has a central processing unit (CPU) 1301, such as a microprocessor, a random access memory (RAM) 1302 for storing executable code of the method of the embodiments of the present invention as well as registers adapted to record variables and parameters necessary for implementing the method for encoding or decoding at least a part of an image according to the embodiments of the present invention, where this memory capacity can be expanded, for example by connecting an optional RAM to an expansion port; a read only memory (ROM) 1303 for storing computer programs for implementing the embodiments of the present invention, and a network interface (NET) 1304 for connecting to a communication network over which digital data to be processed is transmitted or received. The network interface (NET) 1304 can be a single network interface or can be composed of a set of different network interfaces (e.g. wired and wireless interfaces, or different types of wired or wireless interfaces). Data packets are written to the network interface for transmission or read from the network interface for reception under the control of software applications executed within the CPU 1301. A user interface (UI) 1305 may be used to receive input from a user or to display information to a user. A hard disk (HD) 1306 may be provided as mass storage. An input / output module (IO) 1307 may be used to send and receive data to external devices such as video sources or displays. The executable code may be stored either in the ROM 1303, the HD 1306 or on a removable digital medium such as a disk.According to a variant, the executable code of the program can be received by means of a communication network, via NET 1304, in order to be stored in one of the storage means of the communication device 1300, such as HD 1306, before being executed. The CPU 1301 is adapted to control and direct the execution of instructions or parts of the software code of a program or group of programs according to an embodiment of the invention stored in one of the aforementioned storage means. After power-on, the CPU 1301 can for example execute instructions from the main RAM memory 1302 relating to a software application after those instructions have been loaded from the program ROM 1303 or from the HD 1306. Such a software application, when executed by the CPU 1301, causes the steps of the method according to the invention to be carried out.
[0206] It is also understood that according to other embodiments of the present invention, a decoder according to the aforementioned embodiment is provided in a user terminal such as a computer, a mobile phone (cellular phone), a table, or any other type of device (e.g., a display device) that can provide / display content to a user. According to yet another embodiment, an encoder according to the aforementioned embodiment is provided in an imaging device that also comprises a camera, a digital video camera, or a network camera (e.g., a closed circuit television or video surveillance camera) that captures and provides content for the encoder to encode. Two such examples are provided below with reference to Figures 11 and 12.
[0207] Network Camera FIG. 11 is a diagram illustrating a network camera system 2100 including a network camera 2102 and a client device 2104 .
[0208] The network camera 2102 includes an imaging unit 2106 , an encoding unit 2108 , a communication unit 2110 , and a control unit 2112 .
[0209] A network camera 2102 and a client device 2104 are connected to each other via a network 200 so that they can communicate with each other.
[0210] The imaging unit 2106 includes a lens and an image sensor (e.g., a charge-coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS)) to capture an image of a subject and generate image data based on the image, which may be a still image or a video image.
[0211] The encoding unit 2108 encodes the image data using the encoding method described above.
[0212] The communication unit 2110 of the network camera 2102 transmits the encoded image data encoded by the encoding unit 2108 to the client device 2104 .
[0213] The communication unit 2110 also receives commands from the client device 2104. The commands include commands to set parameters for the encoding of the encoding unit 2108.
[0214] The control unit 2112 controls each unit within the network camera 2102 in accordance with the commands received by the communication unit 2110 .
[0215] The client device 2104 includes a communication unit 2114 , a decoding unit 2116 , and a control unit 2118 .
[0216] The communication unit 2114 of the client device 2104 sends the command to the network camera 2102 .
[0217] The communication unit 2114 of the client device 2104 also receives the encoded image data from the network camera 2102 .
[0218] The decoding unit 2116 decodes the coded image data using the above-mentioned decoding method.
[0219] The control unit 2118 of the client device 2104 controls other units within the client unit 2104 in accordance with user operations or commands received by the communication unit 2114 .
[0220] The control unit 2118 of the client device 2104 controls the display device 2120 to display the image decoded by the decoding unit 2116 .
[0221] In addition, the control unit 2118 of the client device 2104 controls the display device 2120 to display a GUI (Graphical User Interface) for designating parameter values of the network camera 2102 including parameters for encoding by the encoding unit 2108 .
[0222] Furthermore, the control unit 2118 of the client unit 2104 controls other units within the client unit 2104 in response to a user operation input to a GUI displayed on a display device 2120 .
[0223] The control unit 2119 of the client device 2104 controls the communication unit 2114 of the client device 2104 to send a command specifying parameter values of the network camera 2102 to the network camera 2102 in response to a user operation input to a GUI displayed by the display device 2120.
[0224] Smartphone FIG. 12 is a diagram showing a smartphone 2200. The smartphone 2200 comprises a communication unit 2202 , a decoding unit 2204 , a control unit 2206 , a display unit 2208 , an image recording device 2210 and a sensor 2212 .
[0225] The communication unit 2202 receives the encoded image data via the network 200. The decoding unit 2204 decodes the encoded image data received by the communication unit 2202. The decoding unit 2204 decodes the encoded image data using the above-mentioned decoding method.
[0226] The control unit 2206 controls other units within the smartphone 2200 in response to user operations or commands received by the communication unit 2202 . For example, the control unit 2206 controls the display unit 2208 to display the image decoded by the decoding unit 2204 .
[0227] Although the present invention has been described with reference to embodiments, it should be understood that the present invention is not limited to the disclosed embodiments. It will be understood by those skilled in the art that various changes and modifications can be made without departing from the scope of the present invention, as defined in the appended claims. All of the features disclosed in this specification (including any accompanying claims, abstract, and drawings), and / or all of the steps of any method or process so disclosed, can be combined in any combination, except combinations in which at least some of such features and / or steps are mutually exclusive. Each feature disclosed in this specification (including any accompanying claims, abstract, and drawings) can be replaced by an alternative feature serving the same, equivalent, or similar purpose, unless otherwise specified. Thus, unless otherwise specified, each feature disclosed is merely one example of a generic series of equivalent or similar function.
[0228] It will also be understood that any result of the above-mentioned comparisons, determinations, evaluations, selections, executions, performing, or considerations, e.g., selections made during an encoding or filtering process, may be indicated in or determinable / inferable from data in the bitstream, e.g., flags or data indicating the result, such that the indicated or determined / inferred result may be used in processing, e.g., during a decoding process, in lieu of actually performing the comparisons, determinations, evaluations, selections, executions, performing, or considerations.
[0229] In the claims, the word "comprise" does not exclude other elements or steps, and the indefinite articles "a" or "an" do not exclude a plurality. The mere fact that different features are recited in mutually different dependent claims does not indicate that a combination of these features cannot be used to advantage.
[0230] Reference signs appearing in the claims are by way of illustration only and shall have no limiting effect on the scope of the claims.
Claims
1. 1. A method for decoding a bitstream, the bitstream having a picture header including syntax elements that apply to all slices of a picture, the method comprising: Before decoding a syntax element related to SAO from the picture header, decoding a syntax element specifying an ID of an adaptation parameter set (APS) of Luma Mapping with Chroma Scaling (LMCS) from the picture header; decoding the bitstream using the decoded syntax elements; The method according to claim 1, further comprising:
2. 1. A method for encoding video data into a bitstream, the bitstream having a picture header including syntax elements that apply to all slices of a picture, the bitstream comprising: encoding a syntax element specifying an ID of an adaptation parameter set (APS) of Luma Mapping with Chroma Scaling (LMCS) into the picture header before encoding a syntax element related to SAO into the picture header; encoding the video data; The method according to claim 1, further comprising:
3. 2. The method of claim 1 , wherein in the picture header, a syntax element indicating that the current picture is never used as a reference picture is followed by the syntax element that specifies the ID of the APS of the LMCS.
4. In the picture header, a syntax element indicating that the current picture is a gradual decoder refresh picture is followed by the syntax element specifying the ID of the APS of the LMCS.
2. The method of claim 1 .
5. In the LMCS, (a) deriving a variable LmcsPivot based on lmcs_delta_abs_cw and lmcs_delta_sign_cw_flag in the APS of the LMCS in the bitstream; (b) a predMapSamples for a luma component is derived based at least on the LmcsPivot and a predSamples corresponding to prediction samples; 2. The method of claim 1, further comprising: (c) deriving recSamples corresponding to reconstructed luma picture samples based on the predMapSamples and residual luma samples.
6. 2. The method of claim 1, wherein a syntax element specifying an ID of an APS of a scaling list is decoded from the picture header before decoding the SAO-related syntax element from the picture header.
7. 3. The method of claim 2, wherein a syntax element specifying an ID of an APS of a scaling list is encoded into the picture header before encoding the SAO-related syntax element into the picture header.
8. 1. A decoder for decoding a bitstream, the bitstream having a picture header including syntax elements that apply to all slices of a picture, means for decoding, before decoding a syntax element related to SAO from the picture header, a syntax element specifying an ID of an adaptation parameter set (APS) of Luma Mapping with Chroma Scaling (LMCS); means for decoding the bitstream using the decoded syntax elements; 13. A decoder comprising:
9. 1. An encoder for encoding video data into a bitstream, the bitstream having a picture header including syntax elements that apply to all slices of an image; means for encoding a syntax element specifying an ID of an adaptation parameter set (APS) of Luma Mapping with Chroma Scaling (LMCS) into the picture header before encoding a syntax element related to SAO into the picture header; means for encoding said video data; An encoder comprising:
10. A computer program product for causing a computer to carry out each step of the method according to claim 1.
11. A computer program for causing a computer to execute each step of the method according to claim 2.
Citation Information
Patent Citations
Parameter set coding
JP2015518352A
Video or image coding based on luma sample mapping and chroma sample scaling - Patents.com
JP2022539354A