Technique for signal transmission of constraint flag for range extension by persistent rice adaption
Patent Information
- Application Number
- JP2024195535
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-03-31
- Filing Date
- 2024-11-08
- Publication Date
- 2025-11-17
- Estimated Expiration
- 2042-04-29
AI Technical Summary
In the compression and decoding process, existing video encoding technologies have problems of high redundancy and low efficiency. Especially when processing video data with high resolution and high frame rate, more efficient encoding tools are needed to reduce data volume and storage requirements.
The video data processing method is adopted to control the enablement and disabling of encoding tools by determining syntax elements, and to optimize residual encoding using statistical rice parameters, and to combine the extended statistical rice parameters to control the use of video encoding tools to achieve a more efficient encoding and decoding process.
By optimizing the use of encoding tools, the redundancy of video data is significantly reduced, encoding efficiency is improved, data transmission and storage requirements are reduced, while maintaining video quality.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical field]
[0001] [Incorporated by reference] This application claims priority to U.S. Patent Application No. 17 / 710,786 entitled "TECHNIQUES FOR CONSTRAINT FLAG SIGNALING FOR RANGE EXTENSION WITH PERSISTENT RICE ADAPTATION," filed March 31, 2022, which claims priority to U.S. Provisional Application No. 63 / 250,172 entitled "TECHNIQUES FOR CONSTRAINT FLAG SIGNALING FOR RANGE EXTENSION WITH PERSISTENT RICE ADAPTATION," filed September 29, 2021. The disclosure of the prior application is incorporated by reference in its entirety.
[0002] [Technical field] 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. Work of the inventors named in this application, to the extent that their work is described in this background section, and aspects of this description that may not otherwise qualify as prior art at the time of filing, are not admitted, either explicitly or implicitly, as prior art to the present disclosure.
[0004] Video encoding 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 a picture rate of 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 space.
[0005] One goal of video encoding and decoding may be the reduction of redundancy in the input video signal through compression. Compression may help reduce the aforementioned bandwidth and / or storage space requirements, in some cases by more than one order of magnitude. Both lossless and lossy compression, as well as combinations thereof, may be used. Lossless compression refers to techniques where an exact copy of the original signal can be reconstructed from the compressed original signal. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signals 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., users of a particular consumer streaming application may tolerate higher distortion than users 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 divided into blocks of samples. If all blocks of samples are coded in intra mode, the picture may 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 the pre-transform domain. In some cases, the smaller the DC value and the smaller the AC coefficients after the transform, 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 encoding 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 encoding / decoding of blocks of data that are spatially nearby and preceding in decoding order. Such techniques are referred to below 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 reference pictures.
[0009] There may be various forms of intra prediction. If more than one such technique is available for a given video coding technique, the technique used may be coded in intra prediction mode. In certain cases, a mode may have sub-modes and / or parameters, which may be coded separately or may be included in the mode codeword. Which codeword to use for a given mode / sub-mode / parameter combination may affect the coding efficiency gain through intra prediction, as well as the entropy coding technique used to convert the codeword into a bitstream.
[0010] A mode of intra prediction was introduced in H.264, refined in H.265, and further refined in newer coding techniques such as the 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 a certain direction. The reference to the direction used can be coded in the bitstream or it may be predicted itself.
[0011] Referring to FIG. 1A, at the bottom right, a subset of 9 known predictor directions from the 33 possible predictor directions (corresponding to the 33 angle modes of the 35 intra modes) of H.265 is depicted. The point (101) where the arrows converge represents the sample to be predicted. The arrows represent the direction in which the sample is predicted. For example, arrow (102) indicates that sample (101) is predicted from the sample(s) to the top right, at an angle of 45 degrees from the horizontal. Similarly, arrow (103) indicates that sample (101) is predicted from the sample(s) to the bottom left of sample (101), at an angle of 22.5 degrees from the horizontal.
[0012] 1A, at the top left, a square block (104) of 4×4 samples is depicted (indicated by a thick dashed line). The square block (104) contains 16 samples, each labeled with an “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 in the block (104) in both the Y and X dimensions. Since the block is 4×4 samples in size, S44 is at the bottom right. Additionally, a reference sample is shown that follows a similar numbering scheme. The reference sample is labeled R and its 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 neighbors of the block being reconstructed, so there is no need to use negative values.
[0013] Intra-picture prediction can work by copying reference sample values from neighboring samples filled by the signaled prediction direction. For example, assume that the coded video bitstream includes signaling for this block indicating a prediction direction that is consistent with the arrow (102). That is, the sample is predicted from the top right prediction sample or samples at an angle of 45 degrees from the horizontal. Then samples S41, S32, S23, and S14 are predicted from the same reference sample R05. Then sample S44 is predicted from reference sample R08.
[0014] In certain cases, especially when the direction is not divisible by 45 degrees, the values of multiple reference samples may be combined, for example by interpolation, to calculate the reference sample.
[0015] As video coding techniques have developed, the number of possible directions has increased. In H.264 (2003), nine different directions could be represented. This increased to 33 in H.265 (2013), and JEM / VVC / BMS at the time of this disclosure can support up to 65 directions. Experiments are performed to identify the most likely directions, and specific techniques in entropy coding are used to represent those likely directions with a small number of bits while accepting some penalty for less likely directions. Furthermore, the direction itself may be predictable from nearby directions used in nearby already decoded blocks.
[0016] FIG. 1B shows a schematic diagram (180) depicting 65 intra prediction directions with JEM to illustrate the increasing number of prediction directions over time.
[0017] The mapping of intra-prediction direction bits in the coded video bitstream representing the direction can vary from one video coding technique to another, for example from a simple direct mapping of prediction directions to intra-prediction modes to complex adaptation schemes involving codewords, most probable modes, and similar techniques. In any case, however, there may be certain directions that are statistically less likely to occur in the video content than other certain directions. Since the goal of video compression is to reduce redundancy, in a well-performing video coding technique, such less likely ways are represented by a larger number of bits than more probable directions.
[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 for prediction of a newly reconstructed picture or part thereof 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, with the third dimension being an indication of the reference picture used (which may indirectly be the temporal dimension).
[0019] In some video compression techniques, the MV applicable to a region of sample data can be predicted from other MVs, e.g., from an MV associated with another region of sample data that is spatially adjacent to the region being reconstructed and precedes it in decoding order. Doing so can significantly reduce the amount of data required to encode the MV, thereby removing redundancy and increasing compression. MV prediction can work effectively because, for example, when encoding an input video signal derived from a camera (known as natural video), there is a statistical probability that regions larger than the region to which a single MV is applicable move in a similar direction and can therefore be predicted, in certain cases, using similar motion vectors derived from the MVs of nearby regions. As a result, the MV found for a given region will be similar or identical to the MV predicted from the surrounding MVs, which, after entropy encoding, can be represented with fewer bits than would be used if encoding the MVs directly. In some cases, MV prediction can be an example of lossless compression of a signal (i.e., an MV) derived from the original signal (i.e., a sample stream). In other cases, the MV prediction itself may be lossy, for example due to rounding errors in computing the predictor from several 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 provided by H.265, a technique hereafter referred to as "spatial merge" is described herein.
[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 directly encoding its MV, 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 MVs associated with any of the five surrounding samples, denoted A0, A1, and B0, B1, B2 (202-206, respectively). In H.265, MV prediction can use predictors from the same reference picture that neighboring blocks use. Summary of the Invention
[0022] Aspects of the disclosure provide methods and apparatus for video data processing. In some examples, the apparatus for video data processing includes a processing circuit. For example, the processing circuit determines a first syntax element for coding control within a first adaptation scope of encoded video data in a bitstream. The first syntax element is associated with a coding tool of persistent Rice adaptation defined in a range extension of a video standard for statistics-based Rice parameter derivation in residual coding. In response to the first syntax element being a first value indicating disabling of the coding tool within the first adaptation scope, the processing circuit decodes the first adaptation scope of the encoded video data including one or more second adaptation scopes of the encoded video data without invoking the 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 for a decoder. In some examples, a first value of the first syntax element indicates to disable a coding tool in each coded layer video sequence (CLVS) in the output layer set. In some examples, the processing circuit constrains a second syntax element for coding control of a CLVS in the bitstream to have a value indicating not to invoke a coding tool for decoding the coded layer video sequence (CLVS).
[0024] 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 indicates use / non-use of a coding tool in the CLVS. In one example, in response to the second syntax element not being present in a sequence parameter set (SPS) for the CLVS, the processing circuit estimates a value of the second syntax element indicating non-use of a coding tool in the CLVS.
[0025] In some examples, in response to the value of the second syntax element indicating use of a coding tool in the CLVS, the processing circuit determines statistics of coefficients decoded from one or more transform units prior to the current transform unit. The statistics are used to determine an initial value of a Rice parameter for the current transform unit. The coefficients of the current transform unit are then decoded based on the Rice parameter.
[0026] In some embodiments, the processing circuit decodes a first syntax element from the syntax structure for the general constraint information in response to the syntax element in the syntax structure indicating further bits for the general constraint information in the syntax structure.
[0027] Aspects of the present disclosure also provide a non-transitory computer-readable medium having stored thereon instructions that, when executed by a computer, cause the computer to perform a method for video decoding. [Brief description of the drawings]
[0028] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings. [Figure 1A] FIG. 2 is a schematic diagram of an example subset of intra-prediction modes. [Figure 1B] FIG. 2 is an illustration of an exemplary intra-prediction direction. [Diagram 2] FIG. 2 is a schematic diagram of a current block and its surrounding spatial merging candidates in one example. [Diagram 3] FIG. 3 is a schematic diagram of a simplified block diagram of a communication system (300) according to an embodiment. [Figure 4] FIG. 4 is a schematic diagram of a simplified block diagram of a communication system (400) according to an embodiment. [Diagram 5] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to an embodiment. [Figure 6] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to an embodiment. [Figure 7] 4 shows a block diagram of an encoder according to another embodiment; [Figure 8] 4 shows a block diagram of a decoder according to another embodiment; [Figure 9] 1 illustrates an example of signaling adaptive resolution change (ARC) parameters according to an embodiment of the present disclosure. [Figure 10] 1 shows an example of a table (1000) for mapping upsampled or downsampled coefficients, codewords, and Ext-Golomb codes. [Figure 11] 1 illustrates several examples of signaling of ARC parameters according to some embodiments of the present disclosure. [Figure 12] 1 illustrates an example syntax structure of a set of PTL syntax elements in some examples. [Figure 13] 13 shows an example syntax structure of general constraint information in some examples. [Figure 14A] 1 illustrates 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] 1 illustrates 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 15A] 1 illustrates an example of a general constraint information syntax structure according to one embodiment of the present disclosure. [Figure 15B] 1 illustrates an example of a general constraint information syntax structure according to one embodiment of the present disclosure. [Figure 16] 1 illustrates a syntax structure of general constraint information according to some embodiments of the present disclosure. [Figure 17] 1 illustrates an example syntax structure for a sequence parameter set (SPS) range extension according to some embodiments of the present disclosure. [Figure 18] 1 shows a flowchart outlining a process according to an embodiment of the present disclosure. [Figure 19] 1 shows a flowchart outlining a process according to an embodiment of the present disclosure. [Figure 20] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0029] 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 unidirectional transmission of data. For example, the terminal device (310) may encode video data (e.g., a stream of video pictures captured by the terminal device (310)) for transmission to the other terminal device (320) via the network (350). The encoded video data may be transmitted in the form of one or more encoded video bitstreams. The terminal device (320) may receive the encoded video data from the network (350), decode the encoded 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 service applications.
[0030] In another example, the communication system (300) includes a second pair of terminal devices (330) and (340) performing bidirectional transmission of encoded 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 encode video data (e.g., a stream of video pictures captured by the 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 receive the encoded video data transmitted by the other of the terminal devices (330) and (340), decode the encoded video data to reconstruct the video pictures, and display the video pictures on an accessible display device in accordance with the reconstructed video data.
[0031] In the example of FIG. 3, the terminal devices (310), (320), (330), and (340) may be depicted 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 encoded video data between the terminal devices (310), (320), (330), and (340), including, for example, wired (wired) and / or wireless communication networks. The communication network (350) may exchange data in circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of discussion herein, the architecture and topology of the network (350) may not be important to the operation of the present disclosure, unless otherwise described below.
[0032] 4 shows an arrangement of a video encoder and a video decoder in a streaming environment as an example of an application for the disclosed subject matter. The disclosed subject matter may be equally 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.
[0033] The streaming system may include a video source (401), e.g., a digital camera, and may include a capture subsystem (413) that generates, e.g., a stream of uncompressed video pictures (402). In one example, the stream of video pictures (402) includes samples captured by a digital camera. The stream of video pictures (402), depicted as a thick line to emphasize its high data volume compared to the encoded video data (404) (or encoded video bitstream), 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 encoded video bitstream (404)), depicted as a thin line to emphasize its lower data volume compared to the stream of video pictures (402), 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 generates 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 encoding / 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.
[0034] It is noted that electronic devices 420 and 430 may include other components (not shown). For example, electronic device 420 may include a video decoder (not shown), and electronic device 430 may also include a video encoder (not shown).
[0035] 5 shows a block diagram of a video decoder (510) according to an 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 (310) in the example of FIG. 4.
[0036] The receiver (531) may receive one or more coded video sequences to be decoded by the video decoder (510), one coded video sequence at a time, in the same or another embodiment, and 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 together with other data, such as coded audio data and / or auxiliary data streams, which may be forwarded to respective usage entities (not shown). The receiver (531) may separate the coded video sequences from the other data. To combat network jitter, a buffer memory (515) may be coupled between the receiver (531) and the entropy decoder / parser (520) (hereinafter the "parser"). In certain applications, the buffer memory (515) is part of the video decoder (510). In other applications, it may be external to the video decoder (510) (not shown). In yet other applications, there may be a buffer memory (not shown) external to the video decoder (510), e.g., to combat network jitter, and another buffer memory (515) internal to the video decoder (510), e.g., to handle playback timing. If the receiver (531) is receiving data from a store / forward device of sufficient bandwidth and controllability, or from an isochronous network, the buffer memory (515) may not be required or may be small. For use with best-effort packet networks such as the Internet, the buffer memory (515) may be required and may be relatively large, advantageously of adaptive size, and may be implemented, at least in part, in an operating system or similar element (not shown) external to the video decoder (510).
[0037] The video decoder (510) may include a parser (520) for reconstructing 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 for controlling a rendering device such as a render device (512) (e.g., a display screen). The rendering device may not be an integral part of the electronic device (530) as shown in FIG. 5, but may be coupled to the electronic device (530). The control information for the rendering device(s) may be in the form of Supplementary Enhancement Information (SEI messages) or Video Usability Information (VUI) parameter set fragments (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) can 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 can include Groups of Pictures (GOPs), pictures, tiles, slices, macroblocks, Coding Units (CUs), blocks, Transform Units (TUs), Prediction Units (PUs), etc. The parser (520) can also extract information from the coded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.
[0038] The parser (520) can perform an entropy decoding / parsing operation on the video sequence received from the buffer memory (515) to generate symbols (521).
[0039] The reconstruction of symbols (521) can involve several different units, depending on the type of coded video picture or portions thereof (e.g., inter and intra pictures, inter and intra blocks) 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 depicted for clarity.
[0040] In addition to the functional blocks already mentioned, the video decoder (510) can be conceptually divided into a number of functional units, as described below. In a practical implementation operating under commercial constraints, many of these units will interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is adequate.
[0041] The first unit is a scalar / inverse transform unit (551). The scalar / inverse transform unit (551) receives quantized transform coefficients and control information as symbol(s) (521) from the parser (520). The control information includes 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).
[0042] 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 may 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 a block of the same size and shape as the block being reconstructed using surrounding already reconstructed information taken from a current picture buffer (558). The current picture buffer (558) may, for example, buffer a partially reconstructed current picture and / or a fully reconstructed current picture. The aggregator (555) may add, 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).
[0043] In other cases, the output samples of the scalar / inverse transform unit (551) may relate to an inter-coded, potentially motion-compensated block. In such cases, the motion compensation prediction unit (553) may access a reference picture memory (557) to fetch samples used for prediction. After motion compensating the fetched samples according to the symbols (521) for the block, these samples may be added by an aggregator (555) to the output of the scalar / inverse transform unit (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 compensation unit (553) fetches prediction samples may be controlled by motion vectors available to the motion compensation unit (553) in the form of symbols (521). The symbols may have, for example, X, Y, and reference picture components. Motion compensation may include interpolation of sample values fetched from the reference picture memory (557) when subsample accurate motion vectors are used, motion vector prediction mechanisms, and the like.
[0044] The output samples of the aggregator (555) may be subjected to various loop filtering techniques in a loop filter unit (556). Video compression techniques may include in-loop filter techniques that are controlled by parameters contained in the coded video sequence (also called the coded video bitstream) and made available to the loop filter unit (556) as symbols (521) from the parser (520), but may also 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 loop filtered sample values.
[0045] The output of the loop filter unit (556) can be a sample stream, which can be output to a render device (512) or stored in a reference picture memory (557) for use in future inter-picture prediction.
[0046] Once a coded picture is 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 a fresh current picture buffer can be reallocated before starting the reconstruction of a subsequent coded picture.
[0047] The video decoder (510) may perform decoding operations according to a given video compression technique in a standard such as ITU-T Recommendation H.265. The encoded video sequence may be compliant with the syntax prescribed by the video compression technique or standard being used, in the sense that the encoded video sequence follows the syntax of the video compression technique or standard and a profile documented in the video compression technique or standard. In particular, a profile may select a particular tool from all tools available in the video compression technique or standard as the only tool available for use under that profile. Compliance may also require that the complexity of the encoded video sequence be within a range defined by a level of the video compression technique or standard. In some cases, the level constrains the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in units of megasamples per second), maximum reference picture size, etc. The limits set by the level may be further constrained through a Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management, possibly signaled in the encoded video sequence.
[0048] In some embodiments, the receiver (531) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence(s). 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.
[0049] 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) in the example of FIG. 4.
[0050] The video encoder (603) can receive video samples from a video source (601) (which is not part of the electronic device (620) in the example of FIG. 6) that can capture video images to be encoded by the video encoder (603). In another example, the video source (601) is part of the electronic device (620).
[0051] The video source (601) may provide a source video sequence to be encoded 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 service 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 image information locally as a video sequence. The video data may be provided as a number of individual pictures that impart motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, each of which 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.
[0052] According to an embodiment, the video encoder (603) can encode and compress pictures of a source video sequence into an encoded video sequence (643) in real-time or under any other time constraint required by an application. Enforcing an appropriate encoding rate is one function of the controller (650). In some embodiments, the controller (650) controls and is operatively coupled to other functional units, such as those described below. Such couplings are not depicted for clarity. Parameters set by the controller (650) can include parameters related to rate control (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 suitable functions for the video encoder (603) optimized for a particular system design.
[0053] In some embodiments, the video encoder (603) is configured to operate in an encoding loop. As a simplistic description, in one example, the encoding loop can include a source encoder (630) (e.g., responsible for generating symbols, such as a symbol stream, based on an input picture to be encoded and a reference picture(s)) and a (local) decoder (633) embedded in the video encoder (603). The decoder (633) reconstructs the symbols to generate sample data in a similar manner that a (remote) decoder would also generate (in the video compression techniques considered in the disclosed subject matter, any compression between the symbols and the encoded video bitstream is lossless). The reconstructed sample stream (sample data) is input to a reference picture memory (634). Since the decoding of the symbol stream produces bit-accurate results regardless of the decoder location (local or remote), the contents of the reference picture memory (634) are also bit-accurate between the local and remote encoders. In other words, the predictor 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 synchrony (and the resulting drift when synchrony cannot be maintained, e.g., due to channel errors) is also used in several related technologies.
[0054] The operation of the "local" decoder (633) may be the same as the operation of a "remote" decoder, e.g., the video decoder (410), already described in detail above in connection with Figure 5. However, referring also briefly to Figure 5, because symbols are available and the encoding / decoding of the symbols into a coded video sequence by the entropy coder (645) and parser (420) may be lossless, the entropy decoding portion of the video decoder (410), including the buffer memory (415) and the parser (420), may not be fully implemented in the local decoder (633).
[0055] An observation that can be made at this point is that any decoder technique, other than parsing / entropy decoding, that exists in the decoder must exist in substantially the same functional form in the corresponding encoder. For this reason, the disclosed subject matter focuses on the decoder operation. A description of the encoder techniques can be omitted, since they are the inverse of the decoder techniques that are described generically. Only in certain areas is more detailed explanation necessary, and is provided below.
[0056] During operation, in some examples, the source encoder (630) may perform motion-compensated predictive encoding, which predictively encodes an input picture with reference to one or more previously encoded pictures from a video sequence, designated as “reference pictures.” In this manner, the encoding engine (632) encodes differences between pixel blocks of the input picture and pixel blocks of a reference picture(s) that may be selected as predictive references for the input picture.
[0057] The local video decoder (633) can decode the encoded video data of pictures that may be designated as reference pictures based on the symbols generated by the source encoder (630). The operation of the encoding engine (632) can advantageously be a lossy process. When the encoded video data can be decoded in a video decoder (not shown in FIG. 6), the reconstructed video sequence can be a copy of the source video sequence, typically with some errors. The local video decoder (633) can replicate the decoding process that may be performed on the reference pictures by the video decoder and store the reconstructed reference pictures in a reference picture cache (634). In this way, the video encoder (603) can locally store copies of reconstructed reference pictures that have common content (in the absence of transmission errors) as the reconstructed reference pictures that would be obtained by the far-end video decoder.
[0058] 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., that 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).
[0059] The controller (650) may manage the encoding operations of the source encoder (630), including, for example, setting the parameters and subgroup parameters used to encode the video data.
[0060] The output of all of the above functional units may undergo 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.
[0061] The transmitter (640) can buffer the encoded video sequence generated by the entropy encoder (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) can merge the encoded video data from the video encoder (630) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (sources not shown).
[0062] The controller (650) may manage the operation of the video encoder (603). During encoding, the controller (650) may assign a certain coding picture type to each coded picture. The coding picture type may affect the coding technique that may be applied to each picture. For example, pictures may often be assigned as one of the following picture types:
[0063] An intra picture (I-picture) may be one that can be coded and decoded without using other pictures 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 will recognize these variations of I-pictures and their respective uses and characteristics.
[0064] A predictive picture (P-picture) may be one that can be encoded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict the sample values of each block.
[0065] Bidirectionally predicted pictures (B-pictures) may be those that can be coded and decoded using intra- or inter-prediction, which uses up to two motion vectors and reference indices to predict the sample values of each block. Similarly, multi-predictive pictures can use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0066] A source picture is usually spatially divided 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 reference 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 may be predictively coded with reference 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 reference to one previously coded reference picture. Blocks of a B-picture may be predictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.
[0067] The video encoder (603) may perform encoding operations according to a given video encoding technique or standard, such as ITU-T Recommendation H.265. In its operations, the video encoder (603) may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the encoded video data may conform to a syntax specified by the video encoding technique or standard used.
[0068] In some embodiments, the transmitter (640) may transmit additional data along with the encoded video. The source encoder (630) may include such data as part of the encoded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.
[0069] A video may be captured as multiple source pictures (video pictures) in a temporal sequence. Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlation in a given picture, while inter-picture prediction exploits correlation (temporal or other) between pictures. In one example, a particular picture to be coded / decoded, called a current picture, is divided into blocks. If a block in the current picture is similar to a reference block in a previously coded and still buffered reference picture in the video, that block in the current picture can 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 if multiple reference pictures are used.
[0070] 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 decoding order (but may also be past and future, respectively, in display order) in the video. 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.
[0071] Furthermore, to improve coding efficiency, merge mode techniques can be used in inter-picture prediction.
[0072] 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 divided 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 partitioned into one or more coding units (CUs). For example, a CTU of 64×64 pixels can be partitioned into one CU of 64×64 pixels, or four CUs of 32×32 pixels, or 16 CUs of 16×16 pixels. In one example, each CU is analyzed to determine a prediction type for that CU, such as an inter prediction type or an intra prediction type. A CU is divided into one or more prediction units (PUs) depending on temporal and / or spatial predictability. In general, each PU includes a luma prediction block (PB) and two chroma PBs. In an embodiment, prediction operations in coding (encoding / decoding) are performed in units of prediction blocks. Taking a luma prediction block as an example of a prediction block, the prediction block includes 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.
[0073] 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 an encoded picture that is part of an encoded video sequence. In one example, the video encoder (703) is used in place of the video encoder (403) in the example of FIG. 4.
[0074] In an HEVC example, the video encoder (703) receives a matrix of sample values for a processing block, such as a predictive block, such as 8×8 samples. The video encoder (703) determines whether the processing block is best coded using intra mode, inter mode, or bi-predictive mode, e.g., using rate-distortion optimization. If the processing block is coded in intra mode, the video encoder (703) may use intra prediction techniques to code the processing block into a coded picture. If the processing block is coded in inter mode or bi-predictive mode, the video encoder (703) may use inter prediction techniques or bi-predictive techniques, respectively, to code the processing block into a coded picture. In certain video coding techniques, a merge mode may be an inter-picture prediction sub-mode in which motion vectors are derived from one or more motion vector predictors, but 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) for determining the mode of the processing blocks.
[0075] 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 coder (725), coupled together as shown in FIG.
[0076] 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 previous and subsequent pictures), generate inter-prediction information (e.g., a description of redundant information due to inter-coding techniques, motion vectors, merge mode information), and calculate an inter-prediction result (e.g., a predicted 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.
[0077] The intra encoder (722) is configured to receive samples of a current block (e.g., a processing block), possibly compare the block with blocks already encoded in the same picture, generate transformed and quantized coefficients, and possibly also generate 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 an intra prediction result (e.g., a predicted block) based on the intra prediction information and a reference block in the same picture.
[0078] 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, if the mode is an intra mode, the general controller (721) controls the switch (726) to select the result of the intra mode 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. If the mode is an inter mode, the general controller (721) controls the switch (726) to select the result of inter prediction 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.
[0079] The residual calculator (723) is configured to calculate a difference (residual data) between the received block and a prediction result selected from the intra-encoder (722) or the inter-encoder (730). The residual encoder (724) is configured to encode the residual data to generate transform coefficients based on the residual data. 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 to generate decoded residual data. The decoded residual data can be suitably used by the intra-encoder (722) and the inter-encoder (730). 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 suitably processed to generate decoded pictures, which can be buffered in a memory circuit (not shown) and used as reference pictures in some examples.
[0080] The entropy encoder (725) is configured to format a bitstream to include the encoded block. The entropy encoder (725) is configured to include various information according to a suitable 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 suitable information in the bitstream. Note that in accordance with the disclosed subject matter, when encoding a block in a merged sub-mode of either the inter mode or the bi-prediction mode, the residual information is not present.
[0081] 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 encoded pictures that are part of an encoded video sequence and decode the encoded pictures to generate reconstructed pictures. In one example, the video decoder (810) is used in place of the video decoder (410) in the example of FIG. 4.
[0082] 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) coupled together as shown in FIG. 8.
[0083] The entropy decoder (871) may be configured to reconstruct from the coded picture certain symbols that represent the syntax elements of which the coded picture is composed. Such symbols may include, for example, prediction information (e.g., intra- or inter-prediction information, etc.) that may identify the mode in which the block is coded (e.g., intra- or inter-prediction mode, merged submode, or the latter two in another submode), certain samples or metadata used for prediction by the intra-decoder (872) or the inter-decoder (880), respectively, residual information, for example in the form of quantized transform coefficients, etc. In one example, if the prediction mode is an inter- or bi-prediction mode, the inter-prediction information is provided to the inter-decoder (880). If the prediction type is an intra-prediction type, the intra-prediction information is provided to the intra-decoder (872). The residual information may undergo inverse quantization and is provided to the residual decoder (873).
[0084] The inter decoder (880) is configured to receive inter prediction information and to generate inter prediction results based on the inter prediction information.
[0085] The intra decoder (872) is configured to receive intra prediction information and generate a prediction result based on the intra prediction information.
[0086] The residual decoder (873) is configured to perform inverse quantization to extract dequantized transform coefficients, and process the dequantized 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 depicted since this is only low volume control information).
[0087] The reconstruction module (874) is configured to combine, in the spatial domain, the residual output by the residual decoder (873) and the prediction result (output by the intra- or inter-prediction module, as the case may be) to form a reconstructed block, which may be part of a reconstructed picture, which may be part of a reconstructed video. It is noted that other suitable operations, such as a deblocking operation, may be performed to improve visual quality.
[0088] It should be noted that the video encoders (403), (603), (703) and the video decoders (410), (510), (810) may be implemented using any suitable technology. In some embodiments, the video encoders (403), (603), (703) and the video decoders (410), (510), (810) may be implemented using one or more integrated circuits. In other embodiments, the video encoders (403), (603), (703) and the video decoders (410), (510), (810) may be implemented using one or more processors executing software instructions.
[0089] Aspects of this disclosure provide techniques for controlling coding tools and features through constraint flags in an encoded video stream.
[0090] 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 can operate with a given picture size that is defined and remains constant for a coded video sequence (CVS), group of pictures (GOP), or similar time frame of multiple pictures. In examples 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 only in I-pictures, so the picture size is typically defined and remains constant for the GOP. Resampling of reference pictures to use different resolutions in a CVS is known, for example, 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 cases, such as H.263 Annex Q, resampling of individual macroblocks by a factor of two in each dimension (e.g., up or down) is allowed, but the picture size remains the same. For example, for H.263, the macroblock size does not need to be signaled, as it can be fixed.
[0091] In some relevant examples, the picture size of the predicted picture can be changed. Examples such as VP9 allow resampling of reference pictures and changing the resolution of the whole picture. In some examples (e.g., Hendry, et. al, "On adaptive resolution change (ARC) for VVC", Joint Video Team document JVET-M0l35-vl, Jan 9-l9, 20l9, the entire contents of which are incorporated by reference) allow resampling of the whole reference picture to a different resolution (e.g., higher resolution or lower resolution). The different candidate resolutions can be coded in the sequence parameter set (SPS) and referenced by per-picture syntax elements in the picture parameter set (PPS).
[0092] According to aspects of the present disclosure, a source video can be compressed by hierarchical coding, which can encode a picture into a bitstream containing 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 the profile tier level (PTL) of the entire bitstream or one or more output layer sets can be signaled in a VPS, decoder parameter set (DPS), which may be referred to as decoder capability information (DCI) in some examples, SPS, PPS, SEI message, etc. There can be general constraint information in the PTL information, which can specify constraints on coding tools or features. It is desirable to efficiently represent and signal constraint information for various coding tools and features.
[0093] In some examples, the term "subpicture" can be used to denote, for example, a rectangular arrangement of samples, blocks, macroblocks, coding units, or similar entities that are semantically grouped and may be coded independently at a modified resolution. One or more subpictures can form a picture. One or more coded subpictures can form a coded picture. One or more subpictures can be assembled into a picture and one or more subpictures can be extracted from a picture. In some examples, one or more coded subpictures can be assembled into a coded picture in the compressed domain without being transcoded to the sample level. In some examples, one or more coded subpictures can be extracted from a coded picture in the compressed domain.
[0094] In some examples, a mechanism that allows changing the resolution of a picture or subpicture in a CVS, for example by resampling a reference picture, 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 include filter parameters, scaling factors, resolution of output and / or reference pictures, various control flags, etc.
[0095] In some examples, ARC encoding / decoding is picture-based, and thus a set of control information (ARC parameters) is used to encode / decode a single, semantically independent encoded video picture. In some examples, ARC encoding / decoding is sub-picture-based, and thus multiple sub-pictures within a picture can be encoded / decoded with independent ARC parameters. Note that ARC parameters can be signaled using a variety of techniques.
[0096] 9 illustrates examples (e.g., options) of techniques for signaling ARC parameters according to some embodiments of the present disclosure. The 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, etc.
[0097] According to aspects of the present disclosure, ARC parameters may be provided as classes of ARC parameters in various manners. In some examples, the classes of ARC parameters include upsample and / or downsample coefficients and are separated or combined in the X and Y dimensions. In one example, one or more short syntax elements may be coded that can point to tables that include the upsample and / or downsample coefficients.
[0098] In some examples, the class of ARC parameters includes upsample and / or downsample coefficients with an additional time dimension to indicate a constant rate of zooming in and / or zooming 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 upsample and / or downsample coefficients with an additional time dimension.
[0099] In some examples, the classes of ARC parameters include resolutions in the X or Y dimensions of an input picture, an output picture, a reference picture, a coded picture, in units of sample, block, macroblock, CU, or any other suitable granularity, either in combination or separately. In some examples, there is more than one resolution 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 further detail below.
[0100] In some examples, the ARC parameter class includes warping coordinates similar to those used in H.263 Annex P, with appropriate granularity as described above. H.263 Annex P defines efficient methods for coding warping coordinates. Other efficient methods can be devised. For example, the variable-length reversible Huffman-type coding of Annex P warping coordinates can be replaced by appropriate-length binary coding, where the length of the binary codeword can be derived from the maximum picture size multiplied by a factor and offset by a value to allow warping outside the boundaries of the maximum picture size.
[0101] 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 may be signaled to allow for greater flexibility in filter design. The filter parameters may be selected by using an index in a list of possible filter designs. The filters may be specified completely (e.g., by specifying a list of filter coefficients using an appropriate entropy coding technique), the filters may be selected implicitly by the upsample or downsample ratio signaled according to any of the above mechanisms, and / or may be selected in other manners.
[0102] In the following description, a finite set of upsample or downsample coefficients (the same coefficients used in both the X and Y dimensions) is used to indicate that the ARC parameters are signaled by the codeword. In some examples, the codeword can be variable length coded, for example, using Ext-Golomb codes for certain syntax elements in video coding specifications (e.g., H.264 and H.265).
[0103] FIG. 10 shows an example of a table (1000) for mapping upsampled or downsampled coefficients, codewords, and Ext-Golomb codes.
[0104] It is noted that other similar mappings can be devised according to the application and capabilities of upscaling and downscaling mechanisms available in video compression techniques or standards. In some examples, Table 1 can be appropriately extended to further values. Values may 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., the encoder and decoder), for example by a media-aware network element (MANE). In some examples, when no change of resolution is required (e.g., when the source / target resolution is 1 in Table 1), a short Ext-Golomb code (e.g., only 1 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.
[0105] 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 corresponding semantics 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 technique or standard, and one of the tables may be selected, for example, by an SPS or DPS.
[0106] ARC information, such as upsample or downsample coefficients coded as described above, may be included in the syntax of a video coding technique or standard. Note that one or more codewords may be used to control other classes of ARC information, such as an upsample filter or a downsample filter. In some instances, a relatively large amount of data is required for the filters or other data structures.
[0107] Referring to Figure 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) is applicable when i) a picture header is available and ii) frequent changes of the ARC information are expected. However, the overhead when using H.263 type signaling as shown in the example (910) can be high. Also, because of the possible temporal nature of the picture header, the scaling factors may not be applicable between picture boundaries.
[0108] Referring to FIG. 9, in an example (920) such as JVCET-M135-v1, an ARC reference (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 a negotiation point for interoperability during the exchange of capabilities. With a reference (e.g., ARC reference (925)) in the appropriate PPS (924), the resolution can be changed from one picture to another, among a limited set of values (e.g., resolutions 1-3) in the table (926).
[0109] 9 also illustrates additional techniques that may be used to convey ARC information in a video bitstream, such as examples 930, 940, and 950. These techniques may be used individually or in any suitable combination within the same video coding technology or standard.
[0110] Referring to Figure 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 Figure 9. The technique shown in 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 fixed length codeword of a few bits.
[0111] According to aspects of the disclosure, having the ARC information (939) directly in a header (e.g., the tile group header (938) in FIG. 9, a slice header, or a tile header) can have the additional 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. Furthermore, 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) from an error resiliency standpoint.
[0112] Referring to FIG. 9, in an example (940), the ARC information (942) may be present in 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 shown in FIG. 9. In some examples, the scope of application of a parameter set (941) may not be larger than a picture, e.g., a picture, a tile group, etc. The use of the ARC information (e.g., ARC information (942)) may be implicit by the activation of an associated parameter set (e.g., APS (941)). For example, if a video coding technology or standard only considers picture-based ARC, then a PPS or equivalent may be appropriate.
[0113] Referring to Figure 9, in an example (950), as described above, the ARC reference information (953) may be present in a tile group header (954) or a similar data structure (e.g., a picture header, a slice header, a tile header, or a GOP header). A tile group header (954) is shown in Figure 9 as an example. The ARC reference information (953) can reference a parameter set (956) that has scope beyond a single picture, e.g., a subset of the ARC information (955) available in an SPS, DPS, etc. An SPS (956) is shown in Figure 9 as an example.
[0114] 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 diagrams loosely follows C-style programming. Bolded lines may indicate syntax elements present in the bitstream, and non-bolded lines may indicate control flow or variable settings.
[0115] 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 or not adaptive resolution is used for a picture or part of a picture can be signaled in a high level syntax structure (eg, SPS (1110) in FIG. 11) inside or outside the bitstream.
[0116] Referring to Figure 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). If the flag (1111) is true, the flag (1111) may indicate the use of adaptive resolution, which may require certain control information. In one example, the certain control information is conditionally present based on the value of the flag (1111), as indicated by the if() statement (1112) in the tile group header (1101) and the SPS (1110).
[0117] When adaptive resolution is used, as in the example of FIG. 11, 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 may define specific limitations on the value of the output resolution (1113). For example, a level definition may limit the total number of 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), may limit the numerical range of the width and / or height resolution (e.g., the width and / or height resolution is 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.
[0118] In certain applications, an encoder can instruct a 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). In one example, the reference picture dimension (1115) can include both a width (e.g., reference_pic_width_in_luma_samples) and a height (e.g., reference_pic_height_in_luma_samples).
[0119] Also shown in Figure 11 are applicable decoded picture width and height tables. In one example, the number of entries in the table may be represented by a table indication (e.g., syntax element num_dec_pic_size_in_luma_samples_minus1) (1116). "minus1" may indicate 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).
[0120] 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 per tile group.
[0121] According to aspects of this disclosure, certain video coding techniques or standards (e.g., VP9) may enable spatial scalability by implementing certain forms 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 basis of a spatial enhancement layer. The upsampled pictures can be refined using regular prediction mechanisms (e.g., motion compensated prediction for inter prediction from the reference picture) at the higher resolution, for example to add detail.
[0122] In some examples, values in a network abstraction layer (NAL) unit header, e.g., a Time ID field, are used to indicate temporal and spatial layer information. Using values in a NAL unit header to indicate both temporal and spatial layer information can enable existing selected forwarding units (SFUs) to be used in a scalable environment without modification. For example, existing SFUs can be created and optimized for temporal layer selection forwarding 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 can be provided between coded picture sizes and temporal layers indicated by the Time ID field in the NAL unit header.
[0123] According to an aspect of the present disclosure, some characteristics of the encoded bitstream can be specified using profile, tier and level combination (PTL) information, which includes profile, tier, level and general constraint information. In some examples, a profile defines a subset of the characteristics of the bitstream, such as color reproduction, resolution, further video compression. 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), a main profile (e.g., a profile with a medium compression ratio between the baseline profile and the high profile, which can be the default profile setting), etc.
[0124] 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 and High. The Main layer is a layer lower than the High layer. These layers are made to handle different applications at 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, a decoder that complies with a given layer / level should be able to decode all bitstreams encoded for that layer / level and all lower layers / levels.
[0125] The general constraint information may include constraint information regarding video source type, coding tools, and features. For example, the constraint flags may indicate whether inter-coding tools, intra-coding tools, DBF, entropy coding, transform, partitioning (e.g., tiles, slices), buffer management, random access (e.g., IDR), parameter sets (e.g., SPS, PPS), etc. are present or used in the coded video bitstream. The constraint information may be signaled in a parameter set (e.g., SPS, VPS, or DCI). The constraint flags may be signaled in a high-level syntax structure (e.g., SPS, VPS, DCI).
[0126] According to some aspects of the disclosure, the PTL information can be associated with a scope (e.g., a portion of the encoded video data within a bitstream). In some examples, the PTL information can be specified for, e.g., the entire bitstream, the CVS of the bitstream, each output layer set (OLS) of the bitstream, etc., and can be signaled in high-level syntax (HLS) structures such as VPS, DPS, DCI, SPS, PPS, APS, GOP, sequence, header, SEI message, etc.
[0127] In some examples, a high level syntax (HLS) is defined with respect to the block level. Block level coding tools can be used to decode pixels or samples within a picture and reconstruct the picture. 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 (ALF), deblocking filters (DBF), entropy coding, transforms, etc.
[0128] High level syntax (HLS) can specify information about capabilities, system interfaces, picture level control of tools, buffer control, etc. For example, HLS can specify partitioning (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, etc. High level syntax can be above the block level.
[0129] 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, etc. In some examples, the PTL information may be part of the control information and may be signaled as a constraint flag in the HLS structure to indicate control or constraint of a tool 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 a particular tool is disabled by a constraint flag in the HLS structure, for example, for coding blocks within the scope corresponding to the HLS, the tool is not used.
[0130] 12 and 13 show examples of PTL information according to some embodiments of the present disclosure. Fig. 12 shows an example of a syntax structure of a set of PTL syntax elements (1200), and Fig. 13 shows an example of a syntax structure of general constraint information (1300).
[0131] 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.
[0132] 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 should 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 may not impose a constraint (e.g., sh_slice_type should be I) on all coded pictures within the scope of the PTL information, and 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 can 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) equal to 0 does not impose the above constraint.
[0133] 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) equal to 1 may indicate that coding tools related to lossless encoding cannot be used within the scope of the PTL information including 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.
[0134] 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) equal to 1 may indicate that coding tools related to lossy encoding cannot be used within the scope of the PTL information including 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.
[0135] In one embodiment, if the constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1302) is equal to 1, then the constraint flag (e.g., no_lossless_coding_tool_constraint_flag) (1301) may not be equal to 1. Alternatively, if the constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1301) is equal to 1, then the constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1302) may not be equal to 1.
[0136] The multiple constraint flags in the general constraint information can be sorted in a particular order. The order can be set, for example, based on the likelihood that the respective mechanism and / or tool is not used within the scope of the PTL. The order can be referred to as a priority order. The order can be indicated in the general constraint information syntax structure from high priority to low priority, with a high priority indicating that the tool (or mechanism) has a high likelihood of not being used and a low priority indicating that the tool (or mechanism) has a low likelihood of not being used. Further factors influencing the order can include tools that are likely to be used only for certain use cases (e.g., tools for sub-picture, scalability, and / or interlace support), the impact of the tool on encoder / decoder / implementation complexity, etc.
[0137] 14A-14B show example PTL information including an example syntax structure (1410) of a PTL syntax structure (also referred to as a PTL bracket) and an example syntax (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 (e.g., num_available_constraint_flags) indicating the number of constraint flags can be signaled. In one example, the syntax element indicating the number of constraint flags can be signaled in the PTL syntax structure, as shown in the example syntax (1401) shown in FIG. 14A, which can be outside the example syntax (1420) of the general constraint information bracket. 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). If 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, then 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 be a non-negative integer.
[0138] 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. If the value N (e.g., num_available_constraint_flags) is equal to 0, then 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 constraint flags and the corresponding entropy coding representation of the value N can be summed up to a number divisible by 8 to ensure byte alignment.
[0139] 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 gating flag. The gating flag of the corresponding constraint information group can indicate whether the constraint flag in the corresponding constraint information group is present or not. In one example, the gating flag can be referred to as a constraint group present flag. Generally, the gating 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 gating flag gates whether the constraint flag in the corresponding constraint information group is present (or signaled) or not in the constraint information. For example, if the gating flag of the corresponding constraint information group is equal to 1, the constraint flag corresponding to the constraint information group can be present, for example, in the general constraint information. If the gating flag of the corresponding constraint information group is equal to 0, the constraint flag corresponding to the constraint information group may not be present, for example, in the general constraint information. For example, if all the gating flags are equal to 0, no constraint flag is present.
[0140] Constraint flags can have different scopes of applicability. For example, the scope of a constraint flag in a DCI can be a 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.
[0141] 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.
[0142] 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) in 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) in the constraint information group (1510) may be present.
[0143] The constraint information group (1510) (or constraint flags (1511)-(1514)) can be associated with 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 1 can specify that the constraint flags (1511)-(1514) in the constraint information group (1510) do not have to be present in the general constraint information syntax structure (1500).
[0144] 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) in the constraint information group (1520) may be present, as shown in FIG. 15B. Otherwise, a gating flag (e.g., high_level_functionality_constraint_group_flag) (1502) equal to 0 may specify that constraint flags in the constraint information group (1520) may not be present in the general constraint information syntax structure (1500).
[0145] Returning to Figure 15A, a gate flag (e.g., scalability_constraint_group_flag) (1503) equal to 1 can 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).
[0146] A gate flag (e.g., partitioning_constraint_group_flag) (1504) equal to 1 can 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).
[0147] 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).
[0148] 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 inter-picture prediction) may be present. Otherwise, constraint flags related to inter-coding may not be present in the general constraint information syntax structure (1500).
[0149] 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).
[0150] In one embodiment, if all gate flags (eg, gate flags (1501)-(1508) in FIG. 15A) are equal to 0, the constraint flag is not present in the general constraint information syntax structure (eg, general constraint information syntax structure (1500)).
[0151] According to an aspect of the present disclosure, the syntax can be designed to allow control information, including gate flags (e.g., gate flags (1501)-(1508)), associated constraint flags (e.g., constraint flags (1511)-(1512) and constraint flag (1520) in the constraint information group), further control information, etc., to 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. To achieve byte alignment of the control information, a byte alignment mechanism can be used. Referring to FIG. 15B, a syntax (e.g., a while loop) (1530) can be used for byte alignment.
[0152] In some embodiments, offset information such as offset (e.g., using syntax element constraint_info_offset[]) and length information such as 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 aid in the presentation of constraint flags in the respective constraint information group relative to 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 encoded 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 in the constraint information group, and the length may indicate the number of constraint flags in the constraint information group. In some examples, the number of constraint information groups may be explicitly indicated, for example, by syntax element num_constraint_info_set. The value of num_constraint_info_set may be an integer equal to or greater than 0. If the value of num_constraint_info_set is 0, then constraint_info_offset[], constraint_info_length[] and constraint flags are not present in the general constraint information syntax structure.
[0153] 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 support the presentation of constraint flags of constraint information group i (i is a positive integer) in the constraint information (e.g., general constraint information syntax structure). In one example, if 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).
[0154] In one example, run-length coding may be used to code the specified constraint flags in a predefined order (or a given sequence).
[0155] In one embodiment, if the constraint flags are specified in a predefined order (or a given sequence), then a ranking can be used. 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 following constraint flags are equal to 1. The above ranking 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.
[0156] 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 coded or run decoded). Furthermore, prediction information for a subset of the coding blocks can be determined based on the constraint flags.
[0157] 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).
[0158] 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, such as the number of available constraint flags (e.g., num_available_constraint_flags), gate flags (or constraint group present flags), constraint information offset information, and constraint information length information, etc., present in the encoded video stream.
[0159] In one example, a complete list of constraint flags is specified and made 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 the 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.
[0160] 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.
[0161] In one embodiment, any of a variety of techniques (or methods, embodiments, examples) for efficiently encoding the constraint flags using appropriate control information can be combined. The combination may 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. Certain groups may use run coding, while other groups may use simple binary coding.
[0162] The value of the maximum number of constraint flags (eg, MaxNumConstraintFlags) can be predefined to be 16, 32, 64, 128, and so on.
[0163] The value of the maximum number of constraint flags (e.g., MaxNumConstraintFlags) can be determined by profile information such as general_profile_idc or 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., when MaxNumConstraintFlags=64) can range from 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., when MaxNumConstraintFlags=128) can range from 0 to 128.
[0164] In one embodiment, the value of the number of constraint flags (e.g., num_available_constraint_flags) can be assumed to be equal to a value predefined by profile information such as general_profile_idc or general_sub_profile_idc or codec version information, such that the value of num_available_constraint_flags can be determined without explicit signaling.
[0165] 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 the 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 further flags (e.g., further constraint flags). The flag gci_reserved_byte[] may have any suitable value.
[0166] In one embodiment, the value of gci_num_reserved_bytes may be limited or determined by profile information such as general_profile_idc or general_sub_profile_idc or codec version information. In the base profile (or main profile), the value of the flag gci_num_reserved_bytes can be 0. In the extended profile (or advanced profile), the value of gci_num_reserved_bytes can be greater than 0.
[0167] In some embodiments, a field sequence flag may be signaled in the coded video bitstream. The field sequence flag may indicate whether a picture in 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.
[0168] In the general constraint information syntax structure in FIG. 13, a flag general_frame_only_constraint_flag may be present. The flag general_frame_only_constraint_flag equal to 1 may specify that the scope of application (e.g., OlsInScope) of the output layer set conveys pictures that represent frames. The flag general_frame_only_constraint_flag equal to 0 specifies that the scope of application (e.g., OlsInScope) of the output layer set 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 the coding blocks. The flag sps_field_seq_flag may be false based on the flag general_frame_only_constraint_flag (e.g., being 1) indicating that the subset of pictures is not coded with field coding. The subset of pictures may be in one layer of the output layer set.
[0169] If 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.
[0170] 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 more than one VCL NAL unit, and that the VCL NAL units do not have the same value of nal_unit_type. 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 that the VCL NAL units of each picture that references the PPS have the same value of nal_unit_type. In the general constraint information syntax structure in FIG. 13, the flag no_mixed_nalu_types_in_pic_constraint_flag may be present. 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 shall be equal to 0. The flag no_mixed_nalu_types_in_pic_constraint_flag equal to 0 does not impose such a constraint.
[0171] 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. general_one_picture_only_constraint_flag equal to 1 may specify that there is only one coded picture in the bitstream. The flag general_one_picture_only_constraint_flag equal to 0 does not impose such a constraint.
[0172] 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 shall be equal to 0. The flag single_layer_constraint_flag equal to 0 does not impose such constraint. If 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.
[0173] 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. If 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.
[0174] 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 constraint. If 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.
[0175] In one embodiment, the flag no_mixed_nalu_types_in_pic_constraint_flag may be present in the general constraint information syntax structure in 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. If 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.
[0176] In one embodiment, the flag no_trail_constraint_flag may be present in the general constraint information syntax structure in Figure 13. The flag no_trail_constraint_flag equal to 1 may specify that NAL units with nuh_unit_type equal to TRAIL_NUT may not be present in OlsInScope (OlsInScope is the output layer set that includes all layers of the entire bitstream that references the DPS). The flag no_trail_constraint_flag equal to 0 does not impose such constraint. If the flag general_one_picture_only_constraint_flag is equal to 1, the flag no_trail_constraint_flag may be equal to 1.
[0177] In one embodiment, the flag no_stsa_constraint_flag may be present in the general constraint information syntax structure in Figure 13. The flag no_stsa_constraint_flag equal to 1 may specify that NAL units with nuh_unit_type equal to STSA_NUT may not be present in OlsInScope. The flag no_stsa_constraint_flag equal to 0 does not impose such constraint. If the flag general_one_picture_only_constraint_flag is equal to 1, the flag no_stsa_constraint_flag may be equal to 1.
[0178] In one embodiment, the flag no_trail_constraint_flag may be present in the general constraint information syntax structure in Figure 13. The flag no_trail_constraint_flag equal to 1 may specify that NAL units with nuh_unit_type equal to TRAIL_NUT may not be present in OlsInScope. The flag no_trail_constraint_flag equal to 0 does not impose such constraint. If the flag general_one_picture_only_constraint_flag is equal to 1, the flag no_trail_constraint_flag may be equal to 1.
[0179] In one embodiment, the flag no_stsa_constraint_flag may be present in the general constraint information syntax structure in Figure 13. The flag no_stsa_constraint_flag equal to 1 may specify that NAL units with nuh_unit_type equal to STSA_NUT may not be present in OlsInScope. The flag no_stsa_constraint_flag equal to 0 does not impose such constraint. If the flag general_one_picture_only_constraint_flag is equal to 1, the flag no_stsa_constraint_flag may be equal to 1.
[0180] 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 NAL units with nuh_unit_type equal to IDR_W_RADL or IDR_N_LP may not be present in OlsInScope. The flag no_idr_constraint_flag equal to 0 does not impose such a constraint.
[0181] 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 NAL units with nuh_unit_type equal to CRA_NUT may not be present in OlsInScope. The flag no_cra_constraint_flag equal to 0 does not impose such a constraint.
[0182] In one embodiment, the flag no_rasl_constraint_flag may be present in the general constraint information syntax structure in FIG. 13 (the flag no_rasl_constraint_flag is not shown). The flag no_rasl_constraint_flag equal to 1 may specify that NAL units with nuh_unit_type equal to RASL_NUT may not be present in OlsInScope. The flag no_rasl_constraint_flag equal to 0 does not impose such constraint. If the flag no_cra_constraint_flag is equal to 1, the value of the flag no_rasl_constraint_flag may be equal to 1.
[0183] 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 NAL units with nuh_unit_type equal to RADL_NUT may not be present in OlsInScope. The flag no_radl_constraint_flag equal to 0 does not impose such constraint. If 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.
[0184] Some aspects of the present disclosure provide techniques for signaling constraint flags for range extension, such as range extension with persistent Rice adaptation (e.g., range extension including coding tools for statistically-based Rice parameter derivation in residual coding).
[0185] According to an aspect of the present disclosure, the residual coding can be performed based on Rice coding. Rice coding uses adjustable parameters to split an input value into two parts and then codes the two parts using different coding techniques. The adjustable parameters are referred to as Rice parameters in some examples. The Rice parameters can affect the coding efficiency of the Rice coding. Techniques can be used to determine the Rice parameters for a particular application and improve the coding efficiency of the particular application. Some techniques for determining the Rice parameters may be included in the scope extension of the video standard.
[0186] According to aspects of the present disclosure, some standards may have been originally developed for a particular application. To make the standard applicable to other applications, range extensions are developed with tools to support other applications. For example, HEVC is initially targeted at applications having a 4:2:0 chroma format with 8-10 bits per sample. To make the HEVC standard applicable to other formats and bit depths than the particular chroma format and the particular bit depth, range extensions can be developed to support applications using other chroma formats and / or higher bit depths.
[0187] To limit the feature set to what is needed for a particular group of applications, video coding standards define profiles, which may include a predefined 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 conforming bitstream. In addition to profiles, some standards (e.g., VVC, HEVC, etc.) also define levels and tiers. Levels impose restrictions on the bitstream related to spatial resolution, pixel rate, bitrate values, and variances that may accommodate the decoder's processing load and memory capabilities. Level restrictions can be expressed by maximum sample rate, maximum picture size, maximum bitrate, minimum compression ratio, capacity of the coded picture buffer, etc. Higher values of the level may correspond to higher complexity restrictions. Tiers vary the bitrate values and variance restrictions per level. For example, the Main tier is intended for most applications, while the High tier is designed to accommodate more demanding video contribution applications, such as those with significantly higher bitrate values than video distribution applications. Each of the profiles, layers and levels impacts implementation and decoding complexity, and the combination of the three specifies the interoperability point of bitstreams and decoders.
[0188] In some examples, a decoder that conforms to a particular layer and level must be able to decode all bitstreams that conform to the same layer or lower layers at that level or any level below, and a decoder that conforms to a particular profile can support all features in that profile. In some examples, an encoder is not required to use any particular set of features supported in a profile, but must generate a compliant bitstream, i.e., a bitstream that obeys specified constraints that can be decoded by a compliant decoder.
[0189] In addition to the PTL information, the PTL syntax structure may also include a general constraints information (GCI) syntax structure that contains a list of constraint flags and non-flag syntax elements that indicate specific constraint properties of the bitstream.
[0190] As an example, HEVC originally included three profiles called Main Profile, Main 10 Profile, and Main Still Picture Profile. The three profiles have some limitations, such as supporting only 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. In the Main Still Picture Profile, the entire bitstream contains only one coded picture.
[0191] In some examples, HEVC with range extension can support additional profiles. In one example, the 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 Picture profile, and Main 4:4:4 16 Still Picture profile are collectively referred to as range extension profiles.
[0192] Some of the range extension profiles can support higher bit depths and can be referred to as profiles for extended operating range with high bit depths. In some examples, profiles for extended operating range with high bit depths 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 Picture profile, the Main 12 4:4:4 Still Picture profile, the Main 16 4:4:4 Still Picture profile, etc.
[0193] Specifically, the Main 12 profile supports 4:0:0 and 4:2:0 chroma sampling, both intra and inter prediction modes, and allows bit depths from 8 to 12 bits per sample. In some examples, a decoder conforming to the Main 12 profile can decode bitstreams created in the Monochrome, Monochrome 12, Main, Main 10, and Main 12 profiles.
[0194] 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 can decode bitstreams created in the 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.
[0195] The Main 16 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.
[0196] The Main 12 Intra profile supports 4:0:0 and 4:2:0 chroma sampling, as well as intra prediction modes, allowing bit depths from 8 to 12 bits per sample.
[0197] The Main 12 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.
[0198] The Main 16 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.
[0199] The Main 12 Still Picture profile supports 4:0:0 and 4:2:0 chroma sampling, allowing bit depths from 8 to 12 bits per sample. In the Main 12 Still Picture profile, the entire bitstream contains only one coded picture.
[0200] The Main 12 4:4:4 Still Picture 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 Picture profile, the entire bitstream contains only one coded picture.
[0201] The Main 16 4:4:4 Still Picture 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 Picture profile, the entire bitstream contains only one coded picture.
[0202] According to some aspects of the disclosure, the coding tool control can be performed at various scopes (e.g., a portion of the coded video data coded depending on the persistence of an instance of a syntax element for the coding tool control), such as a bitstream scope, a coded layer video sequence (CLVS) scope, a picture, a slice of a picture, etc. In some examples, the coding tool control can be provided in a general constraint information (GCI) syntax structure that generally includes constraint information for a bitstream that conveys an output layer set to a decoder. In some examples, the coding tool control can be provided in a sequence parameter set (SPS) associated with the CLVS, where the SPS generally includes information for the CLVS. In some examples, the coding tool control can be provided in a picture header of a picture, where the picture header generally includes information for the picture. In some examples, the coding tool control can be provided in a slice header of a slice, where the slice header generally includes information for the slice.
[0203] According to aspects of the present disclosure, control information for coding tools in range extensions can be provided with various scopes of applicability. In some examples, the use of syntax elements with greater scope of applicability may 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, thereby allowing (but not requiring) the associated coding tool to be used in the bitstream (if its use is supported in the specified profile).
[0204] According to another aspect of the present disclosure, if a coding tool is not used in coding the video data in the bitstream, for example if the PTL information and / or general constraint information indicates non-use of the coding tool, a video decoder without support for the coding tool may determine that the video decoder can decode the bitstream based on signaling in the PTL information and / or general constraint information, thereby extending the functionality of the video decoder.
[0205] In some embodiments, an encoder can generate a bitstream that complies with the video standard with a range extension, but does not utilize 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, with the knowledge that it will not use one or more features in the range extension, may determine that the decoder can decode the bitstream and may accept the bitstream for decoding instead of rejecting the bitstream.
[0206] 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, a syntax element denoted gci_num_additional_bits in 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 0 bit syntax element (if present). In some standards, the value of gci_num_additional_bits is required to 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.
[0207] In the example of Figure 16, the syntax structure (1600) includes five further 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. In some examples, the five further GCI bits (1601)-(1605) each provide coding control information for a coding tool within the scope of the output layer set bitstream.
[0208] 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) can be added to an SPS for CLVS to provide coding tool control of the range extension for CLVS. The syntax structure (1700) includes five syntax elements (1701)-(1705) denoted 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. In some examples, the five syntax elements (1701)-(1705) provide coding tool coding control information within the scope of the CLVS.
[0209] Specifically, in one embodiment, GCI bits (1601) and syntax elements (1701) are used to provide control over the use of extended precision in different applications, such as control of the extended dynamic range of coding tools for transform coefficients in the scaling and transformation process, and for the binarization of some syntax elements, such as abs_remainder[] and dec_abs_level[].
[0210] A syntax element (1701) equal to 1 specifies that the extended dynamic range is used for transform coefficients in the scaling and transformation process and for binarization of some syntax elements such as abs_remainder[] and dec_abs_level[]. The syntax element abs_remainder[scan position n] is the absolute value of the remainder of the transform coefficient level coded with a Golomb-Rice code at scan position n. If abs_remainder[] is not present, it is inferred to be equal to 0. The syntax element dec_abs_level[scan position n] may correspond to an intermediate value coded with a Golomb-Rice code at scan position n and is used to determine the level of the transform coefficient at scan position n. A syntax element (1701) equal to 0 specifies that the extended dynamic range is not used in the scaling and transformation process and is not used for binarization of some syntax elements such as abs_remainder[] and dec_abs_level[]. If not present, the value of the syntax element (1701) is inferred to be equal to 0.
[0211] In one example, a variable denoted Log2TransformRange is used to determine a dynamic range for transform coefficients in the scaling and transformation process and for binarization of a particular syntax element. For example, the variable Log2TransformRange may be a number of bits for representing transform coefficients in the scaling and transformation process and for binarization of a particular syntax element. The dynamic range may be the difference between the maximum number and the minimum number represented using the number of bits. In one example, the variable Log2TransformRange is derived according to the syntax element (1701) sps_extended_precision_flag, such as using equation (1). Log2TransformRange=sps_extended_precision_flag?Max(15,Min(20,BitDepth+6)):15 Formula (1)
[0212] The dynamic range for the transform coefficients in the scaling and transform process and for the binarization of certain syntax elements can 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 feature (e.g., the extended dynamic range coding tool) 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 feature is enabled and the number of bits representing the transform coefficients in the scaling and transform process can 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 can be determined based on the number of bits.
[0213] According to an aspect of the present disclosure, a syntax element (e.g., denoted as sps_bitdepth_minus8) may be used to signal the bit depth of samples of the luma and chroma arrays (e.g., denoted as BitDepth) and the values of the luma and chroma quantization parameter range offsets (e.g., denoted as 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)
[0214] In some examples, a GCI bit (1601) equal to 1 specifies that the syntax element (1701) of all pictures within the scope of application (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 that the extended dynamic range is not to be used in coding the bitstream.
[0215] In some embodiments, the GCI bits (1602) and syntax elements (1702) are used to provide control of coding tools of slice-based Rice coding for residual coding in transform skip mode, such as selection of slice-based Rice parameters for residual coding in transform skip mode, at different scopes.
[0216] According to an aspect of the present disclosure, slice-based Rice parameter selection for transform skip residual coding may be included in the scope extension of the video standard. In some examples, as shown in FIG. 17, when transform skip mode is enabled (e.g., when syntax element sps_transform_skip_enabled_flag is true), one control flag (e.g., as shown by syntax element sps_ts_residual_coding_rice_present_in_sh_flag (1702)) is signaled in the sequence parameter set (SPS) to indicate that signaling of Rice parameters for transform skip slices is enabled or disabled.
[0217] If the control flag is signaled as enabled (e.g., equal to "1"), one syntax element per transform skip slice (e.g., indicated by sh_ts_residual_coding_rice_idx_minus1) may be further signaled, e.g., in the slice header, to indicate the Rice parameter selection for that transform skip slice. If 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.
[0218] For example, a syntax element (1702) equal to 1 in the 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 the 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. In some examples, if not present, the value of sps_ts_residual_coding_rice_present_in_sh_flag is inferred to be equal to 0.
[0219] 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 of application (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 not to use a slice-based Rice parameter selection for transform skip residual coding for coding the bitstream.
[0220] 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, with different scopes, for binarization of some syntax elements, such as abs_remainder[] and dec_abs_level[] in regular residual coding (RRC). 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 only by quantization. In some examples, transform skip residual coding (TSRC) refers to some techniques dedicated to coding blocks obtained bypassing a transform (also called transform skip).
[0221] 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 scope 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[ ].
[0222] In some examples, the video standard uses a local template-based technique for Rice parameter derivation. For example, a template including one or more (e.g., five in one example) adjacent coefficient levels is used for Rice parameter derivation. For example, the sum of absolute coefficient values in the template can be calculated, and then the Rice parameter can be determined based on the sum. In one example, a look-up table can be used to determine the Rice parameter based on the sum.
[0223] It is noted that the Rice parameters can be determined by other suitable coding tools. In one example, a formula can be used to determine the Rice parameters based on the sum. In another example, context modeling can be used to determine the Rice parameters based on statistics of adjacent coefficient levels. In some examples, a scope extension of the video standard can specify one or more alternative coding tools for Rice parameter derivation.
[0224] In some examples, range extensions of the video standard may include modifications of the RRC for use in other scenarios. In one example, the range extensions may include different context modeling tools and residual signal rotation tools for residual coding in transform skip mode.
[0225] 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. If not present, the value of the syntax element (1703) is inferred to be equal to 0.
[0226] In some examples, a syntax element (1603) equal to 1 specifies that the syntax element (1703) of all pictures within the scope of application (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 can specify not to use an alternative Rice parameter derivation (e.g., an alternative coding tool for Rice parameter derivation specified in a specified range extension) for binarization of abs_remainder[] and dec_abs_level[] for coding the bitstream.
[0227] In some embodiments, the GCI bits (1604) and syntax elements (1704) provide control of the statistically-based Rice parameter derivation for binarization of abs_remainder[] and dec_abs_level[], with different scopes.
[0228] According to an aspect of the present disclosure, the Rice parameter derivation for binarization of abs_remainder[] and dec_abs_level[] can be initialized at the beginning of each transform unit (TU) using accumulated statistics from previous TUs. In some examples, the statistics-based Rice parameter derivation can be included in a range extension of a video standard.
[0229] In some examples, a control flag, e.g., a syntax element (1704) denoted by 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. If not present, the value of the syntax element (1704) is inferred to be equal to 0.
[0230] Additionally, in one embodiment, a syntax element (1604) equal to 1 specifies that the syntax element (1704) of all pictures within the scope of application (OlsInScope) of the output layer set 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 can specify not to use a statistically-based Rice parameter derivation for coding the bitstream.
[0231] In some embodiments, the GCI bits (1605) and syntax elements (1705) are used to provide control over the coding tool used to code the location of the last significant coefficient during entropy coding of the transform coefficients, at different scopes. 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. Also, in one example, a scope 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.
[0232] In some examples, a syntax element (1705) equal to 1 in an SPS specifies that a slice header flag (slice scope) indicated by sh_reverse_last_sig_coeff_flag is present in a slice header syntax structure (e.g., slice_header() in some examples) that references the SPS. A syntax element (1705) equal to 0 in an SPS specifies that the slice header flag sh_reverse_last_sig_coeff_flag is not present in a slice header syntax structure that references the SPS, and the slice header flag sh_reverse_last_sig_coeff_flag may be inferred to be 0. If not present, the value of the syntax element (1705) is inferred to be equal to 0.
[0233] 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 coefficient in the scaling and transform process in coding of the slice. In one example, if 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 scope extension of the video standard, such as a second coding tool. Otherwise, the current coordinate of the location of the last significant coefficient is coded by the first coding tool.
[0234] In some examples, a GCI bit (1605) equal to 1 specifies that the syntax element (1705) of all pictures within the scope of application (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 can specify that the second coding tool is not used in deriving the position of the last significant coefficient in the scope of the bitstream.
[0235] FIG. 18 shows a flow chart outlining a process (1800) according to one embodiment of the present disclosure. The process (1800) can 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 begins at (S1801) and proceeds to (S1810).
[0236] At (S1810), a first syntax element (e.g., general_no_persistent_rice_adaptation_constraint_flag) for coding control within a first scope (e.g., output layer set) of encoded video data in the bitstream is determined. The first syntax element is associated with coding tools for statistically-based Rice parameter derivation in residual coding, such as coding tools for persistent Rice adaptation defined in the scope extension of the video standard for statistically-based Rice parameter derivation in residual coding.
[0237] In one example, a first syntax element is decoded from the syntax structure for general constraint information in response to a syntax element (e.g., gci_num_additional_bits) in the syntax structure indicating additional bits for general constraint information in the syntax structure.
[0238] In some examples, the coding tools are defined in a range extension of the standard. In one example, a video decoder may support the standard but may not support the coding tools in the range extension of the standard. In another example, the video decoder supports the range extension of the standard.
[0239] In (S1820), if the first syntax element is a first value, the process proceeds to (S1830), otherwise, the process proceeds to (S1840). The first value indicates no use of a coding tool in coding a first scope of coverage of the encoded video data in a bitstream that includes one or more second scopes of coverage of the encoded video data (e.g., one or more CLVSs in an output layer set).
[0240] In some examples, the first syntax element is in general constraint information for coding control of pictures in an output layer set to be output at a decoder. In one example, the first value of the first syntax element indicates no use of a coding tool in coding each coded layer video sequence (CLVS) in the output layer set.
[0241] At (S1830), in response to the first syntax element being the first value, a first scope of the encoded video data in the bitstream is decoded without invoking a coding tool.
[0242] In some examples, a second syntax element for coding control of a coded layer video sequence (CLVS) in a bitstream (e.g., sps_persistent_rice_adaptation_enabled_flag) is constrained to have a value indicating not to invoke a coding tool for decoding the CLVS.
[0243] In (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 scope of the coded video data, such as a coding layer video sequence (CLVS) in the bitstream, is determined for decoding the coded video data in the second scope of the code. The second syntax element indicates use / non-use of a coding tool in the CLVS. In one example, if the second syntax element is not indicated in a sequence parameter set (SPS) of the CLVS, the value of the second syntax element is inferred to indicate non-use of a coding tool in the CLVS.
[0244] A second scope of the encoded video data is then decoded (e.g., with or without invoking a coding tool) according to a value of the second syntax element. In some examples, a coding tool is invoked during the decoding of the video data in the second scope of the encoded video data in response to the value of the syntax element indicating the use of a coding tool in the CLVS. For example, statistics of coefficients decoded from one or more transform units prior to the current transform unit can be determined. An initial value of a Rice parameter for the current transform unit can then be determined based on the statistics. The coefficients of the current transform unit can then be decoded based on the Rice parameter.
[0245] The process 1800 may be adapted as appropriate. Steps in the process 1800 may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.
[0246] 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 begins at (S1901) and proceeds to (S1910).
[0247] At (S1910), the processing circuit determines whether a coding tool for statistically-based Rice parameter derivation in residual coding (e.g., a coding tool of persistent Rice adaptation defined in the scope extension of the video standard for statistically-based Rice parameter derivation in residual coding) is used during encoding of a first scope of coded video data (e.g., an output layer set) in the bitstream. The first scope of coded video data includes one or more second scopes of coded video data (e.g., CLVS).
[0248] In some examples, the processing circuitry can determine whether the 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_persistent_rice_adaptation_enabled_flag).
[0249] If, at (S1920), the coding tool is not used in coding the first scope of the encoded video data, processing proceeds to (S1930), otherwise, processing proceeds to (S1940).
[0250] At (S1930), a first syntax element (e.g., general_no_persistent_rice_adaptation_constraint_flag) having a first value is coded into the bitstream. The first syntax element is for coding control in a first application scope (e.g., output layer set) of coded video data in the bitstream. The first syntax element is associated with a coding tool for statistically-based Rice parameter derivation in residual coding. The first value indicates non-use of the coding tool in coding of the first application scope of the coded video data.
[0251] In one example, a first syntax element is encoded into 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 for the general constraint information in the syntax structure.
[0252] At (S1940), the first syntax element having the second value is coded into the bitstream. In some examples, the first syntax element is not coded into the bitstream, e.g., if the second value is a default value for the first syntax element, it can be inferred if the first syntax element is not indicated, in which case (S1940) can be skipped.
[0253] The process 1900 may be adapted as appropriate. Steps in the process 1900 may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.
[0254] The techniques described above (e.g., techniques for signaling constraint flags, adaptive resolution parameters, etc.) can be implemented as computer software using computer readable instructions and can be 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.
[0255] Computer software can be coded using any suitable machine code or computer language and can be subject to assembly, compilation, linking, or similar mechanisms to produce code containing instructions that can be executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., either directly, or through interpretation, microcode execution, etc.
[0256] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, etc.
[0257] 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).
[0258] The computer system (2000) may include certain human interface input devices that may be responsive to input by one or more human users through, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), and olfactory input (not shown). Human interface devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from still image cameras), and video (e.g., two-dimensional video, three-dimensional video including stereoscopic video).
[0259] The input human interface devices may include one or more (only one of each is shown) 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).
[0260] The computer system (2000) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, 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 act as input devices), audio output devices (e.g., speakers (2009), headphones (not shown)), visual output devices (e.g., screens (2010) including CRT screens, LCD screens, plasma screens, OLED screens; each may or may not have touch screen input capability, each may or may not have haptic feedback capability, some of which may output two-dimensional visual output or higher than three-dimensional output through means such as stereoscopic output; virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0261] The computer system (2000) may also include human accessible storage devices and associated media, such as optical media including CD / DVD ROM / RW (2020) along with CD / DVD or similar media (2021), thumb drives (2022), removable hard drives or solid state drives (2023), legacy magnetic media such as tapes and floppy disks (not shown), specialized ROM / ASIC / PLD based devices (not shown) such as security dongles, etc.
[0262] 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.
[0263] The computer system (2000) may also include an interface (2054) to one or more communication networks (2055). The networks may be, for example, wireless, wired, optical. The networks may further be local, wide area, metropolitan, in-vehicle and industrial, real-time, delay tolerant, etc. Examples of networks include Ethernet, WLAN, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., TV wired or wireless wide area digital networks including cable television, satellite television, terrestrial broadcast television, in-vehicle and industrial including CANBus, etc. Certain networks usually require an external network interface adapter that is attached to a particular general purpose data port or peripheral bus (2049) (e.g., a USB port of the computer system (2000)). Others are usually integrated into the core of the computer system (2000) by attachment to a system bus as described below (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (2000) can communicate with other entities. Such communications may be unidirectional, receive only (e.g., broadcast television), unidirectional transmit only (e.g., CANbus to a specific CANbus device), or bidirectional, for example, to other computer systems using local or wide area digital networks. Specific protocols and protocol stacks may be used with each of these networks and network interfaces as described above.
[0264] The aforementioned human interface devices, human accessible storage devices, and network interfaces may be attached to a core (2040) of the computer system (2000).
[0265] The cores (2040) may include one or more central processing units (CPUs) (2041), graphics processing units (GPUs) (2042), specialized 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 (2046), internal mass storage devices (2047), such as internal non-user accessible hard drives, solid state drives (SSDs), etc. In some computer systems, the system bus (2048) may be 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). Architectures for peripheral buses include PCI, USB, and the like.
[0266] The CPU (2041), GPU (2042), FPGA (2043), and accelerator (2044) can execute certain instructions that, in combination, may constitute the above-mentioned computer code. The computer code may be stored in a ROM (2045) or a RAM (2046). Temporary data may also be stored in the RAM (2046), while persistent data may be stored, for example, in an internal mass storage device (2047). Rapid storage and retrieval from any of the memory devices may be enabled through the use of a cache memory that may be closely associated with one or more of the CPU (2041), GPU (2042), mass storage device (2047), ROM (2045), RAM (2046), etc.
[0267] The computer-readable medium can 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 having skill in the computer software arts.
[0268] By way of example and not limitation, the architecture (2000), and in particular a computer system having a core (2040), can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, 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 a particular storage of the core (2040) of a non-transitory nature, such as a mass storage device (2047) internal to the core or a ROM (2045). Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (2040). The computer-readable media can include one or more memory devices or chips, depending on the particular needs. The software can cause the core (2040) and in particular the processors therein (including a CPU, GPU, FPGA, etc.) to execute certain processes or certain particular portions 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)), which may operate in place of or together with software to perform particular processes or portions of particular processes described herein. Reference to software includes logic, and vice versa, as appropriate. Reference to a computer-readable medium may include circuitry (e.g., an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both, as appropriate. The present disclosure encompasses any suitable combination of hardware and software.
[0269] 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 GOP: Group of Pictures TU: Transform Unit PU: Prediction Unit CTU: Coding Tree Unit CTB: Coding Tree Block PB: Prediction Block HRD: Hypothetical Reference Decoder SNR: Signal Noise Ratio CPU: Central Processing Unit GPU: Graphics Processing Unit 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 Areas SSD: solid-state drive IC: Integrated Circuit CU: Coding Unit
[0270] While this disclosure has described several exemplary embodiments, there are alterations, substitutions, and various substitute equivalents, which fall within the scope of this disclosure. Thus, it will be appreciated that those skilled in the art will be able to devise many systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are thus within the spirit and scope of the present disclosure.
Claims
1. A method of video decoding, comprising: determining a first syntax element in a general constraint information (GCI) syntax structure for coded video data in a bitstream, the first syntax element being associated with a residual coding tool; if the first syntax element is equal to 1, decoding, by a processor, the encoded video data without invoking the residual coding tool; If the first syntax element is equal to 0, determining a value of a second syntax element in a Sequence Parameter Set (SPS) syntax structure for one of one or more Coding Layer Video Sequences (CLVS) in the coded video data in the bitstream; decoding, by the processor, the encoded video data in the bitstream based on the value of the second syntax element; A method comprising: determining statistics of coefficients decoded from one or more transform units prior to a current transform unit; determining an initial value of the Rice parameter of the current transform unit based on the statistics; decoding coefficients of the current transform unit based on the Rice parameters; Further comprising:
2. The method of claim 1 , wherein decoding the encoded video data in the bitstream based on the value of the second syntax element comprises decoding the encoded video data in the bitstream based on the value of the second syntax element and the decoded coefficients of the current transform unit.
3. The method described in claim 1, wherein the first syntax element is a GCI syntax element within the GCI syntax structure that defines constraints that apply to the one or more CLVSs.
4. The method described in claim 1, wherein the first syntax element being equal to 1 indicates disabling the residual coding tool in each of the one or more CLVSs.
5. The method described in claim 1, wherein the second syntax element is constrained to have a value indicating that the residual coding tool is not to be invoked to decode the one of the one or more CLVSs.
6. The method described in claim 1, wherein the second syntax element indicates whether the residual coding tool is used in the one of the one or more CLVSs.
7. The step of determining the value of the second syntax element comprises:
7. The method of claim 6, further comprising: if the second syntax element is not present in the SPS syntax structure for the one of the one or more CLVSs, inferring the value of the second syntax element as indicating non-use of the residual coding tool in the one of the one or more CLVSs.
8. The step of determining the first syntax element comprises:
2. The method of claim 1, further comprising: decoding the first syntax element from the GCI syntax structure if a syntax element within the GCI syntax structure indicates that the GCI syntax structure includes additional bits for general constraint information.
9. An apparatus for video decoding, comprising:
9. Apparatus comprising processing circuitry configured to perform the method of any one of claims 1 to 8.
10. A computer program which, when executed by at least one processor, causes the at least one processor to perform a method according to any one of claims 1 to 8.
11. A method of video encoding, comprising: determining, by a processor, whether a residual coding tool is enabled for at least one slice of the video data; encoding the video data using the residual coding tool based on the residual coding tool being enabled for the at least one slice of the video data; encoding a first syntax element within a general constraint information (GCI) syntax structure for the encoded video data, the first syntax element being associated with the residual coding tool; Including, If the video data is encoded without invoking the residual coding tool, the first syntax element is equal to 1; A method, wherein if the first syntax element is equal to 0, a value of a second syntax element in a sequence parameter set (SPS) syntax structure for one of one or more coding layer video sequences (CLVS) is encoded.
12. A method for processing visual media data, comprising: performing a conversion between the visual media data and a bitstream of the visual media data according to a format rule; transmitting the bitstream; Including, the bitstream includes a first syntax element in a General Constraint Information (GCI) syntax structure for coding control in encoded video data of the visual media data in the bitstream, the first syntax element associated with a residual coding tool; If the video data is encoded without invoking the residual coding tool, the first syntax element is equal to 1; A method wherein, if the first syntax element is equal to 0, a value of a second syntax element in a sequence parameter set (SPS) syntax structure for one of one or more coding layer video sequences (CLVS) is coded into the bitstream.
13. An apparatus for video encoding, comprising:
13. Apparatus comprising processing circuitry configured to perform the method of claim 11 or 12.
14. A computer program which, when executed by at least one processor, causes the at least one processor to perform the method of claim 11 or 12.