Method, apparatus and computer program for video decoding
By disabling or constraining specific coding tools in video decoding, the method addresses inefficiencies in representing less likely intra-prediction directions, enhancing compression efficiency and data transmission quality.
Patent Information
- Application Number
- JP2024187305
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-03-31
- Filing Date
- 2024-10-24
- Publication Date
- 2026-01-09
- Estimated Expiration
- 2042-04-29
AI Technical Summary
Existing video coding technologies face inefficiencies in representing less likely intra-prediction directions, leading to increased bit usage and reduced compression efficiency.
Implementing a method to disable or constrain the use of certain coding tools, such as Rice parameter derivation, in residual coding to optimize video decoding processes, particularly through the use of syntax elements for coding control in video sequences.
Enhances video decoding efficiency by reducing bit usage for less likely intra-prediction directions, thereby improving compression ratios and overall video data transmission quality.
Smart Images

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