Techniques for constrained flag signaling for range extension with extended precision - Patents.com
By employing extended precision and dynamic range for transform coefficients with constraint flag signaling, the inefficiencies in representing less likely intra-prediction directions and motion vector prediction are addressed, enhancing video coding efficiency and compression ratios.
Patent Information
- Application Number
- JP2023528176
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-03-31
- Filing Date
- 2022-04-29
- Publication Date
- 2024-12-23
- Estimated Expiration
- 2042-04-29
AI Technical Summary
Existing video coding technologies face inefficiencies in representing less likely intra-prediction directions, leading to increased bit usage and reduced compression ratios, particularly in video codecs like H.264, H.265, JEM, and VVC, where less probable directions require more bits than likely ones, and motion vector prediction is affected by rounding errors.
The implementation of extended precision and dynamic range for transform coefficients, along with constraint flag signaling, to enable/disable coding tools dynamically, optimizing bit usage and improving compression efficiency by reducing redundancy in video data processing.
Enhances video coding efficiency by reducing bit usage for less likely intra-prediction directions and minimizing rounding errors in motion vector prediction, thereby improving compression ratios and overall data transmission efficiency.
Smart Images

Figure 0007604644000001 
Figure 0007604644000002 
Figure 0007604644000003
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of U.S. Patent Application No. 17 / 710,764, "TECHNIQUES FOR CONSTRAINT FLAG SIGNALING FOR RANGE EXTENSION WITH EXTENDED PRECISION," filed March 31, 2022, which claims the benefit of priority to U.S. Provisional Application No. 63 / 250,162, "TECHNIQUES FOR CONSTRAINT FLAG SIGNALING FOR RANGE EXTENSION WITH EXTENDED PRECISION," filed September 29, 2021. The disclosures of the prior applications are incorporated herein by reference in their entireties.
[0002] This disclosure describes embodiments related generally to video coding. [Background technology]
[0003] The background discussion provided herein is intended to generally present the context of the present disclosure. The inventors' work, to the extent that it is described in this background section, and aspects of the description that may not be admitted as prior art at the time of filing, are not admitted expressly or impliedly as prior art to the present disclosure.
[0004] Video coding and video decoding may be performed using inter-picture prediction with motion compensation. Uncompressed digital video may include a sequence of pictures, each having spatial dimensions of, for example, 1920x1080 luma samples and associated chroma samples. The sequence of pictures may have a fixed or variable picture rate (also informally known as frame rate), for example, 60 pictures per second or 60Hz. Uncompressed video has specific bitrate requirements. For example, 1080p60 4:2:0 video (1920x1080 luma sample resolution at 60Hz frame rate) at 8 bits per sample requires a bandwidth approaching 1.5Gbit / s. One hour of such video requires more than 600GByte of storage space.
[0005] One objective of video coding 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 two orders of magnitude. Both lossless and lossy compression may be employed, as well as combinations thereof. Lossless compression refers to techniques where an exact copy of the original signal can be reconstructed from the compressed original signal. When using lossy compression, 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 its intended application. For video, lossy compression is widely adopted. The amount of acceptable distortion depends on the application, e.g., a user of a particular consumer streaming application may tolerate higher distortion than a user of a television distribution application. The achievable compression ratio may reflect that a higher tolerable / acceptable distortion can result in a higher compression ratio.
[0006] Video encoders and decoders can utilize techniques from a number of broad categories, including, for example, motion compensation, transform, quantization, and entropy coding.
[0007] Video codec techniques can include a technique known as intra-coding. In intra-coding, sample values are represented without reference to samples or other data from previously reconstructed reference pictures. In some video codecs, a picture is spatially subdivided into blocks of samples. 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 therefore 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 undergo 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 after the transform and the smaller the AC coefficients, the fewer bits are needed for a given quantization step size to represent the block after entropy coding.
[0008] Conventional intra-coding, for example as known from MPEG-2 generation coding techniques, does not use intra-prediction. However, some newer video compression techniques include techniques that try from surrounding sample data and / or metadata obtained during encoding / decoding of a data block that is, for example, spatially adjacent and preceding in decoding order. Such techniques are hereafter referred to as "intra-prediction" techniques. It should be noted that, at least in some cases, intra-prediction uses only reference data from the current picture being reconstructed, and not from a reference picture.
[0009] There may be many different forms of intra-prediction. If more than one of such techniques may be used in a given video coding technique, the technique in use may be coded in an intra-prediction mode. In certain cases, a mode may have sub-modes and / or parameters that may be coded separately or included in the codeword of the mode. The codeword used for a given mode / sub-mode / parameter combination may affect the coding efficiency improvement by intra-prediction and may also affect the entropy coding technique used to convert the codeword into a bitstream.
[0010] A specific mode of intra prediction was introduced in H.264, improved in H.265, and further improved in newer coding techniques such as Joint Search Model (JEM), Versatile Video Coding (VVC), and Benchmark Set (BMS). A predictor block can be formed using neighboring sample values belonging to already available samples. The sample values of the neighboring samples are copied to the predictor block according to the direction. The reference to the direction in use can be coded in the bitstream or can be predicted itself.
[0011] Referring to FIG. 1A, depicted at the bottom right is a subset of 9 predictor directions known from the 33 possible predictor directions (corresponding to the 33 angle modes of the 35 intra modes) of H.265. The point where the arrows converge (101) represents the sample being predicted. The arrows represent the direction in which the sample is predicted. For example, arrow (102) indicates that sample (101) is predicted from one or more samples to the upper right, at an angle of 45 degrees from the horizontal. Similarly, arrow (103) indicates that sample (101) is predicted from one or more samples to the lower left of sample (101), at an angle of 22.5 degrees from the horizontal.
[0012] 1A, a square block (104) of 4×4 samples (indicated by a thick dashed line) is depicted at the top left. The square block (104) contains 16 samples, each labeled with "S" and its position in the Y dimension (e.g., row index) and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample (from the top) in the Y dimension and the first sample (from the left) in the X dimension. Similarly, sample S44 is the fourth sample 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. Further shown are reference samples that follow a similar numbering scheme. The reference samples are labeled with R and their Y position (e.g., row index) and X position (column index) relative to the block (104). In both H.264 and H.265, the predicted samples are adjacent to the block being reconstructed, and therefore negative values do not need to be used.
[0013] Intra-picture prediction can work by copying reference sample values from adjacent samples as assigned by the signaled prediction direction. For example, assume that the coded video bitstream includes signaling for this block indicating a prediction direction that coincides with the arrow (102), i.e., the sample is predicted from one or more prediction samples to the upper right and at an angle of 45 degrees from the horizontal. In that case, samples S41, S32, S23, 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 orientation is not evenly divisible by 45 degrees, the values of multiple reference samples may be combined, for example by interpolation, to calculate the reference sample.
[0015] The number of possible directions has increased as video coding techniques have developed. In H.264 (2003), nine different directions could be represented; in H.265 (2013), this increased to 33, and JEM / VVC / BMS, at the time of disclosure, can support up to 65 directions. Experiments have been carried out to identify the most likely directions, and certain techniques of entropy coding are used to represent those likely directions with a small number of bits, accepting a certain penalty for less likely directions. Furthermore, the direction itself may be predicted from neighboring directions used in neighboring, 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 a coded video bitstream that represent the directions may vary from one video coding technique to another, ranging, for example, from a simple direct mapping from prediction direction to intra-prediction mode to complex adaptation schemes involving codewords, most likely modes, and similar techniques. In all cases, however, there may be certain directions that are statistically less likely to occur in the video content than certain other directions. Because the goal of video compression is to reduce redundancy, these less likely directions are represented with more bits than more likely directions in a well-performing video coding technique.
[0018] Motion compensation may be a lossy compression technique, and may refer to a technique in which blocks of sample data from a previously reconstructed picture or part thereof (reference picture) are used to predict a newly reconstructed picture or part of a picture after being spatially shifted in a direction indicated by a motion vector (hereafter 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 in use (the latter may indirectly be a temporal dimension).
[0019] In some video compression techniques, the MV applicable to a particular area of sample data can be predicted from other MVs, e.g., from MVs associated with other areas of sample data that are spatially adjacent to the area being reconstructed and that precede that MV in decoding order. Doing so can significantly reduce the amount of data required to code the MV, thereby eliminating redundancy and increasing the compression ratio. MV prediction can work effectively because, for example, when coding an input video signal derived from a camera (known as natural video), there is a statistical likelihood that areas larger than the area to which a single MV is applicable move in similar directions and can therefore, in some cases, be predicted using similar motion vectors derived from MVs of neighboring areas. As a result, the detected MV for a given area will be similar or the same as the MV predicted from the surrounding MVs, which, after entropy coding, can be represented with fewer bits than would be used if the MV were coded directly. In some cases, MV prediction can be an example of lossless compression of a signal (i.e., MV) derived from an original signal (i.e., a sample stream). In other cases, the MV prediction itself can be lossy, e.g., due to rounding errors when calculating a 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). Here, we will explain a technique called "spatial merging" among the many MV prediction mechanisms provided by H.265.
[0021] Referring to Figure 2, a current block (201) contains samples that have been discovered by the encoder during the motion search process to be predictable from a previous block of the same size but spatially shifted. Instead of coding its MV directly, the MV can be derived from metadata associated with one or more reference pictures, e.g., from the most recent reference picture (in decoding order), using MVs associated with any one of 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 are using. Summary of the Invention [Means for solving the problem]
[0022] Aspects of the present disclosure provide a method and apparatus for video data processing. In some examples, the apparatus for video data processing includes a processing circuit. The processing circuit determines a first syntax element for coding control in a first scope of video data coded in a bitstream. The first syntax element is associated with a coding tool for processing transform coefficients having an extended dynamic range from a predetermined dynamic range. The dynamic range is associated with an extended precision. Then, in response to the first syntax element being a first value indicating disabling of the coding tool in the first scope, the processing circuit decodes the first scope of the video data coded in the bitstream including one or more second scopes of the coded video data without invoking the coding tool. In determining the first syntax element, the processing circuit decodes the first syntax element from the syntax structure for general constraint information in response to the syntax element in the syntax structure indicating additional bits for general constraint information in the syntax structure.
[0023] In some embodiments, the first syntax element is in the generic constraint information for coding control of pictures in the output layer set at the decoder. In some examples, the first value of the first syntax element indicates to disable a coding tool in each coding layer video sequence (CLVS) in the output layer set. In one example, the processing circuit constrains a second syntax element for coding control of the CLVS in the bitstream to have a value indicating not to invoke a coding tool to decode the coding 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 coding layer video sequence (CLVS) in the bitstream, the second syntax element indicating enabling / disabling of a coding tool in the CLVS. In one example, in response to the second syntax element not being presented in a sequence parameter set (SPS) for the CLVS, the processing circuit infers a value of the second syntax element to indicate disabling of a coding tool in the CLVS.
[0025] In some examples, the processing circuit determines the dynamic range based on the bit depth in response to a value of a second syntax element indicating enabling of a coding tool in the CLVS. In some examples, the processing circuit determines the dynamic range to be a predetermined dynamic range in response to a value of a second syntax element indicating disabling of a coding tool in the CLVS.
[0027] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer, cause the computer to perform a method for video decoding.
[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. [Brief description of the drawings]
[0029] [Figure 1A] FIG. 2 is a schematic diagram of an example subset of intra-prediction modes. [Figure 1B] FIG. 2 is a diagram of an example intra-prediction direction. [Diagram 2] FIG. 2 is a schematic diagram of a current block and its surrounding spatial merge candidates in one example. [Diagram 3] FIG. 3 is a schematic diagram of a simplified block diagram of a communication system (300) according to one embodiment. [Figure 4] FIG. 4 is a schematic diagram of a simplified block diagram of a communication system (400) according to one embodiment. [Diagram 5] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment. [Figure 6] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment. [Figure 7] FIG. 4 is a block diagram illustrating an encoder according to another embodiment. [Figure 8] FIG. 4 is a block diagram showing a decoder according to another embodiment; [Figure 9] FIG. 1 illustrates an example for signaling adaptive resolution change (ARC) parameters according to an embodiment of the present disclosure. [Figure 10] FIG. 10 shows an example of a table (1000) for mapping upsampled or downsampled coefficients, codewords, and Ext-Golomb codes. [Figure 11] FIG. 1 illustrates several examples of ARC parameter signaling according to some embodiments of the present disclosure. [Figure 12] A diagram illustrating an example syntax structure of a set of PTL syntax elements in some examples. [Figure 13] 11A-11C illustrate example syntax structures of general constraint information in some examples. [Figure 14A]A diagram showing an example of PTL information including a PTL syntax structure and a general constraint information syntax structure according to some embodiments of the present disclosure. [Figure 14B] FIG. 2 is another diagram illustrating 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] FIG. 2 illustrates an example of a generic constraint information syntax structure according to one embodiment of the present disclosure. [Figure 15B] FIG. 2 is another diagram illustrating an example of a generic constraint information syntax structure according to an embodiment of the present disclosure. [Figure 16] FIG. 2 illustrates a syntax structure of general constraint information according to some embodiments of the present disclosure. [Figure 17] FIG. 1 illustrates an example syntax structure for a sequence parameter set (SPS) range extension according to some embodiments of the present disclosure. [Figure 18] 1 is a flowchart outlining a process according to one embodiment of the present disclosure. [Figure 19] 1 is a flowchart outlining a process according to one 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
[0030] FIG. 3 illustrates a simplified block diagram of a communication system (300) according to one 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 unidirectional transmission of data. For example, the terminal device (310) may code video data (e.g., a stream of video pictures captured by the terminal device (310)) for transmission to the other terminal device (320) via the network (350). The encoded video data may be transmitted in the form of one or more coded video bitstreams. The terminal device (320) may receive the coded video data from the network (350), decode the coded video data to reconstruct the video pictures, and display the video pictures according to the reconstructed video data. Unidirectional data transmission may be common, such as in media serving applications.
[0031] In another example, the communication system (300) includes a second pair of terminal devices (330) and (340) performing bidirectional transmission of coded video data, such as may occur during a video conference. In the case of bidirectional transmission of data, in one example, each of the terminal devices (330) and (340) may code video data (e.g., a stream of video pictures captured by 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 also receive coded video data transmitted by the other of the terminal devices (330) and (340), decode the coded video data to recover the video pictures, and display the video pictures on an accessible display device according to the recovered video data.
[0032] 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 need not be so limited. The embodiments of the present disclosure are contemplated for use with laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. The network (350) represents any number of networks that convey coded video data between the terminal devices (310), (320), (330), and (340), including, for example, wired (wired) and / or wireless communication networks. The communication network (350) may exchange data over circuit-switched and / or packet-switched channels. Representative networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this description, the architecture and topology of the network (350) may not be important to the operation of the present disclosure, unless otherwise described herein below.
[0033] 4 illustrates an arrangement of video encoders and video decoders 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 television, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0034] The streaming system may include a video source (401), a capture subsystem (413) that may include, for example, a digital camera, that creates a stream of uncompressed video pictures (402). In one example, the stream of video pictures (402) includes samples taken by a digital camera. The stream of video pictures (402) is shown with a bold line to emphasize its high amount of data compared to the encoded video data (404) (or coded video bitstream) and 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)) is shown with a thin line to emphasize its smaller amount of data compared to the stream of video pictures (402) and may be stored in a streaming server (405) for future use. One or more streaming client subsystems, such as the client subsystems (406) and (408) of FIG. 4, can access the streaming server (405) to retrieve copies (407) and (409) of the encoded video data (404). The client subsystem (406) can include a video decoder (410), for example, within an electronic device (430). The video decoder (410) decodes an input copy (407) of the encoded video data and creates an output stream (411) of video pictures that can be rendered on a display (412) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (404), (407), and (409) (e.g., a video bitstream) can be encoded according to a particular video coding / compression standard. Examples of such standards include ITU-T Recommendation H.265.In one example, a video coding standard under development is informally known as Versatile Video Coding (VVC), and the disclosed subject matter may be used in the context of VVC.
[0035] It should be noted that the electronic devices (420) and (430) may include other components (not shown). For example, the electronic device (420) may include a video decoder (not shown), and the electronic device (430) may also include a video encoder (not shown).
[0036] 5 shows a block diagram of a video decoder (510) according to one embodiment of the present disclosure. The video decoder (510) may be included in an electronic device (530). The electronic device (530) may include a receiver (531) (e.g., a receiving circuit). The video decoder (510) may be used in place of the video decoder (410) of the example of FIG. 4.
[0037] The receiver (531) may receive one or more coded video sequences to be decoded by the video decoder (510), or in the same or other embodiments, one coded video sequence at a time, with the decoding of each coded video sequence being 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 encoded video data. The receiver (531) may receive the encoded video data along with other data, e.g., coded audio data and / or auxiliary data streams, that may be forwarded to their 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, "parser (520)"). In certain applications, the buffer memory (515) is part of the video decoder (510). In other applications, the buffer memory (515) may be external to the video decoder (510) (not shown). In still other applications, there may be a buffer memory (not shown) external to the video decoder (510), e.g., to combat network jitter, plus another buffer memory (515) internal to the video decoder (510), e.g., to handle playout timing. When the receiver (531) is receiving data from a storage / forwarding device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (515) may be unnecessary 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).
[0038] The video decoder (510) may include a parser (520) to reconstruct symbols (521) from the coded video sequence. These categories of symbols include information used to manage the operation of the video decoder (510) and potentially information for controlling a rendering device such as a render device (512) (e.g., a display screen) that is not an integral part of the electronic device (530) but may be coupled to the electronic device (530) as shown in FIG. 5. The control information for the rendering device(s) may be in the form of a supplemental enhancement information (SEI message) or a video usability information (VUI) parameter set fragment (not shown). The parser (520) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow various principles including variable length coding with or without context dependency, Huffman coding, arithmetic coding, etc. The parser (520) may extract, from the coded video sequence, a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. The subgroups may include groups of pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. The parser (520) may also extract information from the coded video sequence, such as transform coefficients, quantization parameter values, motion vectors, etc.
[0039] The parser (520) may perform entropy decoding / parsing operations on the video sequence received from the buffer memory (515) to create symbols (521).
[0040] The reconstruction of the symbols (521) can involve several different units, depending on the type of coded video picture or portion thereof (inter-picture and intra-picture, inter-block and intra-block, etc.), as well as other factors. Which units are involved and how can be controlled by subgroup control information parsed from the coded video sequence by the parser (520). The flow of such subgroup control information between the parser (520) and the following units is not depicted for clarity.
[0041] Beyond the functional blocks already mentioned, the video decoder (510) can be conceptually subdivided into several functional units as described below. In an actual 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, a conceptual subdivision into the following functional units is appropriate:
[0042] The first unit is a scalar / inverse transform unit (551), which receives quantized transform coefficients and control information from the parser (520) including the transform to use, block size, quantization coefficients, quantization scaling matrix, etc. as symbol(s) (521). The scalar / inverse transform unit (551) can output blocks containing sample values that can be input to an aggregator (555).
[0043] In some cases, the output samples of the scaler / inverse transform (551) may relate to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed picture, but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by an intra-picture prediction unit (552). In some cases, the intra-picture prediction unit (552) generates a block of the same size and shape as the block being reconstructed using surrounding already reconstructed information fetched from a current picture buffer (558). The current picture buffer (558) buffers, for example, a partially reconstructed current picture and / or a fully reconstructed current picture. The aggregator (555) optionally adds, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (552) to the output sample information as provided by the scaler / inverse transform unit (551).
[0044] 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 compensated prediction unit (553) may access the reference picture memory (557) to fetch samples used for prediction. After motion compensating the fetched samples according to the symbols (521) related to the block, these samples may be added to the output of the scalar / inverse transform unit (551) by the aggregator (555) to generate output sample information (in this case referred to as residual samples or residual signals). The addresses in the reference picture memory (557) from which the motion compensated prediction unit (553) fetches the prediction samples may be controlled by motion vectors available to the motion compensated prediction unit (553) in the form of symbols (521), which may have, for example, X, Y, and reference picture components. Motion compensation may also include interpolation of sample values fetched from the reference picture memory (557) when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, and the like.
[0045] The output samples of the aggregator (555) can be subjected to various loop filtering techniques in the loop filter unit (556). The video compression techniques can include in-loop filter techniques 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 can also be responsive to meta-information obtained during decoding of a previous part (in decoding order) of the coded picture or coded video sequence, or to previously reconstructed and loop filtered sample values.
[0046] The output of the loop filter unit (556) may be a sample stream that can be output to the render device (512) as well as stored in a reference picture memory (557) for use in future inter-picture prediction.
[0047] Once a particular coded picture has been fully reconstructed, it may be used as a reference picture for future prediction. For example, once a coded picture corresponding to a current picture has been fully reconstructed and the coded picture has been identified as a reference picture (e.g., by the parser (520)), the current picture buffer (558) may become part of the reference picture memory (557), and a new current picture buffer may be reallocated before beginning reconstruction of the next coded picture.
[0048] The video decoder (510) may perform decoding operations according to a given video compression technique of a standard, such as ITU-T Rec. H.265. The coded video sequence may comply with the syntax specified by the video compression technique or standard being used, in the sense that the coded video sequence adheres to both the syntax of the video compression technique or standard and the profile documented in the video compression technique or standard. Specifically, a profile may select certain tools from among all tools available in the video compression technique or standard as tools only available to them under that profile. Also, what is required for compliance may be that the complexity of the coded video sequence is within a range defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstructed sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level may in some cases be further limited by a hypothetical reference decoder (HRD) specification and metadata for HRD buffer management signaled in the coded video sequence.
[0049] In one embodiment, the receiver (531) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the coded video sequence(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.
[0050] 6 shows a block diagram of a video encoder (603) according to one embodiment of the present disclosure. The video encoder (603) is included in an electronic device (620). The electronic device (620) includes a transmitter (640) (e.g., a transmission circuit). The video encoder (603) can be used in place of the video encoder (403) of the example of FIG. 4.
[0051] The video encoder (603) may receive video samples from a video source (601) (which is not part of the electronic device (620) in the example of FIG. 6) that may capture the video image(s) to be coded by the video encoder (603). In other examples, the video source (601) is part of the electronic device (620).
[0052] The video source (601) may provide a source video sequence to be coded by the video encoder (603) in the form of a digital video sample stream that may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCB, RGB, ...), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source (601) may be a storage device that stores previously prepared video. In a video conferencing system, the video source (601) may be a camera that captures local image information as a video sequence. The video data may be provided as multiple individual pictures that give 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.
[0053] According to one embodiment, the video encoder (603) may code and compress pictures of a source video sequence into a coded video sequence (643) in real time or under any other time constraint required by the application. Enforcing an appropriate coding rate is one function of the controller (650). In some embodiments, the controller (650) controls and is functionally coupled to other functional units described below. This coupling is not depicted for clarity. Parameters set by the controller (650) may include rate control related parameters (picture skip, quantizer, lambda value for rate distortion optimization techniques, ...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (650) may be configured with other appropriate functions related to the video encoder (603) optimized for a particular system design.
[0054] In some embodiments, the video encoder (603) is configured to operate in a coding loop. As an oversimplified explanation, in one example, the coding loop can include a source coder (630) (e.g., responsible for creating symbols, such as a symbol stream, based on an input picture to be coded and reference picture(s)) and a (local) decoder (633) embedded in the video encoder (603). The decoder (633) reconstructs the symbols to create sample data in a manner similar to what a (remote) decoder would also create (since any compression between the symbols and the coded video bitstream is lossless in the video compression techniques contemplated by the disclosed subject matter). The reconstructed sample stream (sample data) is input to a reference picture memory (634). Since decoding of the symbol stream leads to a bit-exact result regardless of the location of the decoder (local or remote), the content in the reference picture memory (634) is also bit-exact between the local and remote encoders. In other words, the prediction part of the encoder "sees" exactly the same sample values as the reference picture samples that the decoder will "see" when using the prediction during decoding. This basic principle of reference picture synchrony (and the drift that occurs when synchrony cannot be maintained, e.g., due to channel errors) is also used in several related technologies.
[0055] The operation of the "local" decoder (633) may be the same as that of a "remote" decoder, such as the video decoder (510), already described in detail above in conjunction with Figure 5. Referring also briefly to Figure 5, however, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder (645) and parser (520) may be lossless, the entropy decoding portion of the video decoder (510), including the buffer memory (515), and the parser (520), may not be fully implemented in the local decoder (633).
[0056] An observation that can be made at this point is that any decoder technology other than parsing / entropy decoding present in a decoder must also necessarily be present in the corresponding encoder, in substantially the same functional form. For this reason, the subject matter of the disclosure focuses on the operation of the decoder. A description of the encoder technology can be omitted, since it is the inverse of the decoder technology, which is described generically. Only in certain areas is a more detailed description required, which is provided below.
[0057] In some examples, during operation, the source coder (630) may perform motion-compensated predictive coding, which predictively codes an input picture with reference to one or more previously coded pictures from a video sequence designated as “reference pictures.” In this manner, the coding engine (632) codes differences between pixel blocks of the input picture and pixel blocks of the reference picture(s) that may be selected as the predictive reference(s) to the input picture.
[0058] The local video decoder (633) may decode the coded video data of pictures that may be designated as reference pictures based on the symbols created by the source coder (630). The operation of the coding engine (632) may preferably be a lossy process. When the coded video data may be decoded in a video decoder (not shown in FIG. 6), the reconstructed video sequence may be a copy of the source video sequence, usually with some errors. The local video decoder (633) may replicate the decoding process that may be performed by the video decoder on the reference pictures and store the reconstructed reference pictures in a reference picture cache (634). In this way, the video encoder (603) may locally store copies of reconstructed reference pictures that have common content as reconstructed reference pictures that would be obtained by the far-end video decoder (without transmission errors).
[0059] The predictor (635) may perform a predictive 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 sample blocks, pixel block by pixel block, to find a suitable prediction reference. 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).
[0060] The controller (650) may manage the coding operations of the source coder (630), including, for example, setting the parameters and subgroup parameters used to encode the video data.
[0061] The output of all the aforementioned 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, and arithmetic coding.
[0062] The transmitter (640) may buffer the coded video sequence(s) created by the entropy coder (645) in preparation for transmission over a communication channel (660), which may be a hardware / software link to a storage device that will store the encoded video data. The transmitter (640) may merge the coded video data from the video coder (603) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0063] The controller (650) may manage the operation of the video encoder (603). During coding, the controller (650) may assign a particular coded picture type to each coded picture, which may affect the coding technique that may be applied to the respective picture. For example, pictures may often be assigned as one of the following picture types:
[0064] An intra picture (I-picture) may be a picture that can be coded and decoded without using any other picture in a sequence as a prediction source. Some video codecs allow different types of intra pictures, including, for example, independent decoder refresh ("IDR") pictures. Those skilled in the art are aware of these variations of I-pictures and their respective uses and characteristics.
[0065] A predictive picture (P picture) may be a picture that can be coded and decoded using intra- or inter-prediction, which predicts the sample values of each block using at most one motion vector and reference index.
[0066] A bidirectionally predicted picture (B-picture) may be a picture that can be coded and decoded using intra- or inter-prediction, which predicts sample values for each block using up to two motion vectors and reference indexes. Similarly, a multi-predictive picture may use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0067] A source picture may generally be spatially subdivided into multiple sample blocks (e.g., 4x4, 8x8, 4x8, or 16x16 blocks, respectively) and coded block by block. A block may be predictively coded with reference to other (already coded) blocks determined by the coding assignment applied to the block's respective picture. For example, a block of an I picture may be non-predictively coded or predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). A pixel block of a P picture may be predictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. A block 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.
[0068] The video encoder (603) may perform coding operations in accordance with a given video coding technique or standard, such as ITU-T Rec. H.265. In its operations, the video encoder (603) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard being used.
[0069] In one embodiment, the transmitter (640) may transmit additional data along with the encoded video. The source coder (630) may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.
[0070] A video may be captured in time sequence as multiple source pictures (video pictures). Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlation within a given picture, while inter-picture prediction exploits (temporal or other) correlation between pictures. In one example, a particular picture being encoded / decoded, called the current picture, is divided into blocks. When a block in the current picture is similar to a reference block in a previously coded, still buffered reference picture in the video, the block in the current picture may be coded by a vector called a motion vector. The motion vector points to a reference block in the reference picture and may have a third dimension that identifies the reference picture when multiple reference pictures are used.
[0071] In some embodiments, bi-prediction techniques can be used in inter-picture prediction. According to bi-prediction techniques, two reference pictures, such as a first reference picture and a second reference picture, are used, both of which are prior to the decoding order of the current picture in the video (but the display order may be past and future, respectively). A block in the current picture may be coded by a first motion vector pointing to a first reference block in the first reference picture and a second motion vector pointing to a second reference block in the second reference picture. A block may be predicted by a combination of the first reference block and the second reference block.
[0072] Furthermore, merge mode techniques can be used in inter-picture prediction to improve coding efficiency.
[0073] 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, a picture in a sequence of video pictures is 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, 16×16 pixels, etc. 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 into four CUs of 32×32 pixels, or into 16 CUs of 16×16 pixels. In one example, each CU is analyzed to determine the prediction type of the CU, such as an inter prediction type or an intra prediction type. A CU is divided into one or more prediction units (PUs) according to temporal predictability and / or spatial predictability. In general, each PU includes one luma prediction block (PB) and two chroma PBs. In one 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 pixel values (e.g., luma values) of 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, etc.
[0074] 7 shows a diagram of a video encoder (703) according to another embodiment of this disclosure. The video encoder (703) is configured to receive a processed block (e.g., a predictive block) of sample values in a current video picture in a sequence of video pictures and to encode the processed block into a coded picture that is part of a coded video sequence. In one example, the video encoder (703) is used in place of the video encoder (403) of the example of FIG. 4.
[0075] In an HEVC example, the video encoder (703) receives a matrix of sample values for a processing block, such as a predictive block of 8×8 samples. The video encoder (703) determines whether the processing block is optimally coded using intra mode, inter mode, or bi-predictive mode, for example, using rate-distortion optimization. If the processing block is to be coded in intra mode, the video encoder (703) may encode the processing block into a coded picture using intra prediction techniques, and if the processing block is to be coded in inter mode or bi-predictive mode, the video encoder (703) may encode the processing block into a coded picture using inter prediction techniques or bi-predictive techniques, respectively. In certain video coding techniques, the merge mode may be an inter-picture prediction sub-mode in which a motion vector is derived from one or more motion vector predictors without the aid of coded motion vector components outside the predictors. In certain other video coding techniques, there may be motion vector components applicable to the current block. In one example, the video encoder (703) includes other components, such as a mode decision module (not shown), to determine the mode of the processing block.
[0076] In the example of FIG. 7, the video encoder (703) includes an inter-encoder (730), an intra-encoder (722), a residual calculator (723), a switch (726), a residual encoder (724), a general controller (721), and an entropy encoder (725), coupled to each other as shown in FIG. 7.
[0077] The inter-encoder (730) is configured to receive samples of a current block (e.g., a processing block), compare the block to one or more reference blocks in a reference picture (e.g., blocks in a previous picture and a subsequent picture), generate inter-prediction information (e.g., a description of redundancy information, motion vectors, merge mode information according to an inter-encoding technique), and calculate an inter-prediction result (e.g., a predictive block) based on the inter-prediction information using any suitable technique. In some examples, the reference picture is a decoded reference picture that has been decoded based on the encoded video information.
[0078] The intra encoder (722) is configured to receive samples of a current block (e.g., a processing block), possibly compare the block with already coded blocks in the same picture, generate transformed 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 intra prediction results (e.g., prediction blocks) based on the intra prediction information and reference blocks in the same picture.
[0079] The generic controller (721) is configured to determine generic control data and control other components of the video encoder (703) based on the generic control data. In one example, the generic 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 generic controller (721) controls the switch (726) to select an intra mode result for use by the residual calculator (723) and controls the entropy encoder (725) to select intra prediction information and include the intra prediction information in the bitstream, and if the mode is an inter mode, the generic controller (721) controls the switch (726) to select an inter prediction result for use by the residual calculator (723) and controls the entropy encoder (725) to select inter prediction information and include the inter prediction information in the bitstream.
[0080] 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 operate based on the residual data to encode the residual data to generate transform coefficients. In one example, the residual encoder (724) is configured to transform the residual data from the spatial domain to the frequency domain to generate transform coefficients. The transform coefficients then undergo a quantization process to obtain quantized transform coefficients. In various embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is configured to perform an inverse transform and generate decoded residual data. The decoded residual data can be used by the intra-encoder (722) and the inter-encoder (730) as appropriate. For example, the inter-encoder (730) may generate decoded blocks based on the decoded residual data and the inter-prediction information, and the intra-encoder (722) may 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 may be buffered in a memory circuit (not shown) and used as a reference picture in some examples.
[0081] 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 in accordance with an appropriate standard, such as the HEVC standard. In one example, the entropy encoder (725) is configured to include in the bitstream general control data, selected prediction information (e.g., intra-prediction information or inter-prediction information), residual information, and other appropriate information. It should be noted that, according to the disclosed subject matter, when coding a block in a merged sub-mode of either an inter mode or a bi-prediction mode, no residual information is present.
[0082] 8 shows a diagram of a video decoder (810) according to another embodiment of the present disclosure. The video decoder (810) is configured to receive coded pictures that are part of a coded video sequence and decode the coded pictures to generate reconstructed pictures. In one example, the video decoder (810) is used in place of the video decoder (410) of the example of FIG. 4.
[0083] 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.
[0084] The entropy decoder (871) may be configured to reconstruct from the coded picture certain symbols that represent syntax elements of which the coded picture is composed. Such symbols may include, for example, prediction information (e.g., intra-prediction and inter-prediction information, etc.) that may identify the mode in which the block is coded (e.g., intra-mode, inter-mode, bi-prediction mode, inter-mode and bi-prediction mode of merged submode or other submode, etc.), certain samples or metadata used for prediction by the intra decoder (872) or the inter decoder (880), respectively, residual information in the form of quantized transform coefficients, etc. In one example, if the prediction mode is an inter mode or bi-prediction mode, the inter prediction information is provided to the inter decoder (880), and 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).
[0085] The inter decoder (880) is configured to receive the inter prediction information and to generate inter prediction results based on the inter prediction information.
[0086] The intra decoder (872) is configured to receive the intra prediction information and to generate a prediction result based on the intra prediction information.
[0087] The residual decoder (873) is configured to perform inverse quantization to extract inverse quantized transform coefficients, and process the inverse quantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require certain control information (to include quantization parameters (QPs)), which may be provided by the entropy decoder (871) (this may be only a small amount of control information, so a data path is not depicted).
[0088] The reconstruction module (874) is configured to combine, in the spatial domain, the residual output by the residual decoder (873) and the prediction result (possibly output by the inter prediction module or the intra prediction module) to form a reconstructed block that may be part of a reconstructed picture, which may be part of a reconstructed video. It should be noted that other suitable operations, such as a deblocking operation, may be performed to improve visual quality.
[0089] It should be noted that the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be implemented using any suitable technology. In one embodiment, the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be implemented using one or more integrated circuits. In another embodiment, the video encoders (403), (603), and (603) and the video decoders (410), (510), and (810) may be implemented using one or more processors executing software instructions.
[0090] Aspects of this disclosure provide techniques for controlling coding tool(s) and features using constraint flags in a coded video stream.
[0091] According to aspects of the present disclosure, the picture size in the bitstream may remain the same or may change. In some related examples, video encoders and decoders may operate with a given picture size that is defined and remains constant for a coded video sequence (CVS), group of pictures (GOP), or similar multi-picture time frame. In 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, where the picture size is defined and typically remains constant for a GOP. Resampling of reference pictures to use different resolutions within 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, which may result 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 instances, such as H.263 Annex Q, it is permitted to resample individual macroblocks by a factor of 2 in each dimension (e.g., up or down), but the picture size remains the same. If the size of the macroblocks can be fixed, for example in H.263, there is no need to signal the size of the macroblocks.
[0092] In some relevant examples, the picture size of the predicted picture may be changed. Examples such as VP9 allow resampling of reference pictures and changing the resolution of the entire picture. In some examples (e.g., Hendry et al., "On adaptive resolution change (ARC) for VVC," Joint Video Team document JVET-M0135-vl, Jan 9-19, 2019, incorporated herein in its entirety), resampling of the entire reference picture to a different resolution (e.g., higher or lower resolution) is allowed. 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).
[0093] According to one aspect of the present disclosure, a source video may be compressed by layered coding, which may encode a picture into a bitstream including one or more layers with different qualities, such as different resolutions. The bitstream may have syntax elements that specify which layer (or set of layers) may be output at the decoder side. The set of layers to be output may 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 may be signaled in a video parameter set (VPS). Syntax elements that specify the profile hierarchy level (PTL) of the entire bitstream or one or more output layer sets may be signaled in a VPS, a decoder parameter set (DPS), which may be referred to as decoder capability information (DCI) in some examples, an SPS, a PPS, an SEI message, etc. In the PTL information, there may be generic constraint information that may specify constraints of coding tools and capabilities. It is desirable to efficiently represent and signal constraint information of various coding tools and capabilities.
[0094] In some examples, the term "subpicture" may be used to refer to, for example, a rectangular arrangement of samples, blocks, macroblocks, coding units, or similar entities that may be semantically grouped and coded independently at a modified resolution. One or more subpictures may form a picture. One or more coded subpictures may form a coded picture. One or more subpictures may be assembled into a picture, and one or more subpictures may be extracted from a picture. In some examples, one or more coded subpictures may be assembled in the compressed domain without transcoding to a coded picture down to the sample level. In some examples, one or more coded subpictures may be extracted from a coded picture in the compressed domain.
[0095] 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 adaptive resolution change (ARC). The control information used to perform adaptive resolution change may be referred to as ARC parameters. ARC parameters may include filter parameters, scaling factors, output and / or reference picture resolutions, various control flags, etc.
[0096] In some examples, ARC encoding / decoding is picture-based, so a set of control information (ARC parameters) is used to encode / decode a single semantically independent coded video picture. In some examples, ARC encoding / decoding is sub-picture-based, so multiple sub-pictures within a picture can be encoded / decoded with independent ARC parameters. It should be noted that various techniques can be used to signal ARC parameters.
[0097] FIG. 9 illustrates examples (e.g., options) of techniques for signaling ARC parameters according to some embodiments of the present disclosure. Coding efficiency, complexity, and architecture may vary from example to example. A video coding standard or technology may select one or more of the examples or other variations for signaling ARC parameters. These examples may not be mutually exclusive and may be interchanged based on application needs, standard technology, encoder choice, etc.
[0098] According to one aspect of the present disclosure, the 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 separated or combined in the X and Y dimensions. In one example, one or more short syntax elements may be coded that may point to a table that includes the upsample and / or downsample coefficients.
[0099] In some examples, the class of ARC parameters includes upsample and / or downsample coefficients with an added time dimension that indicate a constant rate of zooming in and / or out for a given number of pictures. In one example, one or more short syntax elements may be coded that may point to a table that includes upsample and / or downsample coefficients with an added time dimension.
[0100] In some examples, the class of ARC parameters includes the resolution of the X or Y dimension of the input picture, output picture, reference picture, coded picture, combined or separate, in samples, blocks, macroblocks, CUs, or any other suitable units of granularity. In some examples, there are multiple resolutions used in video coding (e.g., one resolution for input pictures, another resolution for reference pictures), and a set of values (corresponding to one of the resolutions) may be inferred from another set of values (corresponding to another of the resolutions). The determination of the values may be gated, for example, based on the use of a flag. The use of flags for gating is described in detail in further description.
[0101] In some examples, the ARC parameter classes include warping coordinates similar to those used in H.263 Annex P, with appropriate granularity as described above. H.263 Annex P defines an efficient way of coding the warping coordinates. Other efficient ways can be devised. For example, the variable-length reversible Huffman-style coding of the Annex P warping coordinates can be replaced by an appropriate-length binary coding, where the length of the binary codeword can be derived from the maximum picture size multiplied by a coefficient and offset by a value that allows warping outside the bounds of the maximum picture size.
[0102] 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 may be used. In some examples, the filter parameters may be signaled to allow greater flexibility in filter design. An index in a list of possible filter designs may be used to select the filter parameters. The filters may be fully specified (e.g., by specifying a list of filter coefficients using an appropriate entropy coding technique), or the filters may be implicitly selected by an upsample or downsample ratio, etc., signaled according to any of the mechanisms described above.
[0103] In the following description, a finite set of upsample or downsample coefficients (the same coefficients used in both X and Y dimensions) is used to describe the signaling of ARC parameters by codewords. In some examples, the codewords may 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).
[0104] FIG. 10 shows an example of a table (1000) for mapping upsampled or downsampled coefficients, codewords, and Ext-Golomb codes.
[0105] It should be noted that other similar mappings can be devised according to the application and capabilities of the upscaling and downscaling mechanisms available in the video compression technology or standard. In some examples, Table 1 can be appropriately extended to additional values. The 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., encoder and decoder), for example by a media aware network element (MANE). In some examples, when no change in resolution is required (e.g., the original / target resolution is 1 in Table 1), a short Ext-Golomb code (e.g., only 1 bit shown in Table 1) can be selected, which may have coding efficiency advantages over using binary codes in the most general case, for example.
[0106] According to one aspect of the present disclosure, a mapping table such as Table 1 may be configurable. For example, some entries of 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 technology or standard, and one of the tables may be selected, for example, via an SPS or DPS.
[0107] 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. It should be noted that one or more codewords may be used to control other classes of ARC information, such as upsample or downsample filters. In some instances, a relatively large amount of data is required for the filters or other data structures.
[0108] 9, in an example (910) such as H.263 Annex P, ARC information (912) in the form of four warping coordinates is included in a picture header (911), e.g., an H.263 PLUSPTYPE (913) header extension. The example (910) may be applied when i) a picture header is available and ii) frequent changes of the ARC information are expected. However, as shown in the example (910), the overhead when using H.263-style signaling can be high, and because picture headers can be of a transitional nature, scaling factors may not be applicable across picture boundaries.
[0109] Referring to FIG. 9, in an example (920) such as JVCET-M135-v1, ARC reference information (925) (e.g., index) can be placed in a PPS (924) and can point to a table (or target resolution table) (926) that contains the target resolutions (e.g., resolutions 1-3). In one example, the table (926) is located inside an SPS (927). Placing the target resolutions in the table (926) in the SPS (927) can be justified by using the SPS as an interoperability negotiation point during capability exchange. The resolution can vary from one picture to another, among a limited set of values in the table (926) (e.g., resolutions 1-3), by reference (e.g., ARC reference information (925)) in the appropriate PPS (924).
[0110] 9 also illustrates additional techniques, such as examples (930), (940), and (950), that may be used to convey ARC information in a video bitstream. These techniques may be used individually or in any suitable combination in the same video coding technology or standard.
[0111] 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. A tile group header (938) is shown, for example, in FIG 9. The technique shown by the example (930) can be used when the ARC information (939) can be coded with a small number of bits, such as a single variable length ue(v) or a few fixed length codewords.
[0112] According to aspects of the disclosure, having the ARC information (939) directly in a header (e.g., the tile group header (938) of FIG. 9, a slice header, or a tile header) can have an additional advantage in that the ARC information (939) can be applicable to, for example, a sub-picture represented by a corresponding tile group (or slice, tile) rather than to the entire picture. Additionally, in an example, even if a video compression technology or standard only contemplates full-picture adaptive resolution change (as opposed to, for example, a tile group-based adaptive resolution change), example (930) can have certain advantages over example (910) in terms of error resiliency.
[0113] 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. An APS (941) is shown, for example, in FIG. 9. In some examples, the scope of the parameter set (941) may be sub-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 contemplates picture-based ARC, then a PPS or equivalent may be appropriate.
[0114] Referring to FIG. 9, in an example (950), the ARC reference information (953) may be present in a tile group header (954) or a similar data structure (e.g., a picture header, a slice header, a tile header, or a GOP header), as described above. A tile group header (954) is shown in FIG. 9 as an example. The ARC reference information (953) can point to a subset of the ARC information (955) available in a parameter set (956) that has a scope greater than a single picture, e.g., SPS, DPS, etc. An SPS (956) is shown in FIG. 9 as an example.
[0115] Figure 11 illustrates some examples of ARC parameter signaling according to some embodiments of the present disclosure. Figure 11 illustrates examples of syntax diagrams used in video coding standards. In one example, the notation of the syntax diagrams roughly follows C-style programming. Bold lines can indicate syntax elements present in the bitstream, and non-bold lines can indicate control flow or variable settings.
[0116] 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 include a conditionally variable length exponential-Golomb coded syntax element dec_pic_size_idx (1102) (shown in bold). The presence of the syntax element (e.g., dec_pic_size_idx (1102)) in the tile group header (1101) can be gated based on, for example, an adaptive resolution represented by a flag (e.g., adaptive_pic_resolution_change_flag) (1103). The value of the flag (e.g., adaptive_pic_resolution_change_flag) (1103) is not shown in bold, and thus the flag is present in the bitstream at the point where the flag occurs in the syntax diagram. Whether adaptive resolution is used for a picture or part of a picture can be signaled in a high-level syntax structure inside or outside the bitstream (eg, SPS (1110) in FIG. 11).
[0117] Referring to FIG. 11, an excerpt of an SPS (1110) is shown. The SPS (1110) includes a first syntax element (1111) that is a flag (1111) (e.g., adaptive_pic_resolution_change_flag). When the flag (1111) is true, the flag (1111) can indicate the use of adaptive resolution that may require specific control information. In one example, the specific control information is conditionally present based on the value of the flag (1111), as indicated by the if( ) statement (1112) in the SPS (1110) and the tile group header (1101).
[0118] As shown in the example of FIG. 11, when adaptive resolution is used, an output resolution (or output picture resolution) (1113) in samples may 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 technique 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 restrict the numbering 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.
[0119] 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 reference picture dimensions (1115). The reference picture dimensions (1115), in one example, can include both a width (e.g., reference_pic_width_in_luma_samples) and a height (e.g., reference_pic_height_in_luma_samples).
[0120] Also shown in FIG. 11 is a table of applicable decoded picture widths and heights. In one example, the number of entries in the table can be represented by a table representation (e.g., syntax element num_dec_pic_size_in_luma_samples_minus1) (1116). "minus1" can refer to an interpretation of the value of the syntax element (1116). For example, if the coded value is 0, there is one table entry. If the coded value is 5, there are six table entries. For each entry in the table, the decoded picture width and height are included as syntax elements (1117).
[0121] 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 decoded sizes and zoom factors for each tile group.
[0122] According to aspects of the present disclosure, certain video coding techniques or standards (e.g., VP9) may enable spatial scalability by implementing some form of reference picture resampling in conjunction with temporal scalability. In one embodiment, reference pictures are upsampled to a higher resolution using ARC-style techniques to form the base of a spatial enhancement layer. The upsampled pictures may be refined using regular prediction mechanisms (e.g., motion compensated prediction for inter prediction from the reference picture) at the higher resolution, e.g., to add detail.
[0123] In some examples, values in a network abstraction layer (NAL) unit header, e.g., a temporal ID field, are used to indicate both temporal and spatial layer information. Using values in a NAL unit header to indicate both temporal and spatial layer information may enable the use of existing selected transport units (SFUs) for scalable environments without modification. For example, existing SFUs may be created and optimized for temporal layer selection transport based on the temporal ID value in the NAL unit header. Then, in some examples, existing SFUs may be used for spatial scalability (e.g., spatial layer selection) without modification. In some examples, a mapping may be provided between coded picture sizes and temporal layers indicated by the temporal ID field in the NAL unit header.
[0124] According to aspects of the present disclosure, some characteristics of a coded bitstream may 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 bitstream characteristics, such as color reproduction, resolution, additional video compression, etc. A video codec may 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 may be the default profile setting).
[0125] Additionally, tiers 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 tiers are more constrained than higher tiers, and lower levels are more constrained than higher levels. In one example, a standard can define two tiers, Main and High. The Main tier is a tier lower than the High tier. The tiers are created to address different applications in terms of maximum bitrate. In one example, the Main tier is designed for most applications, and the High tier 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 tier is allowed. In some examples, a decoder that complies with a given tier / level should be able to decode all bitstreams encoded for that tier / level and all lower tiers / levels.
[0126] The general constraint information may include constraint information regarding video source type, coding tool, and function. For example, the constraint flag may indicate whether inter-coding tool, intra-coding tool, DBF, entropy coding, transform, partition (e.g., tile, slice), buffer management, random access (e.g., IDR), parameter set (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 flag may be signaled in a high-level syntax structure (e.g., SPS, VPS, DCI).
[0127] According to some aspects of the disclosure, PTL information may be associated with a scope (e.g., a portion of the coded video data within a bitstream). In some examples, PTL information may be specified, for example, for the entire bitstream, the CVS of the bitstream, each Output Layer Set (OLS) of the bitstream, etc., and may be signaled in High Level Syntax (HLS) structures, such as VPS, DPS, DCI, SPS, PPS, APS, GOP, sequence, header, SEI messages, etc.
[0128] In some examples, the high level syntax (HLS) is defined with respect to the block level. Block-level coding tools can be used to decode pixels or samples in a picture to reconstruct the picture. The block-level coding tools can include any suitable coding tools used to reconstruct coding blocks, such as coding tools for inter prediction (or inter coding tools), coding tools for intra prediction (or intra coding tools), adaptive loop filters (ALFs), deblocking filters (DBFs), entropy coding, transforms, etc.
[0129] High-level syntax (HLS) can specify information about capabilities, system interfaces, picture-level control of tools, buffer control, etc. For example, HLS can specify partitions (e.g., tiles, slices, subpictures), buffer management, random access (e.g., IDR, clean random access (CRA)), parameter sets (e.g., VPS, SPS, PPS, APS), reference picture resampling (RPR), scalability, etc. High-level syntax can be above the block level.
[0130] 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 is part of the control information and may be signaled as a constraint flag in the HLS structure, and may indicate control or constraint of a tool in a scope corresponding to the HLS structure. For example, a constraint flag for 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, the tool is not used to code a block in a scope corresponding to the HLS, for example.
[0131] 12 and 13 show examples of PTL information according to some embodiments of the present disclosure. Fig. 12 shows an example syntax structure of a set of PTL syntax elements (1200), and Fig. 13 shows an example syntax structure of general constraint information (1300).
[0132] 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_0_bit, and sublayer_level_idc.
[0133] In FIG. 13, the generic 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 between types I, P, and B. A constraint flag (e.g., intra_only_constraint_flag) (1305) equal to 0 imposes no constraint (e.g., sh_slice_type should be I) on all coded pictures within the scope of the PTL information where 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) (1306) equal to 0 does not impose the above constraint.
[0134] In another example, a constraint flag (e.g., no_lossless_coding_tool_constraint_flag) (1301) may be signaled in the generic constraint information as shown in Fig. 13. A constraint flag (e.g., no_lossless_coding_tool_constraint_flag) (1301) equal to 1 may indicate that no coding tools for lossless coding may be used within the scope of the PTL information containing that constraint flag (1301). A constraint flag (e.g., no_lossless_coding_tool_constraint_flag) (1301) equal to 0 does not impose the above constraint.
[0135] In another example, a constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1302) may be signaled in the generic constraint information as shown in Fig. 13. A constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1302) equal to 1 may indicate that coding tools related to lossy coding cannot be used within the scope of the PTL information containing that constraint flag (1302). A constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1302) equal to 0 does not impose the above constraint.
[0136] In one embodiment, when a constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1302) is equal to 1, the constraint flag (e.g., no_lossless_coding_tool_constraint_flag) (1301) may not be equal to 1. Alternatively, when a constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1301) is equal to 1, the constraint flag (e.g., no_lossy_coding_tool_constraint_flag) (1302) may not be equal to 1.
[0137] The multiple constraint flags in the generic constraint information may be sorted in a certain order. The order may be set, for example, based on the likelihood of each feature and / or tool not being used in the scope of the PTL. This order may be referred to as a priority. In the generic constraint information syntax structure, an order from high priority to low priority may be presented, with a high priority indicating a high probability of non-use of the tool (or feature) and a low priority indicating a low probability of non-use of the tool (or feature). Additional factors influencing the order may include tools that are likely to be used only for a particular use case (e.g., tools for sub-picture, scalability, and / or interlace support), the impact of the tool on the encoder / decoder / implementation complexity, etc.
[0138] 14A and 14B show examples of PTL information including an example syntax structure of a PTL syntax structure (also called a PTL bracket) (1410) and an example syntax structure of a generic constraint information syntax structure (also called a generic constraint information bracket) (1420) according to some embodiments of the present disclosure. In some examples, a syntax element indicating the number of constraint flags (e.g., num_available_constraint_flags) can be signaled. In one example, the syntax element indicating the number of constraint flags can be signaled in the PTL syntax structure as shown in (1401) of the example syntax (1410) as shown in FIG. 14A, which may be outside the example syntax of the generic constraint information bracket (1420). Alternatively, the syntax element indicating the number of constraint flags can be signaled at the beginning of the generic constraint information bracket, such as at the beginning of the example syntax (1420). When a syntax element (e.g., num_available_constraint_flags) is present and the value of the syntax element (e.g., num_available_constraint_flags) is equal to N, the first N constraint flags may be present in the generic 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.
[0139] 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 may be any positive integer. The value of the maximum number of constraint flags (e.g., MaxNumConstraintFlags) may be predefined to be 16, 32, 64, 128, etc. When the value N (e.g., num_available_constraint_flags) is equal to 0, no constraint flags are present in the generic constraint information syntax structure. The coding of the value N (e.g., num_available_constraint_flags) may be selected such that the value N and the corresponding entropy coded representations of the constraint flags sum to a number that is divisible by 8 to ensure byte alignment.
[0140] 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 may be present. In one example, the gating flag can be referred to as a constraint group present flag. In general, 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) in the constraint information. For example, if the gating flag of the corresponding constraint information group is 1, the constraint flag corresponding to the constraint information group can be present, for example, in the generic constraint information. For example, if the gating flag of the corresponding constraint information group is 0, the constraint flag corresponding to the constraint information group may not be present, for example, in the generic constraint information. In one example, if all gating flags are equal to 0, the constraint flag is not present.
[0141] Constraint flags can have different scopes. For example, the scope of a constraint flag in a DCI can be the coded video bitstream. The scope of a constraint flag in a VPS can be a CLVS with multiple layers. The scope of a constraint flag in an SPS can be a single CLVS.
[0142] 15A and 15B show an example of a generic constraint information syntax structure (1500) according to one embodiment of the present disclosure. The generic constraint information syntax structure (1500) includes a flag that indicates generic 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), or a gate flag (e.g., inloop_filtering_constraint_group_flag) (1508) of FIG. 15A. As shown in FIG. 15A, one or more gate flags (eg, gate flags (1501)-(1508)) may be present at the beginning of a general constraint information syntax structure (1500).
[0143] A gate flag (e.g., general_frame_structure_constraint_group_flag) (1501) is associated with a constraint information group (1510) and is associated with constraint flags (1511)-(1514) within the constraint information group (1510). A gate flag (e.g., general_frame_structure_constraint_group_flag) (1501) equal to 1 can specify that constraint flags (1511)-(1514) may be present within the constraint information group (1510).
[0144] The constraint information group (1510) (or constraint flags (1511)-(1514)) may be associated with an input source and a frame packing (e.g., packed frame or projected frame). With reference to FIG. 15A , the constraint flags (1511)-(1514) correspond to general_non_packed_constraint_flag (1511), general_frame_only_constraint_flag (1512), general_non_projected_constraint_flag (1513), and general_one_picture_only_constraint_flag (1514). Otherwise, a gate flag (e.g., general_frame_structure_constraint_group_flag) (1501) equal to 0 may specify that the constraint flags (1511)-(1514) present in the constraint information group (1510) may not be present in the generic constraint information syntax structure (1500).
[0145] Additionally, in some examples, a gating flag (e.g., high_level_functionality_constraint_group_flag) (1502) equal to 1 may specify that there may be constraint flags for high-level functionality (e.g., reference picture resampling) in the constraint information group (1520), as shown in Figure 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 generic constraint information syntax structure (1500).
[0146] 15A, a gate flag (e.g., scalability_constraint_group_flag) (1503) equal to 1 may specify that a constraint flag for scalability (e.g., inter-layer prediction) may be present. Otherwise, a constraint flag for scalability may not be present in the generic constraint information syntax structure (1500).
[0147] A gate flag (e.g., partitioning_constraint_group_flag) (1504) equal to 1 can specify that constraint flags for higher-level partitions (e.g., subimages or tiles) may be present. Otherwise, constraint flags for higher-level partitions may not be present in the generic constraint information syntax structure (1500).
[0148] A gate flag (e.g., intra_coding_tool_constraint_group_flag) (1505) equal to 1 may specify that a constraint flag for intra-coding (e.g., intra-prediction) may be present. Otherwise, a constraint flag for intra-coding may not be present in the generic constraint information syntax structure (1500).
[0149] A gate flag (e.g., inter_coding_tool_constraint_group_flag) (1506) equal to 1 may specify that constraint flags for inter-coding (e.g., motion compensation for inter-picture prediction) may be present. Otherwise, constraint flags for inter-coding may not be present in the generic constraint information syntax structure (1500).
[0150] A gate flag (e.g., transform_contraint_group_flag) (1507) equal to 1 may specify that constraint flags for transform coding (e.g., multiple transform matrices) may be present. Otherwise, constraint flags for transform coding may not be present in the generic constraint information syntax structure (1500).
[0151] In one embodiment, when all gate flags (eg, gate flags (1501)-(1508) in FIG. 15A) are equal to 0, no constraint flags are present in the generic constraint information syntax structure (eg, generic constraint information syntax structure (1500)).
[0152] According to aspects of the present disclosure, the syntax can be designed such that the control information, including gate flags (e.g., gate flags (1501)-(1508)), associated constraint flags (e.g., constraint flags (1511)-(1512) and constraint flags in the constraint information group (1520)), additional control information, etc., can be byte aligned, e.g., the number of flags is divisible by 8 to maintain byte alignment. In one example, the number of gate flags and constraint flags in the constraint information (e.g., the generic constraint information syntax structure (1500)) is divisible by 8. A byte alignment mechanism can be used to achieve byte alignment of the control information. Referring to FIG. 15B, a syntax (e.g., a while loop) (1530) can be used for byte alignment.
[0153] 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 generic constraint information syntax structure) to aid in the presentation of the constraint flags in the respective constraint information groups associated with the gating flags in the constraint information. In one embodiment, one or more of the at least one constraint information group are present in the coded video bitstream. For a constraint information group, an offset and a length may be present in the constraint information for that constraint information group. The offset may indicate an offset relative 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_constaint_info_set may be an integer equal to or greater than 0. When the value of num_constraint_info_set is 0, constraint_info_offset[ ], constraint_info_length[ ], and constraint flags are not present in the generic constraint information syntax structure.
[0154] 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 assist in presenting constraint flags for constraint information group i (i is a positive integer) in the constraint information (e.g., a generic constraint information syntax structure). In one example, when the constraint information offset (e.g., syntax element constraint_info_offset[i]) has a value of 5 and the constraint information length (e.g., syntax element constraint_info_length[i]) has a value of 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., a generic constraint information syntax structure).
[0155] In one example, run-length coding may be used to code the constraint flags specified in a predefined order (or a given sequence).
[0156] In one embodiment, ranking can be used when constraint flags are specified in a predefined order (or a given sequence). Instead of coding the constraint flags directly, a suitably coded list of "skip" values can indicate constraint flags equal to 0, with the following constraint flags being implied to be 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.
[0157] 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. This allows the constraint flags to be run coded (e.g., run encoding or run decoding). Furthermore, prediction information for a subset of coding blocks can be determined based on the constraint flags.
[0158] 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, which allows the multiple constraint flags to be run-coded (e.g., run-encoded or run-decoded).
[0159] 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 ones of the constraint flags are present in the coded video stream, as indicated, for example, by one or more of the number of available constraint flags (e.g., num_available_constraint_flags), a gating flag (or constraint group presence flag), constraint information offset information, and constraint information length information, etc.
[0160] In one example, a complete list of constraint flags is specified and available at the encoder and the decoder. The complete list of constraint flags can be stored in the decoder. The complete list of constraint flags can include 100 constraint flags. Ten of the 100 constraint flags are present in the constraint information of the CLVS and are therefore available to a subset of coding blocks in the CLVS. The ten of the 100 constraint flags are referred to as the ten available constraint flags. In one example, the number of available constraint flags (e.g., ten) is signaled. In one example, the ten available constraint flags are in two constraint information groups and are gated by a first gate flag and a second gate flag. Thus, the first gate flag and the second gate flag can be signaled to indicate the ten available constraint flags.
[0161] 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 of the complete list (e.g., 100 constraint flags) are available or present in the constraint information.
[0162] In one embodiment, any of a variety of techniques (or methods, embodiments, examples) for efficiently coding the constraint flags can be combined using appropriate control information. The combination can be any suitable combination of two or more of such techniques. Alternatively, one of the various techniques (or methods, embodiments, examples) can be used independently. The constraint flags can be grouped. Certain groups can use run coding, while other groups may use simple binary coding.
[0163] The maximum number of constraint flags (eg, MaxNumConstraintFlags) may be predefined to a value of 16, 32, 64, 128, and so on.
[0164] Since the value of the maximum number of constraint flags (e.g., MaxNumConstraintFlags) can be determined by profile information such as general_profile_idc and general_sub_profile_idc, or codec version information, the range of the number of constraint flags (e.g., num_available_constraint_flags (1401)) can be limited by 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., where MaxNumConstraintFlags=64) can be in the range of 0 to 64, while the value of the number of constraint flags (e.g., num_available_constraint_flags (1401)) in the advanced profile (e.g., where MaxNumConstraintFlags=128) can be in the range of 0 to 128.
[0165] In one embodiment, the value of the number of constraint flags (e.g., num_available_constraint_flags) can be inferred to be equal to a value predefined by profile information such as general_profile_idc or general_sub_profile_idc, or codec version information, such that the value of num_available_constraint_flags can be determined without explicit signaling.
[0166] In some embodiments, the reserved byte information can be present in the generic constraint information syntax structure. For example, as shown in FIG. 13, the flags gci_num_reserved_bytes (1303) and gci_reserved_bytes[ ] (1304) can be present in the generic constraint information syntax structure to extend the generic constraint information syntax structure. The flag gci_num_reserved_bytes can specify the number of reserved constraint bytes. In one example, the reserved constraint bytes are for signaling additional flags (e.g., additional constraint flags). The flag gci_reserved_byte[ ] may have any suitable value.
[0167] 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 Basic Profile (or Main Profile), the value of the flag gci_num_reserved_bytes may be 0. In the Extended Profile (or Advanced Profile), the value of gci_num_reserved_bytes may be greater than 0.
[0168] 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 carries a picture representing a field. The flag sps_field_seq_flag equal to 0 may indicate that the CLVS carries a picture representing a frame.
[0169] In the general constraint information syntax structure of 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 the output layer set (e.g., OlsInScope) carries pictures that represent frames. The flag general_frame_only_constraint_flag equal to 0 specifies that the scope of the output layer set (e.g., OlsInScope) carries pictures that may or may not represent frames. In one embodiment, the flag general_frame_only_constraint_flag indicates whether the pictures in the output layer set are coded with field coding. The output layer set may include a subset of coding blocks. The flag sps_field_seq_flag may be false based on the flag general_frame_only_constraint_flag (e.g., is 1) indicating that the subset of pictures is not coded with field coding. The subset of pictures may be within one layer of the output layer set.
[0170] When the flag general_frame_only_constraint_flag is equal to 1, the value of the flag sps_field_seq_flag may be equal to 0.
[0171] In one embodiment, the flag pps_mixed_nalu_types_in_pic_flag may be present in the PPS. The flag pps_mixed_nalu_types_in_pic_flag equal to 1 may specify that each picture that references the PPS has two or more VCL NAL units, and 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 generic constraint information syntax structure of 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 is equal to 0. If the flag no_mixed_nalu_types_in_pic_constraint_flag is equal to 0, no such constraint is imposed.
[0172] 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 picture coded in the bitstream. When the flag general_one_picture_only_constraint_flag is equal to 0, no such constraint is imposed.
[0173] 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 is equal to 0. When the flag single_layer_constraint_flag is equal to 0, no such constraint is imposed. When the flag general_one_picture_only_constraint_flag is equal to 1, the value of the flag single_layer_constraint_flag may be equal to 1.
[0174] In one embodiment, the flag all_layers_independent_constraint_flag may be present in the generic 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. When the flag all_layers_independent_constraint_flag is equal to 0, no such constraint is imposed. When the flag single_layer_constraint_flag is equal to 1, the value of the flag all_layers_independent_constraint_flag may be equal to 1.
[0175] In one embodiment, the flag no_res_change_in_clvs_constraint_flag may be present in the generic 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. When the flag no_res_change_in_clvs_constraint_flag is equal to 0, no such constraint is imposed. When the flag no_ref_pic_resampling_constraint_flag is equal to 1, the value of the flag no_res_change_in_clvs_constraint_flag may be equal to 1.
[0176] In one embodiment, the flag no_mixed_nalu_types_in_pic_constraint_flag may be present in the generic constraint information syntax structure of Figure 13. The flag no_mixed_nalu_types_in_pic_constraint_flag equal to 1 specifies that the value of the flag pps_mixed_nalu_types_in_pic_flag may be equal to 0. When the flag no_mixed_nalu_types_in_pic_constraint_flag is equal to 0, no such constraint is imposed. When the flag one_subpic_per_pic_constraint_flag is equal to 1, the value of the flag no_mixed_nalu_types_in_pic_constraint_flag may be equal to 1.
[0177] In one embodiment, the flag no_trail_constraint_flag may be present in the general constraint information syntax structure of Figure 13. The flag no_trail_constraint_flag equal to 1 may specify that no NAL units with nuh_unit_type equal to TRAIL_NUT may be present in OlsInScope (OlsInScope is the output layer set that includes all layers of the entire bitstream that references the DPS). When the flag no_trail_constraint_flag is equal to 0, no such constraint is imposed. When the flag general_one_picture_only_constraint_flag is equal to 1, the flag no_trail_constraint_flag may be equal to 1.
[0178] In one embodiment, the flag no_stsa_constraint_flag may be present in the general constraint information syntax structure of Figure 13. The flag no_stsa_constraint_flag equal to 1 may specify that NAL units with nuh_unit_type equal to STSA_NUT may not be present in OlsInScope. When the flag no_stsa_constraint_flag is equal to 0, no such constraint is imposed. When the flag general_one_picture_only_constraint_flag is equal to 1, the flag no_stsa_constraint_flag may be equal to 1.
[0179] In one embodiment, the flag no_trail_constraint_flag may be present in the general constraint information syntax structure of Figure 13. The flag no_trail_constraint_flag equal to 1 may specify that NAL units with nuh_unit_type equal to TRAIL_NUT may not be present in OlsInScope. When the flag no_trail_constraint_flag is equal to 0, no such constraint is imposed. When the flag general_one_picture_only_constraint_flag is equal to 1, the flag no_trail_constraint_flag may be equal to 1.
[0180] In one embodiment, the flag no_stsa_constraint_flag may be present in the general constraint information syntax structure of Figure 13. The flag no_stsa_constraint_flag equal to 1 may specify that NAL units with nuh_unit_type equal to STSA_NUT may not be present in OlsInScope. When the flag no_stsa_constraint_flag is equal to 0, no such constraint is imposed. When the flag general_one_picture_only_constraint_flag is equal to 1, the flag no_stsa_constraint_flag may be equal to 1.
[0181] In one embodiment, the flag no_idr_constraint_flag may be present in the generic 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. When the flag no_idr_constraint_flag is equal to 0, no such constraint is imposed.
[0182] In one embodiment, the flag no_cra_constraint_flag may be present in the generic 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. When the flag no_cra_constraint_flag is equal to 0, no such constraint is imposed.
[0183] In one embodiment, the flag no_rasl_constraint_flag may be present in the generic constraint information syntax structure of Figure 13 (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. When the flag no_rasl_constraint_flag is equal to 0, no such constraint is imposed. When the flag no_cra_constraint_flag is equal to 1, the value of the flag no_rasl_constraint_flag may be equal to 1.
[0184] In one embodiment, the flag no_radl_constraint_flag may be present in the generic constraint information syntax structure as shown in Figure 13. The flag no_radl_constraint_flag equal to 1 may specify that there are no NAL units with nuh_unit_type of RADL_NUT present in OlsInScope. When the flag no_radl_constraint_flag is equal to 0, no such constraint is imposed. When the flag no_idr_constraint_flag is equal to 1 and the flag no_cra_constraint_flag is equal to 1, the value of the flag no_rasl_constraint_flag may be equal to 1.
[0185] Certain aspects of the present disclosure provide techniques for constraint flag signaling for range extensions, such as range extension with extended precision.
[0186] According to one aspect of the present disclosure, some standards may be originally developed for a specific application having a specific chroma format and a specific bit depth (number of bits per sample). For example, HEVC is originally targeted for applications having a chroma format of 4:2:0 with 8-10 bits per sample. To make the standard applicable to other formats and bit depths than the specific chroma format and the specific bit depth, range extensions are developed to support applications using other chroma formats and / or higher bit depths.
[0187] To restrict feature sets to those required for a particular group of applications, video coding standards define profiles, which may include a defined decoder feature set that is supported for interoperability with encoders that use these features. For example, a profile may define a set of coding tools or algorithms that may be used in generating a conforming bitstream. In addition to profiles, some standards (e.g., VVC, HEVC, etc.) also define levels and tiers. A level imposes restrictions on the bitstream in terms of spatial resolution, pixel rate, bitrate values and variance that may correspond to the decoder's processing load and memory capabilities. Level restrictions can be expressed in terms of maximum sample rate, maximum picture size, maximum bitrate, minimum compression ratio, capacity of coded picture buffer, etc. Higher values of the level may correspond to higher complexity restrictions. The tiers modify the bitrate values and variance restrictions for each level. For example, the Main tier is intended for most applications, while the High tier is designed to address more demanding video contribution applications, such as having significantly higher bitrate values than video distribution applications. Each of the profiles, tiers, and levels impacts implementation and decoding complexity, and the combination of the three specifies the interoperability points of bitstreams and decoders.
[0188] In some examples, a decoder that conforms to a particular hierarchy and level must be able to decode all bitstreams that conform to the same hierarchy or any lower hierarchy or levels below that level, and a decoder that conforms to a particular profile may support all features in that profile. In some examples, an encoder need not take advantage of a particular set of features supported in a profile, but must generate a conforming bitstream, i.e., a bitstream that obeys specified constraints that enable decoding by a conforming decoder.
[0189] In addition to the PTL information, the PTL syntax structure may also include a Generic Constraint Information (GCI) syntax structure that contains a list of constrained flags and non-flag syntax elements that indicate specific constrained characteristics of the bitstream.
[0190] In one example, HEVC natively includes three profiles called the Main profile, the Main 10 profile, and the Main Still Picture profile. The three profiles have some limitations, such as only supporting 4:2:0 chroma sampling. The Main and Main Still Picture profiles 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 extensions may support additional profiles. In one example, the following profiles are collectively referred to as extended range profiles: Monochrome profile, Monochrome 10 profile, Monochrome 12 profile, Monochrome 16 profile, Main 12 profile, Main 4:2:2 10 profile, Main 4:2:2 12 profile, Main 4:4:4 profile, Main 4:4:4 10 profile, Main 4:4:4 12 profile, Main Intra profile, Main 10 Intra profile, Main 12 Intra profile, Main 4:2:2 10 Intra profile, Main 4:2:2 12 Intra profile, Main 4:4:4 Intra profile, Main 4:4:4 10 Intra profile, Main 4:4:4 12 Intra profile, Main 4:4:4 16 Intra profile, Main 4:4:4 Still Picture profile, and Main 4:4:4 16 Still Picture profile.
[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, the profiles for extended operating range with high bit depths include profiles that support 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, and the Main 16 4:4:4 Still Picture profile.
[0193] Specifically, the Main 12 profile supports 4:0:0 and 4:2:0 chroma sampling for both intra and inter prediction modes, allowing bit depths from 8 bits to 12 bits per sample. In some examples, a decoder conforming to the Main 12 profile can decode bitstreams produced 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 produced with 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 allows for bit depths from 8 bits to 16 bits per sample, supporting 4:0:0, 4:2:0, 4:2:2, and 4:4:4 chroma sampling, as well as both intra and inter prediction modes.
[0196] The Main 12 Intra profile allows for bit depths from 8 to 12 bits per sample, supporting 4:0:0 and 4:2:0 chroma sampling, as well as intra prediction modes.
[0197] The Main 12 4:4:4 Intra profile allows for bit depths from 8 bits to 12 bits per sample, supporting 4:0:0, 4:2:0, 4:2:2, and 4:4:4 chroma sampling, and intra prediction modes.
[0198] The Main 16 4:4:4 Intra profile allows for bit depths from 8 bits to 16 bits per sample, supporting 4:0:0, 4:2:0, 4:2:2, and 4:4:4 chroma sampling, and intra prediction modes.
[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 may be performed at various scopes (e.g., a portion of the coded video data being coded with persistence of an instance of a syntax element for coding tool control), such as a bitstream scope, a coding layer video sequence (CLVS) scope, a picture, a slice of a picture, etc. In some examples, the coding tool control may be provided in a generic constraint information (GCI) syntax structure that generally includes constraint information for the bitstream. In some examples, the coding tool control may 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 may be provided in a slice header of a slice, where the slice header generally includes information for the slice.
[0203] According to one aspect of the present disclosure, control information of coding tools in range extensions can be provided at various scopes. In some examples, using syntax elements of larger scope can improve coding efficiency. For example, a GCI syntax element value 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 GCI syntax element value equal to the value 0 signals that the associated constraint may not be applied, such that the associated coding tool is permitted (but not required) to be used in the bitstream (if its use is supported in the indicated profile).
[0204] According to another aspect of the present disclosure, when a coding tool is not used to code video data in a bitstream, e.g., the PTL information and / or the generic constraint information indicate no use of the coding tool, a video decoder that does not have support for the coding tool may determine that the video decoder can decode the bitstream based on the signaling in the PTL information and / or the generic constraint information, and may extend the functionality of the video decoder.
[0205] In some embodiments, an encoder may generate a bitstream that complies with a video standard with a range extension, but does not utilize one or more features supported in the range extension. In some examples, with the knowledge of not using one or more features in the range extension, a decoder that complies with the video standard but does not support one or more features in the range extension may determine that the decoder is capable of decode the bitstream and may accept the bitstream for decoding instead of rejecting the bitstream.
[0206] FIG. 16 illustrates a syntax structure (1600) for generic 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 including an output layer, set to a decoder. In the example of FIG. 16, a syntax element indicated by gci_num_additional_bits in the syntax structure (1600) is used to specify some additional generic constraint information (GCI) bits other than the aligned 0-bit syntax elements (if any) in the generic constraint information syntax structure (1600). In some standards, the value of gci_num_additional_bits must 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 additional GCI bits (syntax elements) (1601)-(1605) denoted 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. The five additional GCI bits (1601)-(1605) each provide coding control information for a coding tool within the scope of the output layer set bitstream in some examples.
[0208] FIG. 17 illustrates an example 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 a 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. The five syntax elements (1701)-(1705) provide coding control information for coding tools within the scope of the CLVS in some examples.
[0209] Specifically, in one embodiment, the GCI bits (1601) and syntax elements (1701) are used to provide control over using extended precision at different scopes, such as control of extended dynamic range coding tools for transform coefficients in scaling and transformation processes, as well as 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 the binarization of transform coefficients in the scaling and transformation process, as well as some syntax elements such as abs_remainder[ ] and dec_abs_level[ ]. The syntax element abs_remainder[scanning position n] is the absolute value of the remainder of the transform coefficient level coded with a Golomb-Rice code at scanning position n. If abs_remainder[ ] is not present, it is inferred to be equal to 0. The syntax element dec_abs_level[scanning position n] can correspond to an intermediate value coded with a Golomb-Rice code at scanning position n and used to determine the level of the transform coefficient at scanning position n. A syntax element (1701) equal to 0 specifies that the extended dynamic range is not used in the scaling and transformation process, as well as for binarization, such as the syntax elements 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, the variable indicated by Log2TransformRange is used to determine the dynamic range for the binarization of the particular syntax element as well as the transform coefficients in the scaling and transform process. For example, the variable Log2TransformRange may be the number of bits for the binarization of the particular syntax element that represents the transform coefficients in the scaling and transform process. The dynamic range may be the difference between the maximum and minimum numbers represented using the number of bits. In one example, the variable Log2TransformRange is derived according to the syntax element (1701) sps_extended_precision_flag, 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 the binarization of a particular syntax element may be determined based on the variable Log2TransformRange. In some examples, when the value of the flag sps_extended_precision_flag is 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 value of the flag sps_extended_precision_flag is 1, the extended dynamic range feature is enabled, and the number of bits representing the transform coefficients in the scaling and transform process may be any of 15 bits, 16 bits, 17 bits, 18 bits, 19 bits, and 20 bits based on the bit depth BitDepth in the example of Equation (1). The dynamic range of the transform coefficients may be determined based on the number of bits.
[0213] According to one aspect of the present disclosure, a syntax element (e.g., denoted by sps_bitdepth_minus8) may be used to signal the bit depth of samples of luma and chroma arrays (e.g., denoted by BitDepth) and values of luma and chroma quantization parameter range offsets (e.g., denoted by QpBdOffset). In one example, the bit depth BitDepth may be calculated according to equation (2), and the QP range offset QpBdOffset may be calculated according to equation (3). BitDepth=8+sps_bitdepth_minus8 Formula (2) QpBdOffset=6×sps_bitdepth_minus8 Equation (3)
[0214] In some examples, a GCI bit (1601) equal to 1 specifies that the syntax element (1701) of all pictures within the scope of the output layer set (OlsInScope) 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 extended dynamic range coding tools are 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 for slice-based Rice coding for residual coding in transform skip mode, such as slice-based Rice parameter selection for residual coding in transform skip mode, at different scopes.
[0216] According to one aspect of the present disclosure, slice-based Rice parameter selection for transform skip residual coding may be included in a range extension of a video standard. In some examples, as shown in FIG. 17, when transform skip mode is enabled (e.g., syntax element sps_ts_residual_coding_rice_present_in_sh_flag is true), one control flag (e.g., syntax element (1702) indicated by sps_ts_residual_coding_rice_present_in_sh_flag) is signaled in a sequence parameter set (SPS) to indicate that signaling of Rice parameters for transform skip slices is enabled or disabled.
[0217] When the control flag is signaled as enabled (e.g., equal to "1"), one syntax element (e.g., indicated by sh_ts_residual_coding_rice_idx_minus1) is further signaled for each transform skip slice, e.g., in the slice header, to indicate the Rice parameter selection for that transform skip slice. When the control flag is signaled as disabled (e.g., equal to "0"), no further syntax element is signaled at the slice level (e.g., slice header) to indicate the Rice parameter selection for the transform skip slice, and default Rice parameters may be used for all transform skip slices in the coded video data that references the SPS, in one example.
[0218] For example, a syntax element (1702) equal to 1 in the SPS specifies that a 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. If not present, the value of sps_ts_residual_coding_rice_present_in_sh_flag is inferred to be equal to 0 in some examples.
[0219] In some examples, a syntax element may be included in the generic constraint information to control the use of coding tools 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 an output layer set (OlsInScope) 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 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 for binarization of some syntax elements, such as abs_remainder[ ] and dec_abs_level[ ] in normal residual coding (RRC), at different scopes. In some examples, normal residual coding (RRC) refers to some techniques for coding blocks obtained by transform and quantization. In some examples, RRC can be modified for blocks obtained by quantization only. In some examples, transform skip residual coding (TSRC) refers to some techniques dedicated to coding blocks obtained by bypassing 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 range extension of the video coding standard may include one or more alternative coding tools for Rice parameter derivation for binarization of some syntax elements, such as abs_remainder[ ] and dec_abs_level[ ].
[0222] In some examples, video standards use local template-based techniques for Rice parameter derivation. For example, a template including one or more (e.g., five in an example) adjacent coefficient levels is used for Rice parameter derivation. For example, a sum of absolute coefficient values in the template can be calculated, and then the Rice parameter is determined based on the sum. In one example, a lookup table can be used to determine the Rice parameter based on the sum.
[0223] It should be noted that the Rice parameters may be determined by other suitable coding tools. In one example, a formula may be used to determine the Rice parameters based on summation. In another example, context modeling may be used to determine the Rice parameters based on statistics of adjacent coefficient levels. In some examples, a range extension of a video standard may specify one or more alternative coding tools for Rice parameter derivation.
[0224] In some examples, range extensions of video standards may include modifications to the RRC for use in other scenarios. In one example, range extensions may include different context modeling 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 in the scope of the output layer set (OlsInScope) may be equal to 0. A syntax element (1603) equal to 0 imposes no such constraint. Thus, in some examples, a GCI bit (1603) equal to 1 may specify not to use an alternative Rice parameter derivation for binarization of abs_remainder[ ] and dec_abs_level[ ] for coding the bitstream (e.g., an alternative coding tool for the Rice parameter derivation specified with a specified range extension).
[0227] In some embodiments, the GCI bits (1604) and syntax elements (1704) are used to provide control of the statistically-based Rice parameter derivation for binarization of abs_remainder[ ] and dec_abs_level[ ] at different scopes.
[0228] According to one 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 statistics accumulated from the previous TU. In some examples, the statistics-based Rice parameter derivation can be included in the range extension of a video standard.
[0229] In some examples, a control flag, e.g., syntax element (1704), indicated 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 the previous TU. A syntax element (1704) equal to 0 specifies that the previous TU state is not used in the Rice parameter derivation of the current TU. If not present, the value of syntax (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 the output layer set (OlsInScope) may be equal to 0. A syntax element (1604) equal to 0 imposes no such constraint. Thus, in some examples, a GCI bit (1604) equal to 1 may specify 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 of 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, and a range extension of the video standard can specify an alternative coding tool, such as a second coding tool that can determine the location of the last significant coefficient by coding the relative coordinate of the last significant coefficient with reference to the bottom right corner of the zero-out transform block, in one example.
[0232] In some examples, a syntax element (1705) equal to 1 in the SPS specifies that the slice header flag (slice scope) indicated by sh_reverse_last_sig_coeff_flag is present in the slice header syntax structure (e.g., in some examples, slice_header( )) that references the SPS. A syntax element (1705) equal to 0 in the SPS specifies that the slice header flag sh_reverse_last_sig_coeff_flag is not present in the slice header syntax structure that references the SPS, and the slice header flag sh_reverse_last_sig_coeff_flag can be inferred to be 0. 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 position derivation of the last significant coefficient of the transform coefficient in the scaling and transform process in coding of the slice. In one example, when sh_reverse_last_sig_coeff_flag is equal to 1, the last significant coefficient position is coded by an alternative coding tool in the range extension of the video standard, such as a second coding tool, otherwise the current coordinate of the last significant coefficient position 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 the output layer set (OlsInScope) may be equal to 0. A GCI bit (1605) equal to 0 imposes no such constraint. Thus, a GCI bit (1605) equal to 1 may specify that the second coding tool is not used in the position derivation of the last significant coefficient for the scope of the bitstream.
[0235] FIG. 18 shows a flow chart outlining a process (1800) according to one embodiment of the disclosure. The process (1800) may be used in a video decoder. In various embodiments, the process (1800) is performed by a processing circuit, such as the processing circuit of the terminal devices (310), (320), (330), and (340), the processing circuit performing the functions of the video decoder (410), the processing circuit performing the functions of the video decoder (510), etc. In some embodiments, the process (1800) is implemented with software instructions, and thus the processing circuit performs the process (1800) when the processing circuit executes the software instructions. The process starts at (S1801) and proceeds to (S1810).
[0236] At (S1810), a value of a first syntax element (e.g., general_no_extended_precision_constraint_flag) for coding control in a first scope of coded video data (e.g., an output layer set) in a bitstream is determined. The first syntax element is associated with a coding tool for processing transform coefficients having a dynamic range extended from a predetermined dynamic range.
[0237] In one example, the first syntax element is decoded from a syntax structure for general-purpose constraint information in response to a syntax element (e.g., gci_num_additional_bits) in the syntax structure indicating additional bits for the general-purpose constraint information in the syntax structure.
[0238] At (S1820), if the value of the first syntax element is the first value, the process proceeds to (S1830), otherwise, the process proceeds to (S1840). The first value indicates that the coding tool is not used (e.g., disabled) in coding a first scope of coded video data in a bitstream that includes one or more second scopes of coded video data (e.g., one or more CLVSs in an output layer set).
[0239] In some examples, the first syntax element is in the generic constraint information for coding control of pictures in the output layer set output at the decoder. In one example, the first value of the first syntax element indicates disabling the coding tool in each coding layer video sequence (CLVS) in the output layer set.
[0240] At (S1830), in response to the first syntax element being the first value, a first scope of the coded video data in the bitstream is decoded without invoking a coding tool.
[0241] In some examples, a second syntax element for coding control of a coding layer video sequence (CLVS) in a bitstream (e.g., sps_extended_precision_flag) is constrained to have a value indicating not to invoke a coding tool to decode the CLVS.
[0242] At (S1840), in response to the first syntax element being the second value, a value of a second syntax element (e.g., sps_extended_precision_flag) for coding control of a second scope of coded video data, such as a coding layer video sequence (CLVS) in the bitstream, is determined for decoding of the coded video data in the second scope. The second syntax element indicates enabling / disabling of a coding tool in the CLVS. In one example, the second syntax element is not presented in a sequence parameter set (SPS) for the CLVS, and a value of the second syntax element for indicating disabling of a coding tool in the CLVS is inferred.
[0243] The second scope of the coded video data is then decoded according to the value of the second syntax element (e.g., with or without invoking a coding tool). In one example, the dynamic range (e.g., the number of bits to represent the transform coefficients) is determined based on the bit depth (e.g., using equation (1)) in response to a value of the second syntax element indicating enabling of a coding tool in the CLVS. In another example, the dynamic range (e.g., the number of bits to represent the transform coefficients) is determined to be a predetermined dynamic range in response to a value of the second syntax element indicating disabling of a coding tool in the CLVS.
[0244] Process (1800) may be adapted as appropriate. Step(s) of process (1800) may be modified and / or omitted. Additional step(s) may be added. Any suitable order of performance may be used.
[0245] 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 the processing circuit of the terminal devices (310), (320), (330), and (340), the processing circuit performing the function of the video encoder (403), the processing circuit performing the function of the video encoder (603), the processing circuit performing the function of the video encoder (703), etc. In some embodiments, the process (1900) is implemented with software instructions, and thus the processing circuit performs the process (1900) when the processing circuit executes the software instructions. The process starts at (S1901) and proceeds to (S1910).
[0246] At (S1910), the processing circuit determines whether a coding tool is used during encoding of a first scope of coded video data in the bitstream (e.g., an output layer set). The coding tool is for processing transform coefficients having an extended dynamic range from a predetermined dynamic range. The first scope of coded video data includes one or more second scopes of coded video data (e.g., CLVS).
[0247] In some examples, the processing circuitry may determine whether a coding tool is to be used for coding control of a coding layer video sequence (CLVS) in the bitstream based on a second syntax element (e.g., sps_extended_precision_flag).
[0248] At (S1920), if the coding tool has not been used to code the first scope of the coded video data, the process proceeds to (S1930), otherwise the process proceeds to (S1940).
[0249] At (S1930), a first syntax element (e.g., general_no_extended_precision_constraint_flag) having a first value is encoded in the bitstream. The first syntax element is for coding control in a first scope of coded video data (e.g., output layer set) in the bitstream. The first syntax element is associated with a coding tool for processing transform coefficients having extended dynamic range. The first value indicates not to use (e.g., disable) the coding tool in coding of the first scope of the coded video data.
[0250] In one example, the first syntax element is encoded with a syntax structure for general-purpose constraint information, and a syntax element in the syntax structure (e.g., gci_num_additional_bits) is adjusted to indicate additional bits for the general-purpose constraint information in the syntax structure.
[0251] At (S1940), a first syntax element having a second value is encoded in the bitstream. In some examples, the first syntax element is not encoded in the bitstream, e.g., the second value is a default value for the first syntax element and thus can be inferred if the first syntax element is not present, and then (S1940) can be skipped.
[0252] The process (1900) may be adapted as appropriate. Step(s) of the process (1900) may be modified and / or omitted. Additional step(s) may be added. Any suitable order of performance may be used.
[0253] 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 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.
[0254] Computer software can be coded using any suitable machine code or computer language that can be assembled, compiled, linked, or similar mechanisms to produce code including instructions that can be executed directly, or via interpretation, microcode execution, etc., by one or more computer central processing units (CPUs) and graphics processing units (GPUs), etc.
[0255] The instructions may be executed on various types of computers or computer components including, for example, personal computers, tablet computers, servers, smartphones, gaming consoles, Internet of Things devices, and the like.
[0256] 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. The arrangement of components should not be interpreted as having a dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of the computer system (2000).
[0257] The computer system (2000) may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users, for example, via tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), olfactory input (not shown). Human interface devices may also be used to capture certain media not necessarily directly associated with conscious human input, such as audio (speech, music, ambient sounds, etc.), images (scanned images, photographic images obtained from still image cameras, etc.), video (two-dimensional video, three-dimensional video including stereoscopic video, etc.).
[0258] The input human interface devices may include one or more (only one of each 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), a camera (2008).
[0259] 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, by 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 also be haptic feedback devices that do not function 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 with or without touch screen input capability, each with or without haptic feedback capability, some of which may be capable of two-dimensional visual output, or four or more dimensions of output by means of stereoscopic image output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), etc.), and printers (not shown).
[0260] The computer system (2000) may also include human accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (2020) with media (2021) such as CDs / DVDs, thumb drives (2022), removable hard drives or solid state drives (2023), legacy magnetic media such as tapes and floppy disks (not shown), dedicated ROM / ASIC / PLD based devices (not shown) such as security dongles, and the like.
[0261] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter of this disclosure does not encompass transmission media, carrier waves, or other transitory signals.
[0262] 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, vehicular and industrial, real-time, delay tolerant, and the like. Examples of networks include local area networks such as Ethernet, wireless LAN, cellular networks including GSM, 3G, 4G, 5G, LTE, and the like, television wired or wireless wide area digital networks including cable television, satellite television, and terrestrial broadcast television, vehicular and industrial including CANBus, and the like. Certain networks generally require an external network interface adapter attached to a particular general-purpose data port or peripheral bus (2049) (e.g., a USB port of the computer system (2000)). Other networks are generally 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) may communicate with other entities. Such communications may be one-way receive only (e.g., terrestrial broadcast television), one-way transmit only (e.g., CANbus to a particular 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 in each of these networks and network interfaces, as described above.
[0263] The aforementioned human interface devices, human accessible storage devices, and network interfaces may be attached to the core (2040) of the computer system (2000).
[0264] The cores (2040) may include one or more central processing units (CPUs) (2041), graphics processing units (GPUs) (2042), dedicated programmable processing units in the form of field programmable gate areas (FPGAs) (2043), hardware accelerators for specific tasks (2044), graphics adapters (2050), and the like. These devices may be connected via a system bus (2048), along with read-only memory (ROM) (2045), random access memory (2046), internal mass storage (2047) such as hard drives, SSDs, etc. that are not internally user accessible. 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. Peripherals may be attached directly to the core's system bus (2048) or via a peripheral bus (2049). In one example, a screen (2010) may be connected to the graphics adapter (2050). Peripheral bus architectures include PCI, USB, and the like.
[0265] The CPU (2041), GPU (2042), FPGA (2043), and accelerator (2044) can execute certain instructions that may combine to constitute the aforementioned computer code. The computer code may be stored in a ROM (2045) or a RAM (2046). Transient data may also be stored in the RAM (2046), and persistent data may be stored, for example, in an internal mass storage (2047). Rapid storage and retrieval in any of the memory devices may be made possible by the use of cache memories that may be closely associated with one or more of the CPU (2041), GPU (2042), mass storage (2047), ROM (2045), RAM (2046), and the like.
[0266] The computer-readable medium can bear computer code for performing various computer-implemented operations. The medium and computer code can be those specially designed and constructed for the purposes of the present disclosure, or they can be of the kind well known and available to those skilled in the computer software arts.
[0267] By way of example and not limitation, the computer system (2000) having the architecture, and in particular the core (2040), may provide functionality as a result of the processor(s) (including CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be user-accessible mass storage as described above, as well as media associated with the core's (2040) specific storage that is non-transitory in nature, such as the core's internal mass storage (2047) or ROM (2045). Software implementing various embodiments of the present disclosure may be stored in such devices and executed by the core (2040). The computer-readable media may include one or more memory devices or chips, depending on the particular needs. The software may cause the core (2040), and in particular the processors therein (including CPU, GPU, FPGA, etc.) to perform certain processes or certain portions of certain processes described herein, including defining data structures stored in RAM (2046) and modifying such data structures according to the software-defined processes. Additionally or alternatively, a computer system may provide functionality as a result of hardwired or otherwise embodied logic in circuitry (e.g., accelerator (2044)) that may operate in place of or in conjunction with software to perform particular processes or particular portions of particular processes described herein. References to software may encompass logic, and vice versa, where appropriate. References to computer-readable media may encompass circuitry (such as integrated circuits (ICs)) that store software for execution, circuitry that embodies logic for execution, or both, where appropriate. The present disclosure encompasses any suitable combination of hardware and software.
[0268] Appendix A: Acronyms JEM: Joint Exploration Model VVC: Versatile Video Coding BMS: Benchmark Set MV: Motion Vector HEVC: High Efficiency Video Coding SEI: Supplemental Extended Information VUI: Video Usability Information GOP: Group of Pictures TU: conversion unit PU: Prediction unit CTU: Coding Tree Unit CTB: coding tree block PB: Predicted block HRD: Hypothetical Reference Decoder SNR: Signal to 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 Area SSD: Solid State Drive IC: Integrated Circuit CU: coding unit
[0269] While this disclosure describes several exemplary embodiments, there exist modifications, substitutions, and various alternative equivalents that are within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of this disclosure and are therefore within the spirit and scope of this disclosure. [Explanation of symbols]
[0270] 101 Samples 102 Arrow 103 Arrow 104 Block 180 Schematic diagram 201 Current Block 202 Surrounding Samples 203 Surrounding Samples 204 Surrounding Samples 205 Surrounding Samples 206 Surrounding Samples 300 Communication Systems 310 Terminal Devices 320 Terminal Devices 330 Terminal Devices 340 Terminal Devices 350 Network 400 Communication Systems 401 Video Source 402 Video Picture Stream 403 Video Encoder 404 Encoded video data 405 Streaming Server 406 Client Subsystem 407 Video data input copy 408 Client Subsystem 409 Video data input copy 410 Video Decoder 411 Video Picture Output Stream 412 Display 413 Capture Subsystem 420 Electronic Devices 430 Electronic Devices 501 Channel 510 Video Decoder 512 Render Device 515 Buffer Memory 520 Parser 521 Symbols 530 Electronic Devices 531 Receiver 551 Scaler / Descaler Unit 552 Intra-picture prediction unit 553 Motion Compensation Prediction Unit 555 Aggregator 556 Loop Filter Unit 557 Reference Picture Memory 558 Current Picture Buffer 601 Video Sources 603 Video Encoder 620 Electronic Devices 630 Source Coder 632 Coding Engine 633 Decoder 634 Reference Picture Memory 635 Predictor 640 Transmitter 643 coded video sequence 645 Entropy Coder 650 Controller 660 Communication Channels 703 Video Encoder 721 General-purpose controller 722 Intra Encoder 723 Residual Calculator 724 Residual Encoder 725 Entropy Encoder 726 Switch 728 Residual Decoder 730 InterEncoder 810 Video Decoder 871 Entropy Decoder 872 Intra Decoder 873 Residual Decoder 874 Reconstruction Module 880 Interdecoder 911 Picture Header 912 Adaptive Resolution Change (ARC) Information 913 H.263 PLUS PTYPE 924 Picture Parameter Set (PPS) 925 ARC Reference Information 926 Table 927 Sequence Parameter Set (SPS) 938 Tile Group Header 939 ARC information 941 Parameter Set 942 ARC information 953 ARC Reference Information 954 Tile Group Header 955 ARC information 956 Parameter Set 1000 Tables 1101 Tile Group Header 1102 Syntax Elements 1103 Flag 1110 SPS 1111 Flag 1112 if( ) statement 1113 Output Resolution 1114 Syntax Elements 1115 Reference Picture Dimensions 1116 Syntax Elements 1117 Syntax Elements 1200 Syntax Structure Examples 1300 Syntactic Structure Examples 1301 Constraint Flags 1302 Constraint Flags 1401 Constraint Flags 1410 Syntactic Structure Examples 1420 Syntax Examples 1500 General Constraint Information Syntax Structure 1501 Gate Flag 1502 Gate Flag 1503 Gate Flag 1504 Gate Flag 1505 Gate Flag 1506 Gate Flag 1507 Gate Flag 1508 Gate Flag 1510 Constraint Information Group 1511 Constraint Flags 1512 Constraint Flags 1513 Constraint Flags 1514 Constraint Flags 1520 Constraint Information Group 1600 Syntactic Structure 1601 General Constraint Information (GCI) bit 1602 GCI Bit 1603 GCI Bit 1604 GCI bit 1605 GCI Bit 1700 Syntactic Structure 1701 Syntax Elements 1702 Syntax Elements 1703 Syntax Elements 1704 Syntax Elements 1705 Syntax Elements 2000 Computer Systems 2001 Keyboard 2002 Mouse 2003 Trackpad 2005 Joystick 2006 Microphone 2007 Scanner 2008 Camera 2009 Speaker 2010 Touchscreen 2020 CD / DVD ROM / RW 2021 CD / DVD and other media 2022 Thumb Drive 2023 Removable Hard Drive or Solid State Drive 2040 Core 2041 Central Processing Unit (CPU) 2042 Graphics Processing Unit (GPU) 2043 Field Programmable Gate Area (FPGA) 2044 Accelerator 2045 Read-Only Memory (ROM) 2046 Random Access Memory (RAM) 2047 Internal Mass Storage 2048 System Bus 2049 Surrounding Bus 2050 Graphics Adapter 2054 Interface 2055 Communication Network
Claims
1. 1. A method of video decoding in a decoder, comprising: determining, by a processor, a first syntax element for coding control within a first scope of coded video data in a bitstream, the first syntax element being associated with a coding tool for processing transform coefficients having an extended dynamic range from a predetermined dynamic range, the dynamic range being associated with an extended precision; in response to the first syntax element being a first value indicating disabling of the coding tool in the first scope, decoding, by the processor, the first scope of coded video data in the bitstream including one or more second scopes of coded video data without invoking the coding tool; Including, said step of determining said first syntax element further comprising: and decoding the first syntax element from the syntax structure for general constraint information in response to a syntax element in the syntax structure indicating additional bits for general constraint information in the syntax structure. method.
2. The method of claim 1 , wherein the first syntax element is in general constraint information for coding control of pictures in an output layer set at the decoder.
3. The method of claim 2 , wherein the first value of the first syntax element indicates disabling the coding tool in each coding layer video sequence (CLVS) in the output layer set.
4. constraining a second syntax element for coding control of a coding layer video sequence (CLVS) in the bitstream to have a value indicating not to invoke the coding tool for decoding the CLVS. The method of claim 2 , further comprising:
5. determining a value of a second syntax element for coding control of a coding layer video sequence (CLVS) in the bitstream in response to the first syntax element being a second value, the second syntax element indicating enabling / disabling of the coding tool in the CLVS; The method of claim 2 , further comprising:
6. The step of determining the value of the second syntax element further comprises:
6. The method of claim 5, further comprising inferring, in response to the second syntax element not being present in a sequence parameter set (SPS) for the CLVS, the value of the second syntax element to indicate a disablement of the coding tool in the CLVS.
7. determining the dynamic range based on a bit depth in response to the value of the second syntax element indicating enablement of the coding tool in the CLVS; determining the dynamic range to be the predetermined dynamic range in response to the value of the second syntax element indicating a disablement of the coding tool in the CLVS; The method of claim 5 further comprising:
8. An apparatus for video decoding, comprising a processing circuit configured to perform the method according to any one of claims 1 to 7.
9. A program for causing at least one processor to carry out the method according to any one of claims 1 to 7.
Citation Information
Patent Citations
Residual and coefficients coding for video coding
WO2022169641A1
