Method and apparatus for video decoding, and computer program
By controlling coding tools through syntax elements to manage residual coding, the method optimizes intra-prediction direction representation, enhancing video coding efficiency and compression ratios.
Patent Information
- Application Number
- JP2024187305
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-03-31
- Filing Date
- 2024-10-24
- Publication Date
- 2025-01-20
- Estimated Expiration
- 2042-04-29
AI Technical Summary
Existing video coding technologies face inefficiencies in representing less likely intra-prediction directions, leading to increased bit usage and reduced compression efficiency.
Implementing a method to control coding tools through syntax elements that disable or enable residual coding techniques, such as Rice parameter derivation, to optimize the representation of intra-prediction directions, thereby reducing bit usage for less likely directions.
Enhances video coding efficiency by reducing the number of bits required to represent less likely intra-prediction directions, improving compression ratios without compromising video quality.
Smart Images

Figure 2025010190000001_ABST
Abstract
Description
[Technical field]
[0001] Incorporation by Reference This application claims the benefit of U.S. Provisional Application No. 63 / 250,166, entitled "TECHNIQUES FOR CONSTRAINT FLAG SIGNALING FOR RANGE EXTENSION WITH RESIDUAL RICE CODING EXTENSION," filed on March 31, 2022, which claims the benefit of priority to U.S. Provisional Application No. 63 / 250,166, entitled "TECHNIQUES FOR CONSTRAINT FLAG SIGNALING FOR RANGE EXTENSION WITH RESIDUAL RICE CODING EXTENSION," filed on September 29, 2021. The disclosure of the prior application is incorporated herein by reference in its entirety.
[0002] SUMMARY This disclosure describes embodiments generally related to video coding. [Background technology]
[0003] The background discussion provided herein is intended to generally present the context of the present disclosure. The work of the presently named inventors is not admitted explicitly or implicitly as prior art to the present disclosure, to the extent that that work is described in this background, along with aspects of the description that would not ordinarily be considered prior art at the time of filing.
[0004] Video coding and decoding can be performed using inter-picture prediction with motion compensation. Uncompressed digital video can include a sequence of pictures, each having spatial dimensions of, for example, 1920x1080 luminance samples and associated chrominance samples. The sequence of pictures can have a fixed or variable picture rate (also informally known as frame rate), for example, 60 pictures per second or 60 Hz. Uncompressed video has specific bitrate requirements. For example, 1080p60 4:2:0 video (1920x1080 luminance sample resolution at a frame rate of 60 Hz) with 8 bits per sample requires a bandwidth approaching 1.5 Gbit / s. One hour of such video requires more than 600 Gbytes of storage.
[0005] One goal of video coding and decoding can be the reduction of redundancy in an input video signal through compression. Compression can help reduce the aforementioned bandwidth and / or storage requirements, in some cases by more than one order of magnitude. Both lossless and lossy compression, as well as combinations thereof, can be employed. Lossless compression refers to techniques that can reconstruct an exact copy of an original signal from a compressed original signal. When using lossy compression, the reconstructed signal may not be identical to the original signal, but the distortion between the original signal and the reconstructed signal is small enough to make the reconstructed signal useful for the intended application. For video, lossy compression is widely used. The amount of acceptable distortion depends on the application, e.g., a user of a particular consumer streaming application may tolerate higher distortion than a user of a television distribution application. The achievable compression ratio may reflect that a higher tolerable / acceptable distortion can result in a higher compression ratio.
[0006] Video encoders and decoders can utilize techniques from a number of broad categories, including, for example, motion compensation, transform, quantization, and entropy coding.
[0007] Video codec techniques can include a technique known as intra-coding. In intra-coding, sample values are represented without reference to samples or other data from previously reconstructed reference pictures. In some video codecs, a picture is spatially subdivided into blocks of samples. When all blocks of samples are coded in intra mode, the picture can be an intra picture. Intra pictures and their derivatives, such as independent decoder refresh pictures, can be used to reset the decoder state and thus can be used as the first picture in a coded video bitstream and video session or as a still image. Samples of an intra block can be subjected to a transform and the transform coefficients can be quantized before entropy coding. Intra prediction can be a technique that minimizes sample values in a pre-transform domain. In some cases, the smaller the DC value after the transform and the smaller the AC coefficients, the fewer bits are needed for a given quantization step size to represent the block after entropy coding.
[0008] Traditional intra-coding, for example as known from MPEG-2 generation coding techniques, does not use intra-prediction. However, some newer video compression techniques include techniques that attempt to do so from surrounding sample data and / or metadata obtained during the encoding / decoding of a block of data that is spatially adjacent and preceding in decoding order. Such techniques are hereinafter referred to as "intra-prediction" techniques. It should be noted that at least in some cases, intra-prediction uses only reference data from the current picture being reconstructed, and not from a reference picture.
[0009] There may be many different forms of intra-prediction. When more than one of such techniques can be used in a given video coding technique, the technique in use may be coded in an intra-prediction mode. In some cases, a mode may have sub-modes and / or parameters that may be coded individually or included in a mode codeword. Which codeword is used for a given mode / sub-mode / parameter combination may affect the coding efficiency gain through intra-prediction, as may the entropy coding technique used to convert the codeword into a bitstream.
[0010] A specific mode of intra prediction was introduced in H.264, explored in H.265, and further explored in newer coding techniques such as joint exploration model (JEM), versatile video coding (VVC) and benchmark set (BMS). A predictor block can be formed using neighboring sample values belonging to already available samples. The sample values of the neighboring samples are copied to the predictor block according to the direction. The reference to the direction in use can be coded in the bitstream or can be predicted itself.
[0011] Referring to FIG. 1A, shown at the bottom right is a subset of 9 predictor directions found from the 33 possible predictor directions of H.265 (corresponding to the 33 angle modes of the 35 intra modes). The point where the arrows converge (101) represents the sample being predicted. The arrows represent the direction in which the sample is predicted. For example, arrow (102) indicates that sample (101) is predicted from one or more samples to the upper right, at an angle of 45 degrees from the horizontal. Similarly, arrow (103) indicates that sample (101) is predicted from one or more samples to the lower left of sample (101), at an angle of 22.5 degrees from the horizontal.
[0012] 1A, at the top left is shown a square block (104) of 4x4 samples (indicated by a dashed bold line). The square block (104) contains 16 samples, each labeled with "S" and its position in the Y dimension (e.g., row index) and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample (from the top) in the Y dimension and the first sample (from the left) in the X dimension. Similarly, sample S44 is the fourth sample of the block (104) in both the Y and X dimensions. Since the size of the block is 4x4 samples, S44 is at the bottom right. Also shown are reference samples that follow a similar numbering scheme. The reference samples are labeled with R, their Y position (e.g., row index) and X position (column index) relative to the block (104). In both H.264 and H.265, the predicted samples are adjacent to the block being reconstructed, and therefore negative values do not need to be used.
[0013] Intra-picture prediction can work by copying reference sample values from adjacent samples as appropriate according to the signaled prediction direction. For example, assume that the coded video bitstream includes signaling for this block indicating a prediction direction consistent with the arrow (102), i.e., the sample is predicted from one or more prediction samples to the upper right and at an angle of 45 degrees from the horizontal. In this case, samples S41, S32, S23, S14 are predicted from the same reference sample R05. Sample S44 is then predicted from reference sample R08.
[0014] In some cases, particularly when the orientation is not evenly divisible by 45 degrees, the values of multiple reference samples may be combined, for example through interpolation, to calculate the reference sample.
[0015] As video coding techniques develop, the number of possible directions is increasing. In H.264 (2003), nine different directions can be represented. This increases to 33 in H.265 (2013), and at the time of disclosure, JEM / VVC / BMS can support 65 directions. Experiments are performed to identify the most likely directions, and certain techniques in entropy coding are used to represent those most likely directions with a small number of bits, accepting certain penalties for less likely directions. Furthermore, sometimes the direction itself can be predicted from neighboring directions used in neighboring already decoded blocks.
[0016] FIG. 1B shows a schematic (180) showing 65 intra prediction directions according to JEM, illustrating the increase in the number of prediction directions over time.
[0017] The mapping of intra-prediction direction bits, which represent the direction, in the coded video bitstream may vary from one video coding technique to another, ranging, for example, from a simple direct mapping of the prediction direction to an intra-prediction mode, to a codeword, to complex adaptation schemes including most probable modes, and similar techniques. However, in all cases, there may be certain directions that are statistically less likely to occur in the video content than certain other directions. Because the goal of video compression is to reduce redundancy, these less likely directions are represented by more bits than the more likely directions in well-performing video coding techniques.
[0018] Motion compensation may be a lossy compression technique and may refer to a technique in which blocks of sample data from a previously reconstructed picture or part thereof (reference picture) are used to predict a newly reconstructed picture or part of a picture after being spatially shifted in a direction indicated by a motion vector (hereinafter MV). In some cases, the reference picture may be the same as the picture currently being reconstructed. The MV may have two dimensions X and Y or three dimensions, the third being an indication of the reference picture in use (the latter may indirectly be a temporal dimension).
[0019] In some video compression techniques, the MV applicable to an area of sample data can be predicted from other MVs, for example from an MV associated with another area of sample data that is spatially adjacent to the area being reconstructed and precedes the MV in decoding order. Doing so can substantially reduce the amount of data required to code the MV, thereby removing redundancy and increasing compression. MV prediction can work effectively because, for example, when coding an input video signal derived from a camera (known as natural video), there is a statistical possibility that areas larger than the area to which a single MV is applicable move in a similar direction, and therefore, in some cases, predictions can be made using similar motion vectors derived from the MVs of neighboring areas. As a result, the MV found for a given area is similar or identical to the MV predicted from the surrounding MVs, which can then be represented, after entropy coding, with a smaller number of bits than would be used if coding the MV directly. In some cases, MV prediction can be an example of lossless compression of a signal (i.e., an MV) derived from an original signal (i.e., a sample stream). In other cases, the MV prediction itself may be non-lossy, for example due to rounding errors in computing the predictor from some surrounding MVs.
[0020] Various MV prediction mechanisms are described in H.265 / HEVC (ITU-T Rec. H.265, "High Efficiency Video Coding", December 2016). Among the many MV prediction mechanisms proposed by H.265, the one described here is a technique called "spatial merge".
[0021] Referring to Figure 2, a current block (201) contains samples that the encoder found during the motion search process to be predictable from a previous block of the same size but spatially shifted. Instead of coding its MV directly, the MV can be derived from metadata associated with one or more reference pictures, for example from the most recent reference picture (in decoding order) using the MV associated with any one of the five surrounding samples denoted A0, A1 and B0, B1, B2 (202 to 206, respectively). In H.265, MV prediction can use predictors from the same reference picture as the neighboring blocks use. Summary of the Invention
[0022] Aspects of the present disclosure provide methods and apparatus for video data processing. In some embodiments, the apparatus for video data processing includes a processing circuit. For example, the processing circuit determines a first syntax element for coding control in a first scope of coded video data in a bitstream. The first syntax element is associated with a second coding tool that replaces the first coding tool for Rice parameter derivation in residual coding. In response to the first syntax element being a first value indicating disabling of the second coding tool in the first scope, the processing circuit decodes the first scope of coded video data, including one or more second scopes of coded video data, without invoking the second coding tool.
[0023] In some embodiments, the first syntax element is in general constraint information for coding control of pictures in an output layer set. In some examples, a first value of the first syntax element indicates disabling of a second coding tool in each coded layer video sequence (CLVS) in the output layer set.
[0024] In some examples, the processing circuitry can constrain a second syntax element for coding control of a coded layer video sequence (CLVS) in the bitstream to have a value indicating no invocation of a second coding tool to decode the CLVS.
[0025] In some embodiments, in response to the first syntax element being the second value, the processing circuit determines a value of a second syntax element for coding control of a coded layer video sequence (CLVS) in the bitstream, the second syntax element indicating enablement / disablement of a second coding tool in the CLVS, the second coding tool being for Rice parameter derivation for absolute value binarization during residual coding.
[0026] In some examples, the processing circuit infers a value of the second syntax element to indicate non-use of the second coding tool in the CLVS in response to the second syntax element not being present in a sequence parameter set (SPS) for the CLVS.
[0027] In some examples, the processing circuit decodes a first syntax element from the syntax structure of the general constraint information in response to a syntax element in the syntax structure indicating additional bits of general constraint information in the syntax structure.
[0028] In some examples, the second coding tool is defined in a range extension of the standard, which range extension is not supported by the device.
[0029] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer, cause the computer to perform a method for video decoding. [Brief description of the drawings]
[0030] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings.
[0031] [Figure 1A] FIG. 2 is a schematic diagram of an example subset of intra-prediction modes.
[0032] [Figure 1B] FIG. 2 is a diagram of an example intra-prediction direction.
[0033] [Diagram 2] FIG. 2 is a schematic diagram of a current block and its surrounding spatial merging candidates in one example.
[0034] [Diagram 3] FIG. 3 is a schematic diagram of a simplified block diagram of a communication system (300) according to one embodiment.
[0035] [Figure 4] FIG. 4 is a schematic diagram of a simplified block diagram of a communication system (400) according to one embodiment.
[0036] [Diagram 5] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment.
[0037] [Figure 6] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment.
[0038] [Figure 7] FIG. 4 is a block diagram of an encoder according to another embodiment.
[0039] [Figure 8] FIG. 4 is a block diagram of a decoder according to another embodiment.
[0040] [Figure 9]FIG. 2 illustrates an example of adaptive resolution change (ARC) parameter signaling according to an embodiment of the present disclosure.
[0041] [Figure 10] FIG. 10 is a diagram showing an example of a table (1000) for mapping upsampling or downsampling factors, codewords, and Ext-Golomb codes.
[0042] [Figure 11] FIG. 1 illustrates several examples of signaling of ARC parameters according to some embodiments of the present disclosure.
[0043] [Figure 12] A diagram showing an example syntax structure of a set of PTL syntax elements in some examples.
[0044] [Figure 13] 11A-11C illustrate example syntax structures of general constraint information in some examples.
[0045] [Figure 14A] A diagram showing an example of PTL information, including a PTL syntax structure and a general constraint information syntax structure, according to some embodiments of the present disclosure. [Figure 14B] A diagram showing an example of PTL information, including a PTL syntax structure and a general constraint information syntax structure, according to some embodiments of the present disclosure.
[0046] [Figure 15A] FIG. 2 illustrates an example of a syntax structure of general constraint information according to an embodiment of the present disclosure. [Figure 15B] FIG. 2 illustrates an example of a syntax structure of general constraint information according to an embodiment of the present disclosure.
[0047] [Figure 16] FIG. 2 illustrates a syntax structure of general constraint information according to some embodiments of the present disclosure.
[0048] [Figure 17] FIG. 1 illustrates an example syntax structure for a sequence parameter set (SPS) range extension according to some embodiments of the present disclosure.
[0049] [Figure 18] FIG. 1 shows a flowchart outlining a process according to an embodiment of the present disclosure.
[0050] [Figure 19] FIG. 1 shows a flowchart outlining a process according to an embodiment of the present disclosure.
[0051] [Figure 20] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0052] FIG. 3 illustrates a simplified block diagram of a communication system (300) according to an embodiment of the present disclosure. The communication system (300) includes a plurality of terminal devices that can communicate with each other, for example, via a network (350). For example, the communication system (300) includes a first pair of terminal devices (310) and (320) interconnected via the network (350). In the example of FIG. 3, the first pair of terminal devices (310) and (320) perform a one-way transmission of data. For example, the terminal device (310) may code video data (e.g., a stream of video pictures captured by the terminal device (310)) for transmission to another terminal device (320) via the network (350). The encoded video data may be transmitted in the form of one or more coded video bitstreams. The terminal device (320) may receive the coded video data from the network (350), decode the coded video data to reconstruct the video pictures, and display the video pictures according to the reconstructed video data. One-way data transmission may be common, such as in media serving applications.
[0053] In another example, the communication system (300) includes a second pair of terminal devices (330) and (340) performing bidirectional transmission of coded video data, such as may occur during a video conference. For the bidirectional transmission of data, in one example, each of the terminal devices (330) and (340) may code video data (e.g., a stream of video pictures captured by that terminal device) for transmission to the other of the terminal devices (330) and (340) over the network (350). Each of the terminal devices (330) and (340) may also receive coded video data transmitted by the other of the terminal devices (330) and (340), decode the coded video data to reconstruct the video pictures, and display the video pictures on an accessible display device according to the reconstructed video data.
[0054] In the example of FIG. 3, the terminal devices (310), (320), (330), and (340) may be illustrated as a server, a personal computer, and a smartphone, although the principles of the present disclosure may not be so limited. Embodiments of the present disclosure find application in laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. The network (350) represents any number of networks that convey coded video data between the terminal devices (310), (320), (330), and (340), including, for example, wireline and / or wireless communication networks. The communication network (350) may exchange data in circuit-switched and / or packet-switched channels. Representative networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this discussion, the architecture and topology of the network (350) may not be important to the operation of the present disclosure unless otherwise described herein below.
[0055] 4 shows an arrangement of a video encoder and a video decoder in a streaming environment as an example of an application of the disclosed subject matter. The disclosed subject matter may be similarly applicable to other video-enabled applications including, for example, video conferencing, digital TV, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0056] The streaming system may include a video capture subsystem (413), which may include, for example, a video source (401), e.g., a digital camera, that creates a stream of uncompressed video pictures (402). In one example, the stream of video pictures (402) includes samples taken by a digital camera. The stream of video pictures (402) is shown as a thick line to emphasize its high amount of data compared to the encoded video data (404) (or coded video bitstream), which may be processed by an electronic device (420) that includes a video encoder (403) coupled to the video source (401). The video encoder (403) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data (404) (or coded video bitstream (404)), is shown as a thin line to emphasize its low amount of data compared to the stream of video pictures (402), which may be stored in a streaming server (405) for future use. One or more streaming client subsystems, such as the client subsystems (406) and (408) of FIG. 4, can access the streaming server (405) to retrieve copies (407) and (409) of the encoded video data (404). The client subsystem (406) can include a video decoder (410), for example within an electronic device (430). The video decoder (410) decodes an input copy (407) of the encoded video data and creates an output stream (411) of video pictures that can be rendered on a display (412) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (404), (407), and (409) (e.g., a video bitstream) can be encoded according to a particular video coding / compression standard. Examples of these standards include ITU-T Recommendation H.265.In one example, the developing video coding standard is informally known as Versatile Video Coding (VVC), and the disclosed subject matter may be used in the context of VVC.
[0057] It should be noted that the electronic devices (420) and (430) may include other components (not shown). For example, the electronic device (420) may include a video decoder (not shown), and the electronic device (430) may also include a video encoder (not shown).
[0058] 5 shows a block diagram of a video decoder (510) according to one embodiment of the present disclosure. The video decoder (510) can be included in an electronic device (530). The electronic device (530) can include a receiver (531) (e.g., a receiving circuit). The video decoder (510) can be used in place of the video decoder (410) of the example of FIG. 4.
[0059] The receiver (531) may receive one or more coded video sequences to be decoded by the video decoder (510); in the same or another embodiment, one coded video sequence at a time, where the decoding of each coded video sequence is independent of the other coded video sequences. The coded video sequences may be received from a channel (501), which may be a hardware / software link to a storage device that stores the coded video data. The receiver (531) may receive the coded video data along with other data, such as coded audio data and / or auxiliary data streams, which may be forwarded to their respective usage entities (not shown). The receiver (531) may separate the coded video sequences from the other data. To eliminate network jitter, a buffer memory (515) may be coupled between the receiver (531) and the entropy decoder / parser (520) (hereinafter "parser (520)"). In certain applications, the buffer memory (515) is part of the video decoder (510). In other cases, the buffer memory (515) may be external to the video decoder (510) (not shown). In still other cases, there may be a buffer memory (not shown) external to the video decoder (510), e.g., to eliminate network jitter, in addition to another buffer memory (515) internal to the video decoder (510), e.g., to handle playback timing. When the receiver (531) is receiving data from a store / forward device with sufficient bandwidth and controllability or from an isosynchronous network, the buffer memory (515) may not be needed or may be small. For use in best-effort packet networks such as the Internet, a buffer memory (515) may be needed, the size of which may be relatively large, advantageously adaptively sized, and may be implemented, at least in part, in an operating system or similar element (not shown) external to the video decoder (510).
[0060] The video decoder (510) may include a parser (520) to reconstruct symbols (521) from the coded video sequence. These categories of symbols include information used to manage the operation of the video decoder (510) and potentially information to control a rendering device such as a render device (512) (e.g., a display screen) that is not an integral part of the electronic device (530) but may be coupled to the electronic device (530) as shown in FIG. 5. The rendering device control information may be in the form of a Supplemental Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (520) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow various principles including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (520) may extract from the coded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. The subgroups may include Groups of Pictures (GOPs), pictures, tiles, slices, macroblocks, Coding Units (CUs), blocks, Transform Units (TUs), Prediction Units (PUs), etc. The parser (520) may also extract from the coded video sequence information such as transform coefficients, quantization parameter values, motion vectors, etc.
[0061] The parser (520) may perform entropy decoding / parsing operations on the video sequence received from the buffer memory (515) to generate symbols (521).
[0062] The reconstruction of the symbols (521) can involve several different units, depending on the type of coded video picture or portion thereof (e.g., inter and intra picture, inter and intra block) and other factors. Which units are involved and how can be controlled by subgroup control information parsed by the parser (520) from the coded video sequence. The flow of such subgroup control information between the parser (520) and the following units is not shown for clarity.
[0063] In addition to the functional blocks already mentioned, the video decoder (510) may be conceptually subdivided into a number of functional units, as described below. In a practical implementation operating under commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, a conceptual subdivision into functional units is appropriate below.
[0064] The first unit is a scalar / inverse transform unit (551), which receives the quantized transform coefficients as symbols (521) from the parser (520), as well as control information including which transform to use, block size, quantization factor, quantization scaling matrix, etc. The scalar / inverse transform unit (551) can output blocks containing sample values that can be input to an aggregator (555).
[0065] In some cases, the output samples of the scaler / inverse transform (551) may relate to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed picture, but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by an intra-picture prediction unit (552). In some cases, the intra-picture prediction unit (552) generates blocks of the same size and shape of the block being reconstructed using surrounding already reconstructed information fetched from a current picture buffer (558). The current picture buffer (558) buffers, for example, a partially reconstructed current picture and / or a fully reconstructed current picture. The aggregator (555) may add, possibly on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (552) to the output sample information provided by the scaler / inverse transform unit (551).
[0066] In other cases, the output samples of the scalar / inverse transform unit (551) may relate to a block that is inter-coded and potentially motion compensated. In such cases, the motion compensated prediction unit (553) may access the reference picture memory (557) to fetch samples used for prediction. After motion compensating the fetched samples according to the symbols (521) associated with the block, these samples may be added by the aggregator (555) to the output of the scalar / inverse transform unit (551) (in this case referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (557) from which the motion compensated prediction unit (553) fetches the prediction samples may be controlled by the motion vectors available to the motion compensated prediction unit (553), e.g., in the form of symbols (521) that may have X, Y and reference picture components. Motion compensation may also include interpolation of sample values fetched from the reference picture memory (557) when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, etc.
[0067] The output samples of the aggregator (555) can be subject to various loop filtering techniques in a loop filter unit (556). Video compression techniques are controlled by parameters contained in the coded video sequence (also called a coded video bitstream) and made available to the loop filter unit (556) as symbols (521) from the parser (520), but can include in-loop filter techniques that can be responsive to meta-information obtained during decoding of previous portions (in decoding order) of the coded picture or coded video sequence, as well as to previously reconstructed and loop filtered sample values.
[0068] The output of the loop filter unit (556) may be a sample stream that can be output to a render device (512) and can be stored in a reference picture memory (557) for use in future inter-picture prediction.
[0069] Once a particular coded picture has been fully reconstructed, it can be used as a reference picture for future prediction. For example, once a coded picture corresponding to a current picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (520)), the current picture buffer (558) can become part of the reference picture memory (557), and the fresh current picture buffer can be reallocated before beginning reconstruction of a subsequent coded picture.
[0070] The video decoder (510) may perform decoding operations according to a given video compression technique of a standard such as ITU-T Rec. H.265. A coded video sequence may conform to a syntax specified by the video compression technique or standard being used in the sense that the coded video sequence adheres to both the syntax of the video compression technique or standard and to a profile documented in the video compression technique or standard. In particular, a profile may select a particular tool as the only tool available for use under that profile. Compliance may also require that the complexity of the coded video sequence be within a range defined by a level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference pixel size, etc. The limits set by the level may be further restricted in some cases through a Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management signaled with the coded video sequence.
[0071] In an embodiment, the receiver (531) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder (510) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0072] 6 shows a block diagram of a video encoder (603) according to an embodiment of the present disclosure. The video encoder (603) is included in an electronic device (620). The electronic device (620) includes a transmitter (640) (e.g., a transmission circuit). The video encoder (603) can be used in place of the video encoder (403) of the example of FIG. 4.
[0073] The video encoder (603) may receive video samples from a video source (601) (which is not part of the electronic device (620) in the example of FIG. 6) that may capture video images to be coded by the video encoder (603). In another example, the video source (601) is part of the electronic device (620).
[0074] The video source (601) may provide a source video sequence to be coded by the video encoder (603) in the form of a digital video sample stream that may be of any suitable bit depth (e.g. 8-bit, 10-bit, 12-bit, ...), any color space (e.g. BT.601 YCrCB, RGB, ...) and any suitable sampling structure (e.g. YCrCb 4:2:0, YCrCb 4:4:4). In a media delivery system, the video source (601) may be a storage device that stores pre-prepared video. In a video conferencing system, the video source (601) may be a camera that captures local image information as a video sequence. The video data may be provided as a number of individual pictures that convey motion when viewed in a sequence. The pictures themselves may be organized as a spatial array of pixels, where each pixel may contain one or more samples depending on the sampling structure, color space, etc. in use. Those skilled in the art can easily understand the relationship between pixels and samples. The following description focuses on samples.
[0075] According to one embodiment, the video encoder (603) can code and compress pictures of a source video sequence into a coded video sequence (643) in real-time or under any other time constraint required by the application. Enforcing an appropriate coding rate is one function of the controller (650). In some embodiments, the controller (650) controls and is operatively coupled to other functional units, as described below, which are not shown for clarity. Parameters set by the controller (650) can include rate control related parameters (picture skip, quantizer, lambda value for rate distortion optimization techniques, ...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (650) can be configured to have other appropriate functions associated with the video encoder (603) that are optimized for a particular system design.
[0076] In some embodiments, the video encoder (603) is configured to operate in a coding loop. As an oversimplified explanation, in one example, the coding loop can include a source coder (630) (responsible for creating symbols, such as a symbol stream, based on an input picture to be coded and reference pictures, for example) and a (local) decoder (633) embedded in the video encoder (603). The decoder (633) reconstructs the symbols to create sample data in a similar manner as the (remote) decoder does (since any compression between the symbols and the coded video bitstream is lossless in the video compression techniques considered in the disclosed subject matter). The reconstructed sample stream (sample data) is input to a reference picture memory (634). Since the decoding of the symbol stream results in bit-exact results independent of the decoder location (local or remote), the content in the reference picture memory (634) is also bit-exact between the local and remote encoders. In other words, the prediction part of the encoder "sees" exactly the same sample values as the reference picture samples that the decoder "sees" when using the prediction during decoding. This basic principle of reference picture synchronicity (and the resulting drift when synchronicity cannot be maintained, e.g., due to channel errors) is used in several related techniques as well.
[0077] The operation of the "local" decoder (633) may be the same as a "remote" decoder, such as the video decoder (510), already described above in connection with Figure 5. However, with brief reference also to Figure 5, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder (645) and parser (520) may be lossless, the entropy decoding portion of the video decoder (510), including the buffer memory (515) and parser (520), may not be fully implemented in the local decoder (633).
[0078] A possible observation at this point is that any decoder technique, except analysis / entropy decoding, present in the decoder must also necessarily be present in the corresponding encoder in substantially identical functional form. For this reason, the disclosed subject matter focuses on the operation of the decoder. Descriptions of encoder techniques may be omitted, as opposed to decoder techniques, which are exhaustively described. Only in certain areas are more detailed descriptions required and are provided below.
[0079] In some examples, during operation, the source coder (630) may perform motion-compensated predictive coding, which predictively codes an input picture with respect to one or more previously coded pictures from the video sequence designated as “reference pictures.” In this manner, the coding engine (632) codes differences between pixel blocks of the input picture and pixel blocks of reference pictures that may be selected as predictive references for the input picture.
[0080] The local video decoder (633) may decode coded video data of pictures that may be designated as reference pictures based on symbols created by the source coder (630). The operation of the coding engine (632) may advantageously be a lossy process. When the coded video data may be decoded in a video decoder (not shown in FIG. 6), the reconstructed video sequence may be a replica of the source video sequence, typically with some errors. The local video decoder (633) may replicate the decoding process that may be performed by the video decoder on the reference pictures and store the reconstructed reference pictures in a reference picture cache (634). In this way, the video encoder (603) may locally store copies of reconstructed reference pictures that have common content as reconstructed reference pictures obtained by the far-end video decoder (without transmission errors).
[0081] The predictor (635) may perform a prediction search for the coding engine (632). That is, for a new picture to be coded, the predictor (635) may search the reference picture memory (634) for sample data (as candidate reference pixel blocks) or specific metadata, such as reference picture motion vectors, block shapes, etc., which may serve as suitable prediction references for the new picture. The predictor (635) may operate on a sample block-by-pixel block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor (635), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (634).
[0082] The controller (650) may manage the coding operations of the source coder (630), including, for example, setting the parameters and subgroup parameters used to encode the video data.
[0083] All outputs of the aforementioned functional units may be subject to entropy coding in an entropy coder (645), which converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques such as Huffman coding, variable length coding, arithmetic coding, etc.
[0084] The transmitter (640) may buffer the coded video sequence produced by the entropy coder (645) and prepare it for transmission over a communication channel (660), which may be a hardware / software link to a storage device that stores the encoded video data. The transmitter (640) may merge the coded video data from the video coder (603) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0085] The controller (650) may manage the operation of the video encoder (603). During coding, the controller (650) may assign each coded picture a particular coded picture type, which may affect the coding that may be applied to the respective picture. For example, pictures may often be assigned as one of the following picture types:
[0086] An intra picture (I-picture) may be one that can be coded and decoded without using any other picture in a sequence as a source of prediction. Some video codecs allow different types of intra pictures, including, for example, Independent Decoder Refresh ("IDR") pictures. Those skilled in the art are aware of these variations of I-pictures and their respective uses and characteristics.
[0087] A predictive picture (P picture) may be one that can be coded and decoded using intra- or inter-prediction, using at most one motion vector and reference index to predict the sample values of each block.
[0088] Bidirectionally predictive pictures (B-pictures) may be those that can be coded and decoded using intra- or inter-prediction, using up to two motion vectors and reference indices to predict the sample values of each block. Similarly, multiple-predictive pictures can use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0089] A source picture is usually spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8 or 16x16 samples each) and may be coded block by block. Blocks may be predictively coded with respect to other (already coded) blocks as determined by the coding assignment applied to the respective picture of the block. For example, blocks of an I-picture may be non-predictively coded or they may be predictively coded with respect to already coded blocks of the same picture (spatial or intra prediction). Pixel blocks of a P-picture may be predictively coded via spatial prediction or via temporal prediction with respect to one previously coded reference picture. Blocks of a B-picture may be predictively coded via spatial prediction or via temporal prediction with respect to one or two previously coded reference pictures.
[0090] The video encoder (603) may perform coding operations in accordance with a given video coding technique or standard, such as ITU-T Rec. H.265. In its operations, the video encoder (603) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. The coded video data may therefore conform to a syntax specified by the video coding technique or standard being used.
[0091] In one embodiment, the transmitter (640) may transmit additional data along with the encoded video. The source coder (630) may include such data as part of the coded video sequence. The additional data may include other types of redundant data, such as temporal / spatial / SNR enhancement layers, redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.
[0092] A video may be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (often abbreviated as intra-prediction) uses spatial correlation in a given picture, while inter-picture prediction uses correlation (temporal or other) between pictures. In one example, a particular picture being coded / decoded is called a current picture and partitioned into blocks. When a block in the current picture is similar to a reference block in a previously coded and still buffered reference picture in the video, the block in the current picture may be coded by a vector called a motion vector. A motion vector points to a reference block in a reference picture and may have a third dimension that identifies the reference picture in cases where multiple reference pictures are used.
[0093] In some embodiments, bi-prediction techniques can be used in inter-picture prediction. According to bi-prediction techniques, two reference pictures are used, such as a first reference picture and a second reference picture, both of which precede the current picture in the video in decoding order (but may be past and future, respectively, in display order). A block in the current picture can be coded by a first motion vector that points to a first reference block in the first reference picture and a second motion vector that points to a second reference block in the second reference picture. A block can be predicted by a combination of the first and second reference blocks.
[0094] Furthermore, merge mode techniques can be used in inter-picture prediction to improve coding efficiency.
[0095] According to some embodiments of the present disclosure, predictions such as inter-picture prediction and intra-picture prediction are performed on a block-by-block basis. For example, according to the HEVC standard, pictures in a sequence of video pictures are partitioned into coding tree units (CTUs) for compression, and the CTUs in a picture have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. In general, a CTU includes three coding tree blocks (CTBs), one luma CTB and two chroma CTBs. Each CTU can be recursively quadtree split into one or more coding units (CUs). For example, a CTU of 64×64 pixels can be split into one CU of 64×64 pixels, four CUs of 32×32 pixels, or 16 CUs of 16×16 pixels. In one example, each CU is analyzed to determine the prediction type of the CU, such as an inter prediction type or an intra prediction type. The CU is split into one or more prediction units (PUs) depending on the temporal and / or spatial predictability. In general, each PU includes a luma prediction block (PB) and two chroma PBs. In one embodiment, prediction operations in coding (encoding / decoding) are performed in units of a prediction block. Using a luma prediction block as an example of a prediction block, the prediction block may include a matrix of values (e.g., luma values) for pixels, such as 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, etc.
[0096] 7 shows a diagram of a video encoder (703) according to another embodiment of the present disclosure. The video encoder (703) is configured to receive a processed block (e.g., a predictive block) of sample values in a current video picture in a sequence of video pictures and to encode the processed block into a coded picture that is part of a coded video sequence. In one example, the video encoder (703) is used in place of the video encoder (403) of the example of FIG. 4.
[0097] In an HEVC example, the video encoder (703) receives a matrix of sample values for a processing block, such as a prediction block of 8×8 samples. The video encoder (703) determines whether the processing block is best coded using intra-mode, inter-mode, or bi-prediction mode, for example using rate-distortion optimization. When the processing block is to be coded in intra-mode, the video encoder (703) may encode the processing block into a coded picture using intra-prediction techniques, and when the processing block is to be coded in inter-mode or bi-prediction mode, the video encoder (703) may encode the processing block into a coded picture using inter-prediction techniques or bi-prediction techniques, respectively. In certain video coding techniques, the merge mode may be an inter-picture prediction sub-mode when a motion vector is derived from one or more motion vector predictors without the benefit of coded motion vector components outside the predictors. In certain other video coding techniques, there may be motion vector components applicable to the current block. In one example, the video encoder (703) includes other components, such as a mode decision module (not shown), to determine the mode of the processing blocks.
[0098] In the example of FIG. 7, the video encoder (703) includes an inter-encoder (730), an intra-encoder (722), a residual calculator (723), a switch (726), a residual encoder (724), a general controller (721), and an entropy encoder (725), which are coupled together as shown in FIG.
[0099] The inter-encoder (730) is configured to receive samples of a current block (e.g., a processing block), compare the block with one or more reference blocks in a reference picture (e.g., blocks in a previous picture and a subsequent picture), generate inter-prediction information (e.g., a description of redundant information according to an inter-coding technique, motion vectors, merge mode information), and calculate an inter-prediction result (e.g., a prediction block) based on the inter-prediction information using any suitable technique. In some examples, the reference picture is a decoded reference picture that is decoded based on the coded video information.
[0100] The intra encoder (722) is configured to receive samples of a current block (e.g., a processing block), optionally compare the block to previously coded blocks in the same picture, and generate transformed and quantized coefficients and possibly intra prediction information (e.g., intra prediction direction information according to one or more intra encoding techniques). In one example, the intra encoder (722) also calculates intra prediction results (e.g., prediction blocks) based on the intra prediction information and reference blocks in the same picture.
[0101] The general controller (721) is configured to determine general control data and control other components of the video encoder (703) based on the general control data. In one example, the general controller (721) determines the mode of the block and provides a control signal to the switch (726) based on the mode. For example, when the mode is an intra mode, the general controller (721) controls the switch (726) to select an intra mode result for use by the residual calculator (723) and controls the entropy encoder (725) to select intra prediction information and include the intra prediction information in the bitstream, and when the mode is an inter mode, the general controller (721) controls the switch (726) to select an inter prediction result for use by the residual calculator (723) and controls the entropy encoder (725) to select inter prediction information and include the inter prediction information in the bitstream.
[0102] The residual calculator (723) is configured to calculate the difference (residual data) between a received block selected from the intra-encoder (722) or the inter-encoder (730) and a prediction result. The residual encoder (724) operates on the residual data and is configured to encode the residual data to generate transform coefficients. In one example, the residual encoder (724) is configured to transform the residual data from the spatial domain to the frequency domain to generate transform coefficients. The transform coefficients are then subjected to a quantization process to obtain quantized transform coefficients. In various embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is configured to perform an inverse transform and generate decoded residual data. The decoded residual data can be used by the intra-encoder (722) and the inter-encoder (730) as appropriate. For example, the inter-encoder (730) can generate decoded blocks based on the decoded residual data and the inter-prediction information, and the intra-encoder (722) can generate decoded blocks based on the decoded residual data and the intra-prediction information. The decoded blocks are appropriately processed to generate decoded pictures, which can be buffered in a memory circuit (not shown) and, in some examples, used as reference pictures.
[0103] The entropy encoder (725) is configured to format the bitstream to include the coded block. The entropy encoder (725) is configured to include various information in accordance with an appropriate standard, such as the HEVC standard. In one example, the entropy encoder (725) is configured to include general control data, selected prediction information (e.g., intra-prediction information or inter-prediction information), residual information, and other appropriate information in the bitstream. It should be noted that, according to the disclosed subject matter, there is no residual information when coding a block in a merged sub-mode of either the inter-mode or the bi-prediction mode.
[0104] 8 shows a diagram of a video decoder (810) according to another embodiment of the present disclosure. The video decoder (810) is configured to receive coded pictures that are part of a coded video sequence and decode the coded pictures to generate reconstructed pictures. In one example, the video decoder (810) is used in place of the video decoder (410) of the example of FIG. 4.
[0105] In the example of FIG. 8, the video decoder (810) includes an entropy decoder (871), an inter decoder (880), a residual decoder (873), a reconstruction module (874), and an intra decoder (872), which are coupled together as shown in FIG.
[0106] The entropy decoder (871) may be configured to reconstruct from a coded picture certain symbols that represent syntax elements of which the coded picture is composed. Such symbols may include, for example, prediction information (e.g., intra-mode, inter-mode, bi-predictive mode, merged submode of the latter two or another submode, etc.) that may identify the mode in which the block is coded, certain samples or metadata used for prediction by the intra-decoder (872) or the inter-decoder (880), respectively, such as intra-predictive information or inter-predictive information, residual information in the form of quantized transform coefficients, etc. In one example, when the prediction mode is an inter-mode or bi-predictive mode, the inter-predictive information is provided to the inter-decoder (880), and when the prediction mode is an intra-predictive mode, the intra-predictive information is provided to the intra-decoder (872). The residual information may be subject to inverse quantization and provided to the residual decoder (873).
[0107] The inter decoder (880) is configured to receive inter prediction information and generate inter prediction results based on the inter prediction information.
[0108] The intra decoder (872) is configured to receive intra prediction information and generate a prediction result based on the intra prediction information.
[0109] The residual decoder (873) may be configured to perform inverse quantization to extract de-quantized transform coefficients and process the de-quantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require certain control information (including Quantizer Parameters (QP)), which may be provided by the entropy decoder (871) (data path not shown as this may be only a low amount of control information).
[0110] The reconstruction module (874) is configured to combine, in the spatial domain, the residual as output by the residual decoder (873) and the prediction result (possibly as output by an inter- or intra-prediction module) to form a reconstructed block, which may be part of a reconstructed picture, which may be part of the reconstructed video. It should be noted that other suitable operations, such as a deblocking operation, may be performed to improve visual quality.
[0111] It should be noted that the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be implemented using any suitable technology. In one embodiment, the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be implemented using one or more integrated circuits. In another embodiment, the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be implemented using one or more processors executing software instructions.
[0112] Aspects of the present disclosure provide techniques for controlling coding tools and functionality using constraint flags within a coded video stream.
[0113] According to aspects of the present disclosure, the picture size in the bitstream may remain the same or may change. In some relevant examples, video encoders and decoders may operate with a given picture size that is defined and remains constant for a coded video sequence (CVS), group of pictures (GOP), or similar multi-picture time frame. In one example, such as MPEG-2, system designs are known to change the horizontal resolution (and therefore the picture size) depending on factors such as scene activity, but for I-pictures only, the picture size is defined and typically remains constant for a GOP. Resampling of reference pictures to use different resolutions in a CVS is known from ITU-T Rec. H.263 Annex P. However, the picture size in a CVS does not change, and only the reference pictures are resampled, potentially resulting in only a portion of the picture canvas being used (e.g., in the case of downsampling) or only a portion of the scene being captured (e.g., in the case of upsampling). In some examples, such as H.263 Annex Q, individual macroblocks are allowed to be sampled twice in each dimension (e.g., above or below). However, the picture size remains the same: there is no need to signal the macroblock size when it can be fixed, for example in H.263.
[0114] In some relevant examples, the picture size of the predicted picture may be changed. Examples such as VP9 allow resampling of reference pictures and changing the resolution of the entire picture. In some examples (e.g., Hendry et al., "On adaptive resolution change (ARC) for VVC," Joint Video Team document JVET-M0135, Jan9-19, 2019, which is incorporated herein in its entirety), resampling of the entire reference picture to a different resolution (e.g., higher or lower resolution). The different candidate resolutions may be coded in the sequence parameter set (SPS) and referenced by per-picture syntax elements in the picture parameter set (PPS).
[0115] According to aspects of the present disclosure, a source video can be compressed by layered coding, where a picture can be encoded into a bitstream that includes one or more layers with different qualities, such as different resolutions. The bitstream can have syntax elements that specify which layers (or sets of layers) can be output at the decoder side. The set of layers to be output can be defined as an output layer set. For example, in a video codec that supports multiple layers and scalability, one or more output layer sets can be signaled in a video parameter set (VPS). Syntax elements that specify a profile tier level (PTL) for the entire bitstream or one or more output layer sets can be signaled in a VPS, a decoder parameter set (DPS), which may be referred to as decoder capability information (DCI) in some examples, an SPS, a PPS, an SEI message, etc. There may be general constraint information in the PTL information that can specify constraints on coding tools or functionality. It is desirable to efficiently represent and signal constraint information for various coding tools and functionality.
[0116] In some examples, the term "subpicture" may be used to refer to a rectangular arrangement of samples, blocks, macroblocks, coding units, or similar entities that may be semantically grouped and coded independently at a modified resolution, for example. One or more subpictures may form a picture. One or more coded subpictures may form a coded picture. One or more subpictures may be assembled into a picture, and one or more subpictures may be extracted from a picture. In some examples, one or more coded subpictures may be assembled in the compressed domain without transcoding to the sample level into a coded picture. In some examples, one or more coded subpictures may be extracted from a coded picture in the compressed domain.
[0117] In some examples, a mechanism that allows changing the resolution of a picture or subpicture in a CVS, for example by reference picture resampling, may be referred to as an adaptive resolution change (ARC). The control information used to perform the adaptive resolution change may be referred to as ARC parameters. ARC parameters may include filter parameters, scaling factors, output and / or reference picture resolutions, various control flags, and / or the like.
[0118] In some examples, ARC encoding / decoding is picture-based, so a set of control information (ARC parameters) is used to encode / decode a single semantically independent coded video picture. In some examples, ARC encoding / decoding is sub-picture-based, so multiple sub-pictures within a picture can be encoded / decoded with independent ARC parameters. It should be noted that various techniques can be used to signal the ARC parameters.
[0119] 9 illustrates examples (e.g., options) of techniques for signaling ARC parameters according to some embodiments of the present disclosure. Coding efficiency, complexity, and architecture may vary from example to example. A video coding standard or technology may select one or more of these examples or other variations for signaling ARC parameters. The examples are not mutually exclusive and may be interchanged based on application needs, standard technology, encoder choice, and / or the like.
[0120] According to one aspect of the disclosure, the ARC parameters may be provided as classes of ARC parameters in various ways. In some examples, the classes of ARC parameters include upsample and / or downsample coefficients that are separated or combined in the X and Y dimensions. In one example, one or more short syntax elements may be coded that may point to tables that include the upsample and / or downsample coefficients.
[0121] In some examples, the class of ARC parameters includes upsample and / or downsample coefficients and has an added temporal dimension to indicate a constant speed zoom in or out for a given number of pictures. In one example, one or more short syntax elements can be coded that can point to a table that includes the upsample and / or downsample coefficients with the added temporal dimension.
[0122] In some examples, the classes of ARC parameters include the resolution of the X or Y dimensions of the input picture, output picture, reference picture, coded picture, in units of sample, block, macroblock, CU, or any other suitable granularity, combined or separately. In some examples, there are two or more resolutions used in video coding (e.g., one resolution for the input picture and another resolution for the reference picture), and a set of values (corresponding to one of the resolutions) can be inferred from another set of values (corresponding to another of the resolutions). The determination of the values can be gated, for example, based on the use of a flag. The use of flags for gating is described in more detail in the further description.
[0123] In some examples, the ARC parameter classes include warping coordinates similar to those used in H.263 Annex P with appropriate granularity as described above. H.263 Annex P defines an efficient way of coding the warping coordinates. Other efficient ways can be devised. For example, the variable length reversible Huffman-style coding of Annex P warping coordinates can be replaced by an appropriate length binary coding, where the length of the binary codeword can be derived from the maximum picture size multiplied by a factor to offset the value to allow warping outside the boundaries of the maximum picture size.
[0124] In some examples, the class of ARC parameters includes upsample and / or downsample filter parameters. In one example, there is only a single filter for upsampling and / or downsampling. In another example, multiple filters can be used. In some examples, the filter parameters can be signaled to allow for more flexibility in filter design. The filter parameters can be selected by using an index into a list of possible filter designs. The filters can be fully specified (e.g., by specifying a list of filter coefficients using a suitable entropy coding technique) or the filters can be implicitly selected through an upsample or downsample ratio signaled according to any of the mechanisms described above and / or the like.
[0125] The following description illustrates the signaling of ARC parameters through codewords using a finite set of upsampled or downsampled coefficients (the same coefficients used in both X and Y dimensions). In some examples, the codewords can be variable length coded using Ext-Golomb codes for certain syntax elements in video coding specifications (e.g., H.264 and H.265).
[0126] FIG. 10 shows an example of a table (1000) of mappings between upsampled or downsampled coefficients, codewords, and Ext-Golomb codes.
[0127] It should be noted that other similar mappings can be devised according to the application and capabilities of the upscaling and downscaling mechanisms available in the video compression technology or standard. In some examples, Table 1 can be appropriately extended to additional values. It should be noted that the values can be represented by entropy coding mechanisms other than Ext-Golomb codes, for example by using binary coding. In one example, entropy coding mechanisms other than Ext-Golomb codes may have certain advantages when the resampling factor is of interest outside the video processing engine (e.g., encoder and decoder), for example by media-aware network elements (MANEs). In some examples, when no resolution change is required (e.g., original / target resolution is 1 in Table 1), a short Ext-Golomb code (e.g., only a single bit as shown in Table 1) can be selected, which may have coding efficiency advantages over, for example, using binary codes in the most general case.
[0128] According to aspects of the present disclosure, a mapping table such as Table 1 may be configurable. For example, the number of entries in Table 1 and the corresponding meanings may be fully or partially configurable. In some examples, a basic outline of the mapping table is conveyed in a high level parameter set such as an SPS or DPS. Alternatively or additionally, in some examples, one or more tables similar to Table 1 may be defined in a video coding technology or standard, and one of the tables may be selected, for example, via an SPS or DPS.
[0129] ARC information, such as upsample or downsample coefficients coded as described above, may be included in a video coding technique or standard syntax. Note that one or more codewords may be used to control other classes of ARC information, such as upsample or downsample filters. In some instances, a relatively large amount of data is required for the filters or other data structures.
[0130] 9, in an example (910) such as H.263 Annex P, the ARC information (912) can be in the form of four warping coordinates and is included in a picture header (911) such as an H.263 PLUSPTYPE (913) header extension. The example (910) can be applied when i) a picture header is available and ii) frequent changes of the ARC information are expected. However, the overhead when using H.263-style signaling as shown in the example (910) can be high, and because of the potentially temporal nature of the picture header, the scaling factors may not be applicable across picture boundaries.
[0131] Referring to FIG. 9, in an example (920) such as JVCET-M135-v1, ARC reference information (925) (e.g., index) can be placed in a PPS (924) and can point to a table (or target resolution table) (926) that contains the target resolutions (e.g., resolutions 1-3). In one example, the table (926) is placed in an SPS (927). Placing the target resolutions in the table (926) in the SPS (927) can be justified by using the SPS as an interoperability negotiation point during capability exchange. The resolution can be changed from one picture to another within the limited set of values in the table (926) (e.g., resolutions 1-3) by reference (e.g., ARC reference information (925)) in the appropriate PPS (924).
[0132] 9 also illustrates additional techniques, such as examples 930, 940, and 950, that may be used to convey ARC information in a video bitstream. These techniques may be used individually or in any suitable combination within the same video coding technology or standard.
[0133] 9, in an example (930), ARC information (939), such as a resampling factor (or zoom factor), may be present in a header, such as a slice header, a GOB header, a tile header, a tile group header, etc. For example, a tile group header (938) is shown in FIG 9. The technique illustrated by the example (930) can be used when the ARC information (939) can be coded with a small number of bits, such as a single variable length ue(v) or a few fixed length codewords.
[0134] According to aspects of the disclosure, having the ARC information (939) directly in a header (e.g., the tile group header (938) of FIG. 9, a slice header, or a tile header) can have the added advantage that the ARC information (939) can be applicable to, for example, a sub-picture represented by a corresponding tile group (or slice, tile) rather than to the entire picture. Additionally, in an example, even if a video compression technology or standard only contemplates whole-picture adaptive resolution changes (as opposed to, for example, tile-group-based adaptive resolution changes), example (930) can have certain advantages over example (910) in terms of error resiliency.
[0135] Referring to FIG. 9, in an example (940), the ARC information (942) may reside within a parameter set (941), such as a PPS, a header parameter set, a tile parameter set, an adaptation parameter set (APS), etc. For example, an APS (941) is illustrated in FIG. 9. In some examples, the scope of the parameter set (941) may not be greater than a picture, and may be, for example, a picture, a tile group, etc. The use of the ARC information (e.g., ARC information (942)) may be implicit through activation of an associated parameter set (e.g., APS (941)). For example, when a video coding technology or standard only considers picture-based ARC, a PPS or equivalent may be appropriate.
[0136] Referring to Figure 9, in an example (950), the ARC reference information (953) may be present in a tile group header (954) or a similar data structure (e.g., a picture header, slice header, tile header, or GOP header), as described above. For example, a tile group header (954) is illustrated in Figure 9. The ARC reference information (953) may reference a subset of the ARC information (955) available in a parameter set (956) that has a scope beyond a single picture, such as an SPS, a DPS, etc. As an example, an SPS (956) is illustrated in Figure 9.
[0137] 11 illustrates some examples of ARC parameter signaling according to some embodiments of the present disclosure. FIG. 11 illustrates examples of syntax diagrams used in video coding standards. In one example, the notation of the syntax diagram loosely follows C-style programming. Bold lines may indicate syntax elements present in the bitstream, while non-bold lines may indicate control flow or variable settings.
[0138] Referring to FIG. 11, the tile group header (1101) includes a syntax structure for a header applicable to a portion (e.g., a rectangular portion) of a picture. In one example, the tile group header (1101) can conditionally include a variable-length Exp-Golomb coded syntax element dec_pic_size_idx (1102) (shown in bold). The presence of a syntax element (e.g., dec_pic_size_idx (1102)) in the tile group header (1101) can be gated based on, for example, an adaptive resolution represented by a flag (e.g., adaptive_pic_resolution_change_flag) (1103). The value of the flag (e.g., adaptive_pic_resolution_change_flag) (1103) is not shown in bold, and thus the flag is present in the bitstream at the point where the flag occurs in the syntax diagram. Whether adaptive resolution is used for a picture or part of a picture can be signaled in a high level syntax structure inside or outside the bitstream (eg, SPS (1110) in FIG. 11).
[0139] Referring to FIG. 11, an excerpt of an SPS (1110) is shown. The SPS (1110) includes a first syntax element (1111) that is a flag (1111) (e.g., adaptive_pic_resolution_change_flag). When the flag (1111) is true, the flag (1111) can indicate the use of adaptive resolution, which may require specific control information. In one example, the specific control information is conditionally present based on the value of the flag (1111), as indicated by the if() statement (1112) in the SPS (1110) and the tile group header (1101).
[0140] As shown in the example of FIG. 11, when adaptive resolution is used, an output resolution (or output picture resolution) (1113) in samples can be coded. In one example, the output resolution (1113) is coded based on a width resolution (e.g., output_pic_width_in_luma_samples) and a height resolution (e.g., output_pic_height_in_luma_samples). A video coding technology or standard can define certain limitations on the value of the output resolution (1113). For example, a level definition may limit the number of total output samples (e.g., the product of output_pic_width_in_luma_samples and output_pic_height_in_luma_samples). In some examples, a video coding technology or standard or an external technology or standard (e.g., a system standard) can limit the numbering range of the width resolution and / or height resolution (e.g., the width resolution and / or height resolution are divisible by a power of 2), the aspect ratio of the width resolution to the height resolution (e.g., the ratio of the width resolution to the height resolution is 4:3 or 16:9), etc. In one example, the above restrictions may be introduced to facilitate hardware implementation.
[0141] In certain applications, the encoder can instruct the decoder to use a particular reference picture size rather than implicitly assuming that size is the output picture size. For example, a syntax element (e.g., reference_pic_size_present_flag) (1114) gates the conditional presence of a reference picture dimension (1115). The reference picture dimension (1115) can include, for example, both a width (e.g., reference_pic_width_in_luma_samples) and a height (e.g., reference_pic_height_in_luma_samples).
[0142] Also shown in FIG. 11 is a table of applicable decodings of picture width and height. In one example, the number of entries in the table can be represented by a table indication (e.g., syntax element num_dec_pic_size_in_luma_samples_minus1) (1116). "minus1" can refer to an interpretation of the value of the syntax element (1116). For example, if the coded value is 0, there is one table entry. If the coded value is 5, there are six table entries. For each entry in the table, the decoded picture width and height are included as syntax elements (1117).
[0143] The table entries represented by the syntax element (1117) can be indexed using the syntax element dec_pic_size_idx (1102) in the tile group header (1101), thus allowing different decoding sizes and zoom factors for each tile group.
[0144] According to one aspect of the present disclosure, certain video coding techniques or standards (e.g., VP9) may enable spatial scalability by implementing a certain form of reference picture resampling in combination with temporal scalability. In one embodiment, reference pictures are upsampled to a higher resolution using ARC-style techniques to form the base of a spatial enhancement layer. The upsampled pictures can be refined using regular prediction mechanisms (e.g., motion compensated prediction for inter-prediction from a reference picture) at higher resolutions, for example to add detail.
[0145] In some examples, values in a network abstraction layer (NAL) unit header, e.g., a time ID field, are used to indicate temporal layer information and also spatial layer information. Using values in the NAL unit header to indicate both temporal and spatial layer information allows existing selected forwarding units (SFUs) to be used for a scalable environment without modification. Existing SFUs can be created and optimized for temporal layer selection forwarding, e.g., based on the time ID value in the NAL unit header. Then, in some examples, existing SFUs can be used for spatial scalability (e.g., spatial layer selection) without modification. In some examples, a mapping between coded picture size and temporal layers indicated by the time ID field in the NAL unit header can be provided.
[0146] According to aspects of the present disclosure, some characteristics of a coded bitstream can be specified using profile, tier, and level (PTL) information, including profile, tier, level, and general constraint information. In some examples, a profile defines a subset of features of a bitstream, such as color reproduction, resolution, additional video compression, etc. A video codec can define various profiles, such as a baseline profile (e.g., a simple profile with a low compression ratio), a high profile (a complex profile with a high compression ratio), and a main profile (e.g., a profile with an intermediate compression ratio between the baseline profile and the high profile can be the default profile setting).
[0147] Additionally, layers and levels can be used to specify certain constraints that define the bitstream in terms of maximum bitrate, maximum luma sample rate, maximum luma picture size, minimum compression ratio, maximum number of slices allowed, maximum number of tiles allowed, etc. Lower layers are more constrained than higher layers, and lower levels are more constrained than higher levels. In one example, a standard may define two layers: Main layer and High layer. The Main layer is a lower layer than the High layer. The layers are created to address different applications in terms of maximum bitrate. In one example, the Main layer is designed for most applications, and the High layer is designed for very demanding applications. A standard can define multiple levels. A level is a set of constraints on the bitstream. In one example, for levels below level 4, only the Main layer is allowed. In some examples, it is required that a decoder conforming to a particular layer / level is able to decode all bitstreams encoded for that layer / level and all lower layers / levels.
[0148] The general constraint information may include constraint information regarding video source type, coding tools, and functionality. For example, the constraint flags may indicate whether inter-coding tools, intra-coding tools, DBF, entropy coding, transforms, partitioning (e.g., tiles, slices), buffer management, random access (e.g., IDR), parameter sets (e.g., SPS, PPS), and / or the like are present or used in the coded video bitstream. The constraint information may be signaled in parameter sets (e.g., SPS, VPS, DCI). The constraint flags may be signaled in high-level syntax structures (e.g., SPS, VPS, DCI).
[0149] According to some aspects of the disclosure, PTL information may be associated with a scope (e.g., a portion of the coded video data in a bitstream). In some examples, PTL information may be specified, for example, for the entire bitstream, the CVS of the bitstream, each output layer set (OLS) of the bitstream, and / or the like, and may be signaled in high-level syntax (HLS) structures such as VPS, DPS, DCI, SPS, PPS, APS, GOP, sequence, header, SEI message, etc.
[0150] In some examples, the high level syntax (HLS) is defined with respect to the block level. Block-level coding tools can be used to decode pixels or samples in a picture to reconstruct the picture. The block-level coding tools can include any suitable coding tools used in the reconstruction of coding blocks, such as coding tools for inter prediction (or inter coding tools), coding tools for intra prediction (or intra coding tools), adaptive loop filters (ALFs), deblocking filters (DBFs), entropy coding, transforms, etc.
[0151] The high level syntax (HLS) may specify information regarding functionality, system interfaces, picture level control of tools and buffer control, etc. For example, the HLS may specify partitions (e.g., tiles, slices, subpictures), buffer management, random access (e.g., IDR, clean random access (CRA)), parameter sets (e.g., VPS, SPS, PPS, APS), reference picture resampling (RPR), scalability, and / or the like. The high level syntax may be above the block level.
[0152] The control information may have an appropriate level, such as SPS-level tool control information, PPS-level tool control information, sequence-level control information, bitstream-level control information, and / or the like. In some examples, the PTL information is part of the control information and may be signaled as a constraint flag in the HLS structure, and may indicate control or constraint of the tools within the scope corresponding to the HLS structure. For example, the constraint flag of the PTL information may be provided in one of the sequence-level control information and the bitstream-level control information. In one example, if certain tools are disabled by the constraint flag in the HLS structure, those tools are not used for coding blocks within the scope corresponding to the HLS, for example.
[0153] 12 and 13 show examples of PTL information according to some embodiments of the present disclosure. Fig. 12 shows an example syntax structure of a set of PTL syntax elements (1200), and Fig. 13 shows an example syntax structure of general constraint information (1300).
[0154] In FIG. 12, the set of PTL syntax elements may include general_profile_idc, general_tier_flag, general_level_idc, num_sub_profiles, general_sub_profile_idc, sublayer_level_present_flag, ptl_alignment_zero_bit, and sublayer_level_idc.
[0155] In FIG. 13, the general constraint information may include multiple constraint flags. In one example, a constraint flag (e.g., intra_only_constraint_flag) (1305) equal to 1 may indicate that the parameter sh_slice_type must be I (i.e., the slice is an intra slice). The parameter sh_slice_type is a parameter in the slice header that specifies the coding type of the slice among types I, P, and B. A constraint flag (e.g., intra_only_constraint_flag) (1305) equal to 0 does not impose a constraint (e.g., sh_slice_type must be I) on all coded pictures within the scope of the PTL information, in which case other information (e.g., profile_idc) may allow non-intra slices. In another example, a constraint flag (e.g., no_alf_constraint_flag) (1306) equal to 1 may indicate that sps_alf_enabled_flag is equal to 0 for all CVSs within the scope of the PTL information, and thus adaptive loop filtering is not used, even if adaptive loop filtering is allowed based on, for example, the profile_idc. A constraint flag (e.g., no_alf_constraint_flag) (1306) equal to 0 does not impose the above constraint.
[0156] In another example, as shown in Fig. 13, a constraint flag (e.g., no_lossless_coding_tool_constraint_flag) (1301) may be signaled in the general constraint information. A constraint flag (e.g., no_lossless_coding_tool_constraint_flag) (1301) equal to 1 may indicate that coding tools related to lossless coding cannot be used within the scope of the PTL information containing the constraint flag (1301). A constraint flag (e.g., no_lossless_coding_tool_constraint_flag) (1301) equal to 0 does not impose the above constraint.
[0157] In another example, as shown in Fig. 13, a constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1302) may be signaled in the general constraint information. A constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1302) equal to 1 may indicate that coding tools related to lossy coding cannot be used within the scope of the PTL information containing the constraint flag (1302). A constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1302) equal to 0 does not impose the above constraint.
[0158] In one embodiment, when a constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1302) is equal to 1, the constraint flag (e.g., no_lossless_coding_tool_constraint_flag) (1301) may not be equal to 1. Alternatively, when a constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1301) is equal to 1, the constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1302) may not be equal to 1.
[0159] Multiple constraint flags in the general constraint information may be sorted in a particular order. The order may be set, for example, based on the likelihood that the respective mechanism or tool is not used within the scope of the PTL. The order may be referred to as a priority. This order may be presented in the syntax structure of the general constraint information from high priority to low priority, where a high priority indicates a high likelihood of the tool (or mechanism) not being used and a low priority indicates a low likelihood of the tool (or mechanism) not being used. Additional factors influencing the order may include tools that are likely to be used only for specific use cases (e.g., tools for sub-picture, scalability, interlace support), the impact of the tool on encoder / decoder / implementation complexity, etc.
[0160] 14A-14B show examples of PTL information, including an example syntax structure (1410) of a PTL syntax structure (also referred to as a PTL bracket) and an example syntax structure (1420) of a general constraint information syntax structure (also referred to as a general constraint information bracket) according to some embodiments of the present disclosure. In some examples, a syntax element indicating the number of constraint flags (e.g., num_available_constraint_flags) can be signaled. In one example, the syntax element indicating the number of constraint flags can be signaled in a PTL syntax structure, such as shown by (1401) in the example syntax (1410) shown in FIG. 14A, which may be outside of the example syntax of the general constraint information bracket (1420). Alternatively, the syntax element indicating the number of constraint flags can be signaled at the beginning of the general constraint information bracket, such as at the beginning of the example syntax (1420). When a syntax element (e.g., num_available_constraint_flags) is present and the value of the syntax element (e.g., num_available_constraint_flags) is equal to N, the first N constraint flags may be present in the general constraint information syntax structure. Additionally, other constraint flags may not be present and may be inferred to be equal to specific values. N may specify a non-negative integer.
[0161] In one embodiment, the value N (e.g., num_available_constraint_flags) ranges from 0 to the maximum number of constraint flags (e.g., the value of the parameter MaxNumConstraintFlags). The maximum number of constraint flags can be any positive integer. The value of the maximum number of constraint flags (e.g., MaxNumConstraintFlags) can be predefined to be 16, 32, 64, 128, etc. When the value N (e.g., num_available_constraint_flags) is equal to 0, no constraint flags are present in the general constraint information syntax structure. The coding of the value N (e.g., num_available_constraint_flags) can be selected such that the value N and the corresponding entropy coding representation of the constraint flags can be added up to a number divisible by 8 to ensure byte alignment.
[0162] In some examples, the constraint flags can be classified into one or more constraint information groups. Each constraint information group can include one or more constraint flags and can have a corresponding gate flag. The gate flag of the corresponding constraint information group can indicate whether a constraint flag may exist in the corresponding constraint information group. In one example, the gate flag can be referred to as a constraint group existence flag. In general, the gate flag is associated with the corresponding constraint information group and associated with the constraint flag in the corresponding constraint information group. In one embodiment, the gate flag gates whether a constraint flag in the corresponding constraint information group exists (or is signaled) in the constraint information. For example, if the gate flag of the corresponding constraint information group is equal to 1, the constraint flag corresponding to the constraint information group can exist, for example, in the general constraint information. If the gate flag of the corresponding constraint information group is equal to 0, the constraint flag corresponding to the constraint information group cannot exist, for example, in the general constraint information. For example, if all gate flags are equal to 0, no constraint flag exists.
[0163] Constraint flags can have different scopes. For example, the scope of a constraint flag in a DCI can be the coded video bitstream. The scope of a constraint flag in a VPS can be a CLVS with multiple layers. The scope of a constraint flag in an SPS can be a single CLVS.
[0164] 15A-15B show an example of a general constraint information syntax structure 1500 according to an embodiment of the present disclosure. The general constraint information syntax structure 1500 includes a flag that indicates general constraint information. Specifically, the general constraint information syntax structure (1500) includes one or more gate flags, such as a gate flag (e.g., general_frame_structure_constraint_group_flag) (1501), a gate flag (e.g., high_level_functionality_constraint_group_flag) (1502), a gate flag (e.g., scalability_constraint_group_flag) (1503), a gate flag (e.g., partitioning_constraint_group_flag) (1504), a gate flag (e.g., intra_coding_tool_constraint_group_flag) (1505), a gate flag (e.g., inter_coding_tool_constraint_group_flag) (1506), a gate flag (e.g., transform_contraint_group_flag) (1507), and a gate flag (e.g., inloop_filtering_constraint_group_flag) (1508) in FIG. 15A. One or more gate flags (eg, gate flags (1501)-(1508)) may be present at the beginning of the general constraint information syntax structure (1500) as shown in FIG. 15A.
[0165] A gate flag (e.g., general_frame_structure_constraint_group_flag) (1501) is associated with a constraint information group (1510) and is associated with the constraint flags (1511)-(1514) within the constraint information group (1510). A gate flag (e.g., general_frame_structure_constraint_group_flag) (1501) equal to 1 can specify that the constraint flags (1511)-(1514) within the constraint information group (1510) may be present.
[0166] The constraint information group (1510) (or constraint flags (1511)-(1514)) may relate to an input source and a frame packing (e.g., packed or projected frame). Referring to FIG. 15A, the constraint flags (1511)-(1514) correspond to the general_non_packed_constraint_flag (1511), the general_frame_only_constraint_flag (1512), the general_non_projected_constraint_flag (1513), and the general_one_picture_only_constraint_flag (1514). Otherwise, a gate flag (e.g., the general_frame_structure_constraint_group_flag) (1501) equal to 0 may specify that the constraint flags (1511)-(1514) in the constraint information group (1510) may not be present in the general constraint information syntax structure (1500).
[0167] Additionally, in some examples, a gating flag (e.g., high_level_functionality_constraint_group_flag) (1502) equal to 1 may specify that constraint flags related to high level functionality (e.g., reference picture resampling) within the constraint information group (1520) may be present, as shown by Figure 15B. Otherwise, a gating flag (e.g., high_level_functionality_constraint_group_flag) (1502) equal to 0 may specify that constraint flags within the constraint information group (1520) may not be present within the general constraint information syntax structure (1500).
[0168] Returning to Figure 15A, a gate flag (e.g., scalability_constraint_group_flag) (1503) equal to 1 may specify that constraint flags related to scalability (e.g., inter-layer prediction) may be present. Otherwise, constraint flags related to scalability may not be present in the general constraint information syntax structure (1500).
[0169] A gate flag (e.g., partitioning_constraint_group_flag) (1504) equal to 1 may specify that constraint flags related to high-level partitioning (e.g., subpicture or tile) may be present. Otherwise, constraint flags related to high-level partitioning may not be present in the general constraint information syntax structure (1500).
[0170] A gate flag (e.g., intra_coding_tool_constraint_group_flag) (1505) equal to 1 may specify that constraint flags related to intra-coding (e.g., intra-prediction) may be present. Otherwise, constraint flags related to intra-coding may not be present in the general constraint information syntax structure (1500).
[0171] A gate flag (e.g., inter_coding_tool_constraint_group_flag) (1506) equal to 1 may specify that constraint flags related to inter-coding (e.g., motion compensation for intra-picture prediction) may be present. Otherwise, constraint flags related to inter-coding may not be present in the general constraint information syntax structure (1500).
[0172] A gate flag (e.g., transform_contraint_group_flag) (1507) equal to 1 can specify that constraint flags related to transform coding (e.g., multiple transform matrices) may be present. Otherwise, constraint flags related to transform coding may not be present in the general constraint information syntax structure (1500).
[0173] In one embodiment, when all gate flags (eg, gate flags (1501)-(1508) in FIG. 15A) are equal to 0, no constraint flags are present in the general constraint information syntax structure (eg, general constraint information syntax structure (1500)).
[0174] According to aspects of the present disclosure, the syntax can be designed such that the control information, including gate flags (e.g., gate flags (1501)-(1508)), associated constraint flags (e.g., constraint flags (1511)-(1512), constraint flags in the constraint information group (1520)), additional control information, and / or the like, can be byte aligned, e.g., the number of flags is divisible by 8 to maintain byte alignment. In one example, the number of gate flags and constraint flags in the constraint information (e.g., general constraint information syntax structure (1500)) is divisible by 8. Byte alignment mechanisms can be used to achieve byte alignment of the control information. Referring to FIG. 15B, a syntax (e.g., a while loop) (1530) can be used for byte alignment.
[0175] In some embodiments, offset information, such as an offset (e.g., using syntax element constraint_info_offset[]) and length information, such as a length (e.g., using syntax element constraint_info_length[]), are present in the constraint information (e.g., at the beginning of the general constraint information syntax structure) to help indicate the constraint flags in each constraint information group that are associated with the gating flags in the constraint information. In one embodiment, one or more of the at least one constraint information group are present in the coded video bitstream. For a constraint information group, an offset and a length may be present in the constraint information of the constraint information group. The offset may indicate an offset to the first constraint flag of the constraint information group, and the length may indicate the number of constraint flags of the constraint information group. In some examples, the number of constraint information groups may be explicitly indicated, for example, by the syntax element num_constraint_info_set. The value of num_constaint_info_set may be an integer equal to or greater than 0. When the value of num_constaint_info_set is 0, constraint_info_offset[], constraint_info_length[], and constraint flags are not present in the general constraint information syntax structure.
[0176] In one embodiment, the constraint information offset (e.g., syntax element constraint_info_offset[i]) and the constraint information length (e.g., syntax element constraint_info_length[i]) can help present the constraint flags of the constraint information group i (i is a positive integer) in the constraint information (e.g., general constraint information syntax structure). For example, when the value of the constraint information offset (e.g., syntax element constraint_info_offset[i]) is equal to 5 and the value of the constraint information length (e.g., syntax element constraint_info_length[i]) is equal to 3, the fifth, sixth and seventh constraint flags are associated with the constraint information group i and are present in the constraint information (e.g., general constraint information syntax structure).
[0177] In one example, run-length coding may be used to code the constraint flags specified in a predetermined order (or a given order).
[0178] In one embodiment, run-coding can be used, where the constraint flags are specified in a pre-determined order (or a given order). Instead of coding the constraint flags directly, a suitably coded list of "skip" values can indicate a constraint flag equal to 0, meaning that the next constraint flag is equal to 1. The above-mentioned run-coding can be particularly efficient when (i) the number of constraint flags is large and (ii) a small percentage of the constraint flags are equal to 1.
[0179] In one embodiment, one or more of the at least one constraint information group are present in the coded video bitstream. The constraint flags in the one or more of the at least one constraint information group are signaled according to a predetermined order. Thus, the constraint flags can be run coded (e.g., run encoded or run decoded). Furthermore, prediction information for a subset of coding blocks can be determined based on the constraint flags.
[0180] In one embodiment, at least one constraint flag in the constraint information group of the gate flag includes multiple constraint flags that are signaled according to a predetermined order, and thus the multiple constraint flags can be run coded (e.g., run encoded or run decoded).
[0181] In one embodiment, the complete list of constraint flags may be specified in a video coding standard (e.g., the VVC specification), an external table, etc. In one example, only available constraint flags of the constraint flags are indicated, for example, by one or more of the following: the number of available constraint flags (e.g., num_available_constraint_flags), a gating flag (or constraint group present flag), constraint information offset information, and constraint information length information, etc., present in the coded video stream.
[0182] In one example, a complete list of constraint flags is specified and available to the encoder and the decoder. The complete list of constraint flags can be stored in the decoder. The complete list of constraint flags can include 100 constraint flags. Ten of the 100 constraint flags are present in the constraint information of the CLVS and are therefore available to a subset of coding blocks in the CLVS. The ten of the 100 constraint flags are referred to as the ten available constraint flags. In one example, the number of available constraint flags (e.g., ten) is signaled. In one example, the ten available constraint flags are in two constraint information groups and are gated by a first gate flag and a second gate flag. Thus, the first gate flag and the second gate flag can be signaled to indicate the ten available constraint flags.
[0183] In one example, a first constraint information offset (e.g., syntax element constraint_info_offset[0]) and a first constraint information length (e.g., syntax element constraint_info_length[0]) are signaled. A second constraint information offset (e.g., syntax element constraint_info_offset[1]) and a second constraint information length (e.g., syntax element constraint_info_length[1]) are signaled. For example, the syntax element constraint_info_offset[0] is 15, the syntax element constraint_info_length[0] is 3, the syntax element constraint_info_offset[1] is 82, and the syntax element constraint_info_length[1] is 7, thus indicating that the 15th to 17th constraint flags and the 82nd to 88th constraint flags in the complete list (e.g., 100 constraint flags) are available or present in the constraint information.
[0184] In one embodiment, any of a variety of techniques (or methods, embodiments, examples) for efficiently coding the constraint flags can be combined with appropriate control information. The combination can be any suitable combination of two or more of such techniques. Alternatively, one of the various techniques (or methods, embodiments, examples) can be used alone. The constraint flags can be grouped. In certain groups, run coding can be used while other groups may use simple binary coding.
[0185] The value of the maximum number of constraint flags (eg, MaxNumConstraintFlags) can be predefined to be 16, 32, 64, 128, and so on.
[0186] The value of the maximum number of constraint flags (e.g., MaxNumConstraintFlags) can be determined by profile information such as general_profile_idc and general_sub_profile_idc or codec version information, so that the range of the number of constraint flags (e.g., num_available_constraint_flags (1401)) can be limited by the profile information or version information. For example, the value of the number of constraint flags (e.g., num_available_constraint_flags (1401)) in the main profile (e.g., MaxNumConstraintFlags=64) can be in the range of 0 to 64, and the value of the number of constraint flags (e.g., num_available_constraint_flags (1401)) in the advanced profile (e.g., MaxNumConstraintFlags=128) can be in the range of 0 to 128, for example.
[0187] In one embodiment, the value of the number of constraint flags (e.g., num_available_constraint_flags) can be inferred to be equal to a value predefined by profile information such as general_profile_idc and general_sub_profile_idc or codec version information, such that the value of num_available_constraint_flags can be determined without explicit signaling.
[0188] In some embodiments, reserved byte information may be present in the general constraint information syntax structure. For example, as shown in FIG. 13, flags gci_num_reserved_bytes (1303) and gci_reserved_bytes[] (1304) may be present in the general constraint information syntax structure for extension of the general constraint information syntax structure. The flag gci_num_reserved_bytes may specify the number of reserved constraint bytes. In one example, the reserved constraint bytes are for signaling additional flags (e.g., additional constraint flags). The flag gci_reserved_byte[] may have any suitable value.
[0189] In one embodiment, the value of gci_num_reserved_bytes may be limited or determined by profile information such as general_profile_idc and general_sub_profile_idc or codec version information. In the base profile (or main profile), the value of the flag gci_num_reserved_bytes may be 0. In the extended profile (or advanced profile), the value of gci_num_reserved_bytes may be greater than 0.
[0190] In some embodiments, a field sequence flag may be signaled in the coded video bitstream. The field sequence flag may indicate whether a picture of an output layer is coded with field coding. In some examples, the field sequence flag may be signaled in the SPS using the syntax element sps_field_seq_flag. In one embodiment, the flag sps_field_seq_flag may be present in the SPS. The flag sps_field_seq_flag equal to 1 may indicate that the CLVS conveys a picture representing a field. The flag sps_field_seq_flag equal to 0 may indicate that the CLVS conveys a picture representing a frame.
[0191] In the general constraint information syntax structure of FIG. 13, there may be a flag general_frame_only_constraint_flag. The flag general_frame_only_constraint_flag equal to 1 may specify that the scope of the output layer set (e.g., OlsInScope) conveys pictures that represent frames. The flag general_frame_only_constraint_flag equal to 0 specifies that the scope of the output layer set (e.g., OlsInScope) conveys pictures that may or may not represent frames. In one embodiment, the flag general_frame_only_constraint_flag indicates whether the pictures in the output layer set are coded with field coding. The output layer set may include a subset of coding blocks. The flag sps_field_seq_flag may be false based on the flag general_frame_only_constraint_flag (e.g., 1) indicating that the subset of pictures is not coded with field coding. The subset of pictures may be within one layer of the output layer set.
[0192] When the flag general_frame_only_constraint_flag is equal to 1, the value of the flag sps_field_seq_flag may be equal to 0.
[0193] In one embodiment, the flag pps_mixed_nalu_types_in_pic_flag may be present in the PPS. The flag pps_mixed_nalu_types_in_pic_flag equal to 1 may specify that each picture that references the PPS has two or more VCL NAL units, and the VCL NAL units do not have the same nal_unit_type value. The flag pps_mixed_nalu_types_in_pic_flag equal to 0 may specify that each picture that references the PPS has one or more VCL NAL units, and the VCL NAL units of each picture that references the PPS have the same nal_unit_type value. The flag no_mixed_nalu_types_in_pic_constraint_flag may be present in the general constraint information syntax structure of FIG. 13. The flag no_mixed_nalu_types_in_pic_constraint_flag equal to 1 may specify that the value of pps_mixed_nalu_types_in_pic_flag should be equal to 0. The flag no_mixed_nalu_types_in_pic_constraint_flag equal to 0 does not impose such a constraint.
[0194] In one embodiment, the flag general_one_picture_only_constraint_flag may be present in the general constraint information syntax structure as shown in Figure 13. A flag general_one_picture_only_constraint_flag equal to 1 may specify that there is only one picture coded in the bitstream. A flag general_one_picture_only_constraint_flag equal to 0 does not impose such a constraint.
[0195] In one embodiment, the flag single_layer_constraint_flag may be present in the general constraint information syntax structure as shown in Figure 13. The flag single_layer_constraint_flag equal to 1 may specify that sps_video_parameter_set_id should be equal to 0. The flag single_layer_constraint_flag equal to 0 does not impose such constraint. When the flag general_one_picture_only_constraint_flag is equal to 1, the value of the flag single_layer_constraint_flag may be equal to 1.
[0196] In one embodiment, the flag all_layers_independent_constraint_flag may be present in the general constraint information syntax structure as shown in Figure 13. The flag all_layers_independent_constraint_flag equal to 1 may specify that the flag vps_all_independent_layers_flag may be equal to 1. The flag all_layers_independent_constraint_flag equal to 0 does not impose such constraint. When the flag single_layer_constraint_flag is equal to 1, the value of the flag all_layers_independent_constraint_flag may be equal to 1.
[0197] In one embodiment, the flag no_res_change_in_clvs_constraint_flag may be present in the general constraint information syntax structure as shown in Figure 13. The flag no_res_change_in_clvs_constraint_flag equal to 1 may specify that the flag sps_res_change_in_clvs_allowed_flag may be equal to 0. The flag no_res_change_in_clvs_constraint_flag equal to 0 does not impose such a constraint. When the flag no_ref_pic_resampling_constraint_flag is equal to 1, the value of the flag no_res_change_in_clvs_constraint_flag may be equal to 1.
[0198] In one embodiment, the flag no_mixed_nalu_types_in_pic_constraint_flag may be present in the general constraint information syntax structure of Figure 13. The flag no_mixed_nalu_types_in_pic_constraint_flag equal to 1 specifies that the value of the flag pps_mixed_nalu_types_in_pic_flag may be equal to 0. The flag no_mixed_nalu_types_in_pic_constraint_flag equal to 0 does not impose such a constraint. When the flag one_subpic_per_pic_constraint_flag is equal to 1, the value of the flag no_mixed_nalu_types_in_pic_constraint_flag may be equal to 1.
[0199] In one embodiment, the flag no_trail_constraint_flag may be present in the general constraint information syntax structure of Figure 13. The flag no_trail_constraint_flag equal to 1 may specify that there may be no NAL units with nuh_unit_type equal to TRAIL_NUT present within OlsInScope (OlsInScope is an output layer set that includes all layers in the entire bitstream that references the DPS). The flag no_trail_constraint_flag equal to 0 does not impose such constraint. The flag no_trail_constraint_flag may be equal to 1 when the flag general_one_picture_only_constraint_flag is equal to 1.
[0200] In one embodiment, the flag no_stsa_constraint_flag may be present in the general constraint information syntax structure of Figure 13. The flag no_stsa_constraint_flag equal to 1 may specify that there may be no NAL units with nuh_unit_type equal to STSA_NUT present in OlsInScope. The flag no_stsa_constraint_flag equal to 0 does not impose such constraint. The flag no_stsa_constraint_flag may be equal to 1 when the flag energal_one_picture_only_constraint_flag is equal to 1.
[0201] In one embodiment, the flag no_trail_constraint_flag may be present in the general constraint information syntax structure of Figure 13. The flag no_trail_constraint_flag equal to 1 may specify that there may be no NAL units with nuh_unit_type equal to TRAIL_NUT present in OlsInScope. The flag no_trail_constraint_flag equal to 0 does not impose such constraint. The flag no_trail_constraint_flag may be equal to 1 when the flag general_one_picture_only_constraint_flag is equal to 1.
[0202] In one embodiment, the flag no_stsa_constraint_flag may be present in the general constraint information syntax structure of Figure 13. The flag no_stsa_constraint_flag equal to 1 may specify that there may be no NAL units with nuh_unit_type equal to STSA_NUT present in OlsInScope. The flag no_stsa_constraint_flag equal to 0 does not impose such constraint. The flag no_stsa_constraint_flag may be equal to 1 when the flag general_one_picture_only_constraint_flag is equal to 1.
[0203] In one embodiment, the flag no_idr_constraint_flag may be present in the general constraint information syntax structure as shown in Figure 13. no_idr_constraint_flag equal to 1 may specify that there may be no NAL units with nuh_unit_type equal to IDR_W_RADL or IDR_N_LP present in OlsInScope. no_idr_constraint_flag equal to 0 does not impose such constraint.
[0204] In one embodiment, the flag no_cra_constraint_flag may be present in the general constraint information syntax structure as shown in Figure 13. The flag no_cra_constraint_flag equal to 1 may specify that there may be no NAL units with nuh_unit_type equal to CRA_NUT present in OlsInScope. The flag no_cra_constraint_flag equal to 0 does not impose such a constraint.
[0205] In one embodiment, the flag no_rasl_constraint_flag may be present in the general constraint information syntax structure of FIG. 13 (flag no_rasl_constraint_flag is not shown). The flag no_rasl_constraint_flag equal to 1 may specify that there may be no NAL units with nuh_unit_type equal to RASL_NUT present in OlsInScope. The flag no_rasl_constraint_flag equal to 0 does not impose such constraint. When the flag no_cra_constraint_flag is equal to 1, the value of the flag no_rasl_constraint_flag may be equal to 1.
[0206] In one embodiment, the flag no_radl_constraint_flag may be present in the general constraint information syntax structure as shown in Figure 13. The flag no_radl_constraint_flag equal to 1 may specify that there may be no NAL units with nuh_unit_type equal to RADL_NUT present in OlsInScope. The flag no_radl_constraint_flag equal to 0 does not impose such constraint. When the flag no_idr_constraint_flag is equal to 1 and the flag no_cra_constraint_flag is equal to 1, the value of the flag no_rasl_constraint_flag may be equal to 1.
[0207] Some aspects of the present disclosure provide techniques for constraint flag signaling for range extension, such as range extension with residual Rice coding extension.
[0208] According to an aspect of the present disclosure, the residual coding can be performed based on Rice coding. Rice coding uses an adjustable parameter to split an input value into two parts and code the two parts using different coding techniques. The adjustable parameter is called a Rice parameter in some examples. The Rice parameter can affect the coding efficiency of the Rice coding. Techniques can be used to determine the Rice parameter for a particular application to improve the coding efficiency of the particular application. Some techniques for determining the Rice parameter can be included in the range extension of the video standard.
[0209] According to aspects of the present disclosure, some standards may be initially developed for a specific application. To make the standard applicable to other applications, range extensions are developed with tools to support other applications. For example, HEVC initially targets applications with 4:2:0 chroma formats with 8-10 bits per sample. To make the standard applicable to other formats and bit depths than the specific chroma format and the specific bit depth, range extensions may be developed to support applications using other chroma formats and / or higher bit depths.
[0210] To limit the feature set to what is needed for a particular group of applications, video coding standards define profiles, which may include a defined set of decoder features that should be supported for interoperability with encoders that use these features. For example, a profile may define a set of coding tools or algorithms that can be used in generating a compliant bitstream. In addition to profiles, some standards (e.g., VVC, HEVC, etc.) also define levels and tiers. Levels impose limitations on the bitstream in terms of spatial resolution, pixel rate, bitrate values, and variations that may correspond to decoder processing load and memory capabilities. Level limitations may be expressed in terms of maximum sample rate, maximum picture size, maximum bitrate, minimum compression ratio, capacity of coded picture buffer, etc. Higher level values may correspond to higher complexity limits. Tiers vary bitrate values and variation limits for each level. For example, the Main tier is intended for most applications, while the High tier is designed to address more demanding video contribution applications that may have significantly higher bitrate values than video distribution applications. Each profile, tier and level impacts implementation and decoding complexity, and the combination of the three specifies the interoperability point of bitstreams and decoders.
[0211] In some examples, a decoder that conforms to a particular hierarchy and level must be able to decode all bitstreams that conform to the same hierarchy or lower hierarchy or any level below that level, and a decoder that conforms to a particular profile may support all features in that profile. In some examples, an encoder need not use any particular set of features supported in a profile, but must generate a conforming bitstream, i.e., a bitstream that obeys specified constraints that allow it to be decoded by a conforming decoder.
[0212] In addition to the PTL information, the PTL syntax structure may also include a general constraint information (GCI) syntax structure, which contains a list of constraint flags and non-flag syntax elements that indicate specific constraint properties of the bitstream.
[0213] In one example, HEVC initially includes three profiles called Main Profile, Main 10 Profile, and Main Still Picture Profile. The three profiles have some limitations, such as only supporting 4:2:0 chroma sampling. The Main Profile and Main Still Picture Profile only support 8 bits of video precision per sample, while the Main 10 Profile supports up to 10 bits per sample. The Main Still Picture Profile contains only one coded picture in the entire bitstream.
[0214] In some examples, HEVC with range extension can support additional profiles. In one example, the following profiles are collectively referred to as range extension profiles: Monochrome profile, Monochrome 10 profile, Monochrome 12 profile, Monochrome 16 profile, Main 12 profile, Main 4:2:2 10 profile, Main 4:2:2 12 profile, Main 4:4:4 profile, Main 4:4:4 10 profile, Main 4:4:4 12 profile, Main Intra profile, Main 10 Intra profile, Main 12 Intra profile, Main 4:2:2 10 Intra profile, Main 4:2:2 12 Intra profile, Main 4:4:4 Intra profile, Main 4:4:4 10 Intra profile, Main 4:4:4 12 Intra profile, Main 4:4:4 16 Intra profile, Main 4:4:4 Still image profile, Main 4:4:4 16 Still image profile.
[0215] Some of the range extension profiles can support higher bit depths and can be referred to as high bit depth operation range extensions profiles. In some examples, high bit depth operation range extension profiles include profiles supporting more than 10 bits per sample, such as the Main 12 profile, the Main 12 4:4:4 profile, the Main 16 4:4:4 profile, the Main 12 Intra profile, the Main 12 4:4:4 Intra profile, the Main 16 4:4:4 Intra profile, the Main 12 Still Image profile, the Main 12 4:4:4 Still Image profile, the Main 16 4:4:4 Still Image profile, etc.
[0216] Specifically, the Main 12 profile supports 4:0:0 and 4:2:0 chroma sampling in both intra and inter prediction modes, allowing bit depths from 8 to 12 bits per sample. In some examples, a decoder conforming to the Main 12 profile is capable of decoding bitstreams created with the following profiles: Monochrome, Monochrome 12, Main, Main 10, and Main 12 profiles.
[0217] The Main 12 4:4:4 profile supports 4:0:0, 4:2:0, 4:2:2 and 4:4:4 chroma sampling and both intra and inter prediction modes, allowing bit depths from 8 to 12 bits per sample. In some examples, a decoder conforming to the Main 12 4:4:4 profile is capable of decoding bitstreams created with the following profiles: Monochrome, Main, Main 10, Main 12, Main 10 4:2:2, Main 12 4:2:2, Main 4:4:4, Main 10 4:4:4, Main 12 4:4:4 and Monochrome 12 profiles.
[0218] The Main16 4:4:4 profile supports 4:0:0, 4:2:0, 4:2:2 and 4:4:4 chroma sampling and both intra and inter prediction modes, allowing bit depths from 8 to 16 bits per sample.
[0219] The Main 12 Intra profile supports 4:0:0 and 4:2:0 chroma sampling, intra prediction modes, and allows bit depths from 8 to 12 bits per sample.
[0220] The Main12 4:4:4 Intra profile supports 4:0:0, 4:2:0, 4:2:2 and 4:4:4 chroma sampling and intra prediction modes, allowing bit depths from 8 to 12 bits per sample.
[0221] The Main16 4:4:4 Intra profile supports 4:0:0, 4:2:0, 4:2:2 and 4:4:4 chroma sampling and intra prediction modes, allowing bit depths from 8 to 16 bits per sample.
[0222] The Main 12 still profile supports 4:0:0 and 4:2:0 chroma sampling and allows bit depths from 8 to 12 bits per sample. In the Main 12 still profile, the entire bitstream contains only one coded picture.
[0223] The Main 12 4:4:4 Still Image profile supports 4:0:0, 4:2:0, 4:2:2 and 4:4:4 chroma sampling, allowing bit depths from 8 to 12 bits per sample. In the Main 12 4:4:4 Still Image profile, the entire bitstream contains only one coded picture.
[0224] The Main 16 4:4:4 Still Image profile supports 4:0:0, 4:2:0, 4:2:2 and 4:4:4 chroma sampling, allowing bit depths from 8 to 16 bits per sample. In the Main 16 4:4:4 Still Image profile, the entire bitstream contains only one coded picture.
[0225] According to some aspects of the disclosure, the coding tool control may be performed at various scopes (e.g., a portion of the coded video data coded with persistence of instances of syntax elements for coding tool control), such as a bitstream scope, a coded layered video sequence (CLVS) scope, a picture, a slice of a picture, etc. In some examples, the coding tool control may be provided in a general constraint information (GCI) syntax structure that generally includes constraint information of a bitstream that conveys an output layer set to a decoder. In some examples, the coding tool control may be provided in a sequence parameter set (SPS) associated with a CLVS, where the SPS generally includes information of the CLVS. In some examples, the coding tool control may be provided in a picture header of a picture, where the picture header generally includes information of the picture. In some examples, the coding tool control may be provided in a slice header of a slice, where the slice header generally includes information of the slice.
[0226] According to an aspect of the present disclosure, control information of coding tools in range extension can be provided in various ranges. In some examples, using a syntax element with a larger range can improve coding efficiency. For example, a value of a GCI syntax element greater than 0 indicates that the bitstream is constrained in a particular way, typically indicating that a particular coding tool is not used in the bitstream. Furthermore, a value of a GCI syntax element equal to the value 0 signals that the associated constraint may not be applied, such that the associated coding tool is allowed (but not required) to be used in the bitstream (if its use is supported in the indicated profile).
[0227] According to another aspect of the present disclosure, when a coding tool is not used in coding video data in a bitstream, e.g., the PTL information and / or general constraint information indicate non-use of the coding tool, a video decoder without support for the coding tool may determine that the video decoder is capable of decoding the bitstream based on the signaling in the PTL information and / or general constraint information, thereby extending the functionality of the video decoder.
[0228] In some embodiments, an encoder may generate a bitstream that complies with a video standard with range extension, but does not use one or more features supported in the range extension. In some examples, a decoder that complies with the video standard but does not support one or more features in the range extension may determine that it is capable of decoding the bitstream if non-use of one or more features in the range extension is known, and may accept the bitstream for decoding instead of rejecting the bitstream.
[0229] FIG. 16 illustrates a syntax structure (1600) for general constraint information according to some embodiments of the present disclosure. In some examples, the syntax structure (1600) includes constraints that are applied to a bitstream, such as a bitstream that includes an output layer set to a decoder. In the example of FIG. 16, the syntax element indicated by gci_num_additional_bits of the syntax structure (1600) is used to specify the number of additional general constraint information (GCI) bits in the general constraint information syntax structure (1600) other than the alignment zero bit syntax element (if present). Some standards require that the value of gci_num_additional_bits be equal to 0 or 1. In some standards, a decoder may allow a value of gci_num_additional_bits greater than 1 to appear in the syntax structure.
[0230] In the example of Figure 16, the syntax structure (1600) includes five additional GCI bits (syntax elements) (1601)-(1605) indicated by general_no_extended_precision_constraint_flag, general_no_ts_residual_coding_rice_present_in_sh_constraint_flag, general_no_rrc_rice_extension_constraint_flag, general_no_persistent_rice_adaptation_constraint_flag, and general_no_reverse_last_sig_coeff_constraint_flag. Each of the five additional GCI bits (1601)-(1605) provides coding control information for a coding tool in the scope of an output layer set bitstream, in some examples.
[0231] FIG. 17 illustrates an example of a syntax structure (1700) for a sequence parameter set (SPS) range extension according to some embodiments of the present disclosure. The syntax structure (1700) may be added to the SPS of a CLVS to provide coding tool control of the CLVS range extension. The syntax structure (1700) includes five syntax elements (1701)-(1705) indicated by sps_extended_precision_flag, sps_ts_residual_coding_rice_present_in_sh_flag, sps_rrc_rice_extension_flag, sps_persistent_rice_adaptation_enabled_flag, and sps_reverse_last_sig_coeff_enabled_flag. The five syntax elements (1701)-(1705) provide coding control information for coding tools within the scope of the CLVS in some examples.
[0232] Specifically, in one embodiment, the GCI bits (1601) and syntax elements (1701) provide control to use extended precision, such as control of extended dynamic range coding tools for transform coefficients in the scaling and transformation process, as well as for binarization of some syntax elements, such as abs_remainder[] and dec_abs_level[], in different ranges.
[0233] A syntax element (1701) equal to 1 specifies that the extended dynamic range is used for the transform coefficients in the scaling and transform process and for binarization of some syntax elements such as abs_remainder[] and dec_abs_level[]. The syntax element abs_remainder[scanning position n] is the absolute value of the remainder of the transform coefficient level coded with a Golomb-Rice code at the scan position n. When abs_remainder[] is not present, it is inferred to be equal to 0. The syntax element dec_abs_level[scanning position n] may correspond to an intermediate value coded with a Golomb-Rice code at the scan position n, and is used to determine the level of the transform coefficient at the scan position n. A syntax element (1701) equal to 0 specifies that the extended dynamic range is not used in the scaling and transform process and is not used for binarization such as the syntax elements abs_remainder[] and dec_abs_level[]. When not present, the value of the syntax element (1701) is inferred to be equal to 0.
[0234] In one example, a variable denoted by Log2TransformRange is used to determine the dynamic range for the transform coefficients in the scaling and transform process and for the binarization of a particular syntax element. For example, the variable Log2TransformRange may be the number of bits to represent the transform coefficients in the scaling and transform process and for the binarization of a particular syntax element. The dynamic range may be the difference between the maximum and minimum numbers represented using the number of bits. In one example, the variable Log2TransformRange is derived according to the syntax element (1701) sps_extended_precision_flag, for example using equation (1): Log2TransformRange = sps_extended_precision_flag ? Max( 15, Min( 20, BitDepth + 6 ) ) : 15 Equation (1)
[0235] The dynamic range for the transform coefficients in the scaling and transform process and the binarization of a particular syntax element may be determined based on the variable Log2TransformRange. In some examples, when the flag sps_extended_precision_flag has a value of 0, the extended dynamic range function (e.g., the coding tool of the extended dynamic range) is not used, and the dynamic range of the transform coefficients is based on a fixed number of bits, such as 15 bits. When the flag sps_extended_precision_flag has a value of 1, the extended dynamic range function is enabled, and the number of bits representing the transform coefficients in the scaling and transform process may be one of 15 bits, 16 bits, 17 bits, 18 bits, 19 bits, and 20 bits based on the bit depth BitDepth in the example of Equation (1). The dynamic range of the transform coefficients may be determined based on the number of bits.
[0236] According to one aspect of the present disclosure, a syntax element (e.g., as indicated by sps_bitdepth_minus8) may be used to signal the bit depth of the samples of the luma and chroma arrays (e.g., as indicated by BitDepth) and the value of the luma and chroma quantization parameter range offset (e.g., as indicated by QpBdOffset). In one example, the bit depth BitDepth may be calculated according to equation (2), and the QP range offset QpBdOffset may be calculated according to equation (3): BitDepth = 8 + sps_bitdepth_minus8 Formula (2) QpBdOffset = 6 × sps_bitdepth_minus8 Equation (3)
[0237] In some examples, a GCI bit (1601) equal to 1 specifies that the syntax element (1701) of all pictures in the scope (OlsInScope) of the output layer set may be equal to 0. A GCI bit (1601) equal to 0 imposes no such constraint. Thus, a GCI bit (1601) equal to 1 can specify non-use of extended dynamic range coding tools in coding the bitstream.
[0238] In some embodiments, the GCI bits (1602) and syntax elements (1702) are used to provide control of coding tools for slice-based Rice coding for residual coding in transform skip mode, such as slice-based Rice parameter selection for residual coding in transform skip mode, at different ranges.
[0239] According to one aspect of the present disclosure, slice-based Rice parameter selection for transform skip residual coding may be included in a range extension of a video standard. In some examples, as shown in FIG. 17, when transform skip mode is enabled (e.g., syntax element sps_tranform_skip_enabled_flag is true), one control flag (e.g., indicated by sps_ts_residual_coding_rice_present_in_sh_flag syntax element (1702)) is signaled in a sequence parameter set (SPS) to indicate that signaling of Rice parameters of transform skip slices is enabled or disabled.
[0240] When the control flag is signaled as enabled (e.g., equal to "1"), one syntax element (e.g., indicated by sh_ts_residual_coding_rice_idx_minus1) is further signaled for each transform skip slice, e.g., in the slice header, to indicate the Rice parameter selection for that transform skip slice. When the control flag is signaled as disabled (e.g., equal to "0"), no further syntax element is signaled at the slice level (e.g., slice header) to indicate the Rice parameter selection for the transform skip slice, and in one example, a default Rice parameter may be used for all transform skip slices in the coded video data that references the SPS.
[0241] For example, a syntax element (1702) equal to 1 in an SPS specifies that the slice header flag indicated by sh_ts_residual_coding_rice_idx_minus1 may be present in the slice header (e.g., slice_header()) syntax structure of the slice that references the SPS. A syntax element (1702) equal to 0 in an SPS specifies that the slice header flag sh_ts_residual_coding_rice_idx_minus1 is not present in the slice_header() syntax structure of the slice that references the SPS. When not present, the value of sps_ts_residual_coding_rice_present_in_sh_flag is inferred to be equal to 0 in some instances.
[0242] In some examples, a syntax element may be included in the general constraint information to control the use of a coding tool of slice-based Rice coding for residual coding in transform skip mode within the scope of an output layer set. For example, a syntax element (1602) equal to 1 specifies that the syntax element (1702) of all pictures within the scope (OlsInScope) of the output layer set may be equal to 0. A syntax element (1602) equal to 0 does not impose such a constraint. Thus, in some examples, a GCI bit (1602) equal to 1 in a bitstream may specify non-use of slice-based Rice parameter selection for transform skip residual coding for coding the bitstream.
[0243] In some embodiments, the GCI bits (1603) and syntax elements (1703) are used to provide control of one or more coding tools for Rice parameter derivation for binarization of some syntax elements, such as abs_remainder[] and dec_abs_level[] in regular residual coding (RRC), in different ranges. In some examples, regular residual coding (RRC) refers to some techniques for coding blocks obtained by transform and quantization. In some examples, RRC can be modified for blocks obtained by quantization only. In some examples, transform skip residual coding (TSRC) refers to some techniques dedicated to coding blocks obtained by bypassing a transform (also called transform skip).
[0244] In some examples, a video coding standard may include one or more coding tools for Rice parameter derivation for binarization of some syntax elements, such as abs_remainder[ ] and dec_abs_level[ ], and a range extension of the video coding standard may include one or more alternative coding tools for Rice parameter derivation for binarization of some syntax elements, such as abs_remainder[ ] and dec_abs_level[ ].
[0245] In some examples, video standards use local template-based techniques for Rice parameter derivation. For example, a template including one or more (in one example, five) adjacent coefficient levels is used for Rice parameter derivation. For example, a sum of absolute coefficient values within the template can be calculated and the Rice parameter is determined based on the sum. In one example, a lookup table can be used to determine the Rice parameter based on the sum.
[0246] It should be noted that the Rice parameters may be determined by other suitable coding tools. In one example, an equation may be used to determine the Rice parameters based on summation. In another example, context modeling may be used to determine the Rice parameters based on statistics of adjacent coefficient levels. In some examples, a range extension of a video standard may specify one or more alternative coding tools for Rice parameter derivation.
[0247] In some examples, range extensions of a video standard may include modifications to the RRC for use in other scenarios. In one example, range extensions may include different context modeling tools and residual signal rotation tools for residual coding in transform skip mode.
[0248] In some examples, a syntax element (1703) in an SPS equal to 1 specifies that an alternative Rice parameter derivation for binarization of abs_remainder[] and dec_abs_level[] (e.g., an alternative coding tool for Rice parameter derivation in range extension) is used to code a CLVS that references the SPS. A syntax element (1703) equal to 0 specifies that an alternative Rice parameter derivation for binarization of abs_remainder[] and dec_abs_level[] is not used to code a CLVS that references the SPS. When not present, the value of the syntax element (1703) is inferred to be equal to 0.
[0249] In some examples, a syntax element (1603) equal to 1 specifies that the syntax element (1703) of all pictures in the scope (OlsInScope) of the output layer set may be equal to 0. A syntax element (1603) equal to 0 imposes no such constraint. Thus, in some examples, a GCI bit (1603) equal to 1 may specify non-use of an alternative Rice parameter derivation (e.g., an alternative coding tool for Rice parameter derivation specified with a specified range extension) for binarization of abs_remainder[ ] and dec_abs_level[ ] for coding the bitstream.
[0250] In some embodiments, GCI bits (1604) and syntax elements (1704) are used to provide control of the statistically-based Rice parameter derivation for binarization of abs_remainder[] and dec_abs_level[] at different ranges.
[0251] According to one aspect of the present disclosure, Rice parameter derivation for binarization of abs_remainder[] and dec_abs_level[] may be initialized at the beginning of each transform unit (TU) using statistics accumulated from previous TUs. In some examples, the statistics-based Rice parameter derivation may be included in range extensions of video standards.
[0252] In some examples, a syntax element (1704) indicated by a control flag, e.g., sps_persistent_rice_adaptation_enabled_flag in the SPS, is used to control the statistics-based Rice parameter derivation. For example, a syntax element (1704) equal to 1 in the SPS specifies that the Rice parameter derivation for binarization of abs_remainder[] and dec_abs_level[] is initialized at the beginning of each TU using statistics accumulated from previous TUs. A syntax element (1704) equal to 0 specifies that previous TU state is not used in the Rice parameter derivation of the current TU. When not present, the value of syntax (1704) is inferred to be equal to 0.
[0253] Furthermore, in one embodiment, a syntax element (1604) equal to 1 specifies that the syntax element (1704) of all pictures in the output layer set scope (OlsInScope) may be equal to 0. A syntax element (1604) equal to 0 imposes no such constraint. Thus, in some examples, a GCI bit (1604) equal to 1 may specify non-use of a statistics-based Rice parameter derivation for coding of the bitstream.
[0254] In some embodiments, the GCI bits (1605) and syntax elements (1705) are used to provide control of the coding tool used to code the location of the last significant coefficient during entropy coding of the transform coefficients in different ranges. In one example, the location of the last significant coefficient can be coded by different coding tools. For example, a video standard may specify a first coding tool that can determine the location of the last significant coefficient by coding two coordinates of the location indicated by the LastSignificantCoeffX and LastSignificantCoeffY variables, and a range extension of the video standard can specify an alternative coding tool, such as a second coding tool that can determine the location of the last significant coefficient by coding the relative coordinate of the last significant coefficient with reference to the bottom right corner of the zero-out transform block in one example.
[0255] In some examples, a syntax element (1705) equal to 1 in the SPS specifies that the slice header flag (slice range) indicated by sh_reverse_last_sig_coeff_flag is present in the slice header syntax structure (e.g., slice_header() in some examples) that references the SPS. A syntax element (1705) equal to 0 in the SPS specifies that the slice header flag sh_reverse_last_sig_coeff_flag is not present in the slice header syntax structure that references the SPS, and the slice header flag sh_reverse_last_sig_coeff_flag can be inferred to be 0. When not present, the value of the syntax element (1705) is inferred to be equal to 0.
[0256] In some examples, the value of the slice header flag sh_reverse_last_sig_coeff_flag of the slice is used to determine the location derivation of the last significant coefficient of the transform coefficients in the scaling and transform process in coding the slice. In one example, when sh_reverse_last_sig_coeff_flag is equal to 1, the location of the last significant coefficient is coded by an alternative coding tool in the range extension of the video standard, such as the second coding tool, otherwise the current coordinate of the location of the last significant coefficient is coded by the first coding tool.
[0257] In some examples, a GCI bit (1605) equal to 1 specifies that the syntax element (1705) of all pictures in the scope (OlsInScope) of the output layer set may be equal to 0. A GCI bit (1605) equal to 0 imposes no such constraint. Thus, a GCI bit (1605) equal to 1 may specify non-use of the second coding tool in the position derivation of the last significant coefficient for the scope of the bitstream.
[0258] FIG. 18 shows a flow chart outlining a process (1800) according to an embodiment of the present disclosure. The process (1800) may be used in a video decoder. In various embodiments, the process (1800) is performed by a processing circuit, such as a processing circuit in the terminal devices (310), (320), (330), and (340), a processing circuit performing the functions of the video decoder (410), a processing circuit performing the functions of the video decoder (510), etc. In some embodiments, the process (1800) is implemented with software instructions, and thus, the processing circuit performs the process (1800) when the processing circuit executes the software instructions. The process starts at (S1801) and proceeds to (S1810).
[0259] At (S1810), a value of a first syntax element (e.g., general_no_rrc_rice_extension_constraint_flag) for coding control in a first range (e.g., an output layer set) of coded video data in a bitstream is determined. The first syntax element is associated with a second coding tool that replaces the first coding tool for Rice parameter derivation in residual coding.
[0260] In one example, in response to a syntax element (eg, gci_num_additional_bits) in the syntax structure indicating additional bits of general constraint information in the syntax structure, a first syntax element is decoded from the syntax structure for general constraint information.
[0261] In some examples, the first coding tool is defined in a standard and the second coding tool is defined in a range extension of the standard as an alternative coding tool to the first coding tool. In one example, a video decoder may support a standard but not support the second coding tool in the range extension of the standard.
[0262] At (S1820), when the value of the first syntax element is the first value, the process proceeds to (S1830), otherwise, the process proceeds to (S1840), where the first value indicates non-use of the second coding tool in coding a first range of coded video data in the bitstream, including one or more second ranges of coded video data (e.g., one or more CLVSs in an output layer set).
[0263] In some examples, the first syntax element is in general constraint information for coding control of pictures in an output layer set output at a decoder. In one example, a first value of the first syntax element indicates non-use of a second coding tool in coding each coded layer video sequence (CLVS) in the output layer set.
[0264] At (S1830), in response to the first syntax element being the first value, a first range of coded video data in the bitstream is decoded without invoking a second coding tool.
[0265] In some examples, a second syntax element for coding control of a coded layer video sequence (CLVS) in the bitstream (e.g., sps_extended_precision_flag) is constrained to have a value indicating not to invoke a second coding tool to decode the CLVS.
[0266] At (S1840), in response to the first syntax element being the second value, a value of a second syntax element (e.g., sps_extended_precision_flag) for coding control of a second range of coded video data, such as a coded layer video sequence (CLVS) in the bitstream, is determined for decoding of the coded video data in the second range. The second syntax element indicates use / non-use of a second coding tool in the CLVS. In one example, the second syntax element is not presented in a sequence parameter set (SPS) of the CLVS, and a value of the second syntax element is inferred to indicate non-use of a second coding tool in the CLVS.
[0267] The second range of the coded video data is then decoded according to the value of the second syntax element (eg, with or without invoking a second coding tool).
[0268] The process 1800 may be adapted as appropriate. Steps of the process 1800 may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.
[0269] FIG. 19 shows a flow chart outlining a process (1900) according to one embodiment of the present disclosure. The process (1900) can be used in a video encoder. In various embodiments, the process (1900) is performed by a processing circuit, such as a processing circuit in the terminal devices (310), (320), (330), and (340), a processing circuit performing the functions of the video encoder (403), a processing circuit performing the functions of the video encoder (603), a processing circuit performing the functions of the video encoder (703), etc. In some embodiments, the process (1900) is implemented with software instructions, and thus, the processing circuit performs the process (1900) when the processing circuit executes the software instructions. The process starts at (S1901) and proceeds to (S1910).
[0270] At (S1910), the processing circuit determines whether a second coding tool, which replaces the first coding tool, is used during encoding of a first range of coded video data (e.g., an output layer set) in the bitstream. The second coding tool is a coding tool which replaces the first coding tool for Rice parameter derivation in residual coding. The first range of coded video data includes one or more second ranges of coded video data (e.g., CLVS).
[0271] In some examples, the processing circuitry may determine whether a second coding tool is used based on a second syntax element for coding control of a coded layer video sequence (CLVS) in the bitstream (e.g., sps_extended_precision_flag).
[0272] At (S1920), when the second coding tool is not used in coding the first range of the coded video data, the process proceeds to (S1930), otherwise the process proceeds to (S1940).
[0273] At (S1930), a first syntax element (e.g., general_no_rrc_rice_extension_constraint_flag) having a first value is coded into the bitstream. The first syntax element is for coding control in a first range (e.g., an output layer set) of coded video data in the bitstream. The first syntax element is associated with a second coding tool for Rice parameter derivation in residual coding. The first value indicates non-use of the second coding tool in coding the first range of coded video data.
[0274] In one example, the first syntax element is encoded with a syntax structure for general constraint information, and a syntax element (e.g., gci_num_additional_bits) in the syntax structure is adjusted to indicate additional bits of general constraint information in the syntax structure.
[0275] At (S1940), the first syntax element having the second value is encoded into the bitstream. In some examples, the first syntax element is not encoded into the bitstream, e.g., if the second value is a default value for the first syntax element and therefore the first syntax element can be inferred if not present, then (S1940) can be skipped.
[0276] The process 1900 may be adapted as appropriate. Steps of the process 1900 may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.
[0277] The techniques described above (e.g., techniques for signaling constraint flags, adaptive resolution parameters, and / or the like) can be implemented as computer software using computer readable instructions and physically stored on one or more computer readable media. For example, Figure 20 illustrates a computer system (2000) suitable for implementing certain embodiments of the disclosed subject matter.
[0278] Computer software may be coded using any suitable machine code or computer language that may be subject to assembly, compilation, linking, or similar mechanisms to create code that includes instructions that may be executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., either directly or through interpretation, microcode execution, etc.
[0279] The instructions may be executed in various types of computers or components thereof, including, for example, a personal computer, a tablet computer, a server, a smart phone, a gaming device, an Internet of Things device, and the like.
[0280] The components illustrated in Figure 20 for the computer system (2000) are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing the embodiments of the present disclosure, nor should the arrangement of components be interpreted as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of the computer system (2000).
[0281] The computer system (2000) may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users, for example, through tactile input (keystrokes, swipes, data glove movements, etc.), audio input (voice, clapping, etc.), visual input (gestures, etc.), and olfactory input (not shown). Human interface input devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as audio (voice, music, ambient sounds, etc.), images (scanned images, photographic images obtained from still image cameras, etc.), and video (2D video, 3D video including stereoscopic vision, etc.).
[0282] The human interface input devices may include one or more of a keyboard (2001), a mouse (2002), a trackpad (2003), a touch screen (2010), a data glove (not shown), a joystick (2005), a microphone (2006), a scanner (2007) and a camera (2008) (only one of each is shown).
[0283] The computer system (2000) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the senses of a human user, for example, through haptic output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touch screen (2010), data gloves (not shown), or joystick (2005), although there may be haptic feedback devices that do not function as input devices), audio output devices (speakers (2009), headphones (not shown), etc.), visual output devices (screens (2010), including CRT, LCD, plasma, OLED screens, etc., each with or without touch screen input capability, each with or without haptic feedback capability, some of which may output two-dimensional visual output or greater than three-dimensional output through such means as stereoscopic image output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0284] The computer system (2000) may also include human-accessible storage devices and their associated media, such as optical media or similar media (2021), including CD / DVD ROM / RW (2020) with CDs / DVDs, thumb drives (2022), removable hard drives or solid state drives (2023), legacy magnetic media such as tapes and floppy disks (not shown), and special ROM / ASIC / PLD based devices such as security dongles (not shown).
[0285] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the presently disclosed subject matter does not encompass transmission media, carrier waves, or other transitory signals.
[0286] The computer system (2000) may also include interfaces (2054) to one or more communication networks (2055). The networks may be, for example, wireless, wired, or optical. The networks may further be local, wide area, metropolitan, vehicular and industrial, real-time, delay tolerant, and the like. Examples of networks include local area networks such as Ethernet, WLAN, and the like, cellular networks including GSM, 3G, 4G, 5G, LTE, and the like, TV wired or wireless wide area digital networks including cable TV, satellite TV, and terrestrial TV, vehicular and industrial networks including CANBus, and the like. Certain networks generally require an external network interface adapter (such as a USB port on the computer system (2000)) attached to a particular general-purpose data port or peripheral bus (2049), while others are generally integrated into the core of the computer system (2000) by attachment to a system bus (such as an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system) as described below. Using any of these networks, the computer system (2000) can communicate with other entities. Such communications may be one-way receive-only (e.g., broadcast TV), one-way transmit-only (e.g., from a particular CANbus to a particular CANbus device), or bidirectional to other computer systems, for example, using local or wide area digital networks. As mentioned above, specific protocols and protocol stacks may be used in each of these networks and network interfaces.
[0287] The aforementioned human interface devices, human accessible storage devices and network interfaces may be attached to the core (2040) of the computer system (2000).
[0288] The cores (2040) may include one or more central processing units (CPUs) (2041), graphics processing units (GPUs) (2042), dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) (2043), hardware accelerators for specific tasks (2044), graphics adapters (2050), etc. These devices may be connected through a system bus (2048), along with read only memory (ROM) (2045), random access memory (RAM) (2046), and internal mass storage (2047), such as an internal non-user accessible hard drive, SSD, etc. In some computer systems, the system bus (2048) is accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus (2048) or through a peripheral bus (2049). In one example, a screen (2010) may be connected to the graphics adapter (2050). Peripheral bus architectures include PCI, USB, and the like.
[0289] The CPU (2041), GPU (2042), FPGA (2043) and accelerator (2044) can execute certain instructions, which in combination can constitute the above-mentioned computer code. The computer code can be stored in ROM (2045) or RAM (2046). Also, temporary data can be stored in RAM (2046), while permanent data can be stored, for example, in internal mass storage (2047). Rapid storage and retrieval from any of the memory devices can be enabled through the use of cache memory, which can be closely associated with one or more of the CPU (2041), GPU (2042), mass storage (2047), ROM (2045), RAM (2046), etc.
[0290] The computer-readable medium may have computer code thereon for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.
[0291] By way of example and not limitation, a computer system having the architecture (2000) and in particular the cores (2040) can provide functionality as a result of the processors (including CPUs, GPUs, FPGAs, accelerators, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be user-accessible mass storage as introduced above, as well as media associated with the specific storage of the cores (2040) of a non-transitory nature, such as the core internal mass storage (2047) or ROM (2045). Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the cores (2040). The computer-readable media can include one or more memory devices or chips according to specific needs. The software can cause the cores (2040) and in particular the processors therein (including CPUs, GPUs, FPGAs, etc.) to execute certain processes or certain parts of certain processes described herein, including defining data structures stored in RAM (2046) and modifying such data structures according to processes defined by the software. Additionally or alternatively, the computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator (2044)) that may operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. References to software include logic, and vice versa, where appropriate. References to computer-readable media may encompass circuitry (such as integrated circuits (ICs)) that store software for execution, circuitry embodying logic for execution, or both, as appropriate. The present disclosure encompasses any suitable combination of hardware and software. Appendix A: Acronyms JEM: joint exploration model VVC: versatile video coding BMS: benchmark set MV: Motion Vector HEVC: High Efficiency Video Coding SEI: Supplementary Enhancement Information VUI: Video Usability Information GOPs: Groups of Pictures TUs: Transform Units PUs: Prediction Units CTUs: Coding Tree Units CTBs: Coding Tree Blocks PBs: Prediction Blocks HRD: Hypothetical Reference Decoder SNR: Signal Noise Ratio CPUs: Central Processing Units GPUs: Graphics Processing Units CRT: Cathode Ray Tube LCD: Liquid Crystal Display OLED: Organic Light-Emitting Diode CD: Compact Disc DVD: Digital Video Disc ROM: Read-Only Memory RAM: Random Access Memory ASIC: Application-Specific Integrated Circuit PLD: Programmable Logic Device LAN: Local Area Network GSM: Global System for Mobile communications LTE:Long-Term Evolution CANBus: Controller Area Network Bus USB: Universal Serial Bus PCI: Peripheral Component Interconnect FPGA: Field Programmable Gate Array SSD: Solid-state drive IC: Integrated Circuit CU: Coding Unit
[0292] While this disclosure has described several exemplary embodiments, there are alterations, permutations, and various substitute equivalents that are within the scope of this disclosure. Thus, it will be appreciated that those skilled in the art will be able to devise various systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within the spirit and scope of the present disclosure.
Claims
[Claim 1] 1. A method of video decoding in a decoder, comprising: determining, by a processor, a first syntax element for coding control in a first range of coded video data in a bitstream, the first syntax element being associated with a second coding tool that replaces the first coding tool for Rice parameter derivation in residual coding; in response to the first syntax element being a first value indicating disabling of the second coding tool in the first range, decoding, by the processor, the first range of coded video data including one or more second ranges of coded video data without invoking the second coding tool; A method comprising:
Citation Information
Patent Citations
Image decoding device and image coding device
JP2023006203A
Residual and coefficients coding for video coding
WO2022251545A1
Image processing device and method
WO2022255395A1
Residual and coefficients coding for video coding
WO2023283463A1