Signaling of Chroma Quantization Parameter (QP) Mapping Tables
Patent Information
- Application Number
- KR1020217041706
- Authority / Receiving Office
- KR · KR
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-06-24
- Filing Date
- 2020-06-25
- Publication Date
- 2026-09-16
- Estimated Expiration
- 2040-06-25
Smart Images

Figure 112021147333783-PCT00015_ABST
Abstract
Description
Technology Field
[0001] This application claims priority to U.S. Application No. 16 / 911,003 filed on June 24, 2020, and claims the benefit of U.S. Provisional Application No. 62 / 866,561 filed on June 25, 2019 and U.S. Provisional Application No. 62 / 909,626 filed on October 2, 2019, the entire contents of each of which are incorporated herein by reference.
[0002] Technology field
[0003] The present disclosure relates to video encoding and video decoding. Background Technology
[0004] Digital video capabilities can be integrated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital aids (PDAs), laptop or desktop computers, tablet computers, e-book readers, digital cameras, digital recording devices, digital media players, video gaming devices, video game consoles, cellular or satellite wireless phones, so-called "smartphones," video teleconferencing devices, video streaming devices, etc. Digital video devices implement video coding techniques such as those described in standards defined by MPEG-2, MPEG-4, ITU-T H.263 or ITU-T H.264 / MPEG-4, Part 10, AVC (Advanced Video Coding), ITU-T H.265, HEVC (High Efficiency Video Coding), and extensions of such standards. Video devices may also transmit, receive, encode, decode, and / or store digital video information more efficiently by implementing such video coding techniques.
[0005] Video coding techniques include spatial (intra-picture) prediction and / or temporal (inter-picture) prediction to reduce or eliminate redundancy inherent in video sequences. For block-based video coding, a video slice (i.e., a video picture or a part of a video picture) may be partitioned into video blocks, which may also be referred to as coding tree units (CTUs), coding units (CUs), and / or coding nodes. Video blocks in an intra-coded (I) slice of a picture are encoded using spatial prediction for reference samples in neighboring blocks of the same picture. Video blocks in an inter-coded (P or B) slice of a picture may use spatial prediction for reference samples in neighboring blocks of the same picture, or temporal prediction for reference samples in other reference pictures. Pictures may be referred to as frames, and reference pictures may be referred to as reference frames. means of solving the problem
[0006] Generally, the present disclosure describes techniques for determining quantization parameter (QP) values for chroma blocks of video data. In particular, the present disclosure describes techniques comprising signaling one or more chroma QP mapping tables in an encoded video bitstream. In one example, the chroma QP mapping tables may be signaled in a sequence parameter set (SPS). A video decoder may receive and decode the encoded chroma QP mapping tables and then use the signaled chroma QP mapping tables to determine QP values for the chroma components of blocks of video data and QP values used for the corresponding luma blocks from the chroma QP mapping tables. In some examples, the video encoder may encode and signal the chroma QP mapping tables as a piecewise linear model.
[0007] One advantage of signaling chroma QP mapping tables in a bitstream is that it provides encoders with the flexibility to efficiently model chroma QP values for specific types of video content without relying on the use of QP offset values. Restricting the signaling of chroma QP mapping tables (e.g., by using static chroma QP mapping tables) prevents the realization of this objective. As such, it is advantageous to have a more general signaling mechanism for chroma QP mapping tables.
[0008] In one example, the method comprises receiving syntax elements describing a set of pivot points that specify a piece-wise linear model for a first chroma quantization parameter (QP) mapping table in an encoded video bitstream, determining a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, and decoding the first chroma block of video data using the first chroma QP value.
[0009] In another example, the device includes a memory configured to store video data and one or more processors communicating with the memory, and the one or more processors receive syntax elements describing a set of pivot points that specify a piecewise linear model for a first chroma quantization parameter (QP) mapping table in an encoded video bitstream, determine a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, and are configured to decode the first chroma block of video data using the first chroma QP value.
[0010] In another example, the device includes means for receiving syntax elements describing a set of pivot points that specify a piece-wise linear model for a first chroma quantization parameter (QP) mapping table in an encoded video bitstream, means for determining a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP value from the first chroma QP mapping table, and means for decoding the first chroma block of video data using the first chroma QP value.
[0011] In another example, the present disclosure describes a non-transient computer-readable storage medium storing instructions, the instructions which, when executed, cause one or more processors of a device configured to decode video data to receive syntax elements describing a set of pivot points that specify a piecewise linear model for a first chroma quantization parameter (QP) mapping table in an encoded video bitstream, determine a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, and decode the first chroma block of video data using the first chroma QP value.
[0012] In another example, the method comprises the steps of determining a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, encoding the first chroma block of video data using the first chroma QP value, and signaling syntax elements describing a set of pivot points that specify a piecewise linear model for a first chroma quantization parameter (QP) mapping table in the encoded video bitstream.
[0013] In another example, the device includes a memory configured to store video data and one or more processors communicating with the memory, and the one or more processors are configured to determine a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, to encode the first chroma block of video data using the first chroma QP value, and to signal syntax elements describing a set of pivot points that specify a piecewise linear model for a first chroma quantization parameter (QP) mapping table in the encoded video bitstream.
[0014] In another example, the device includes means for determining a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, means for encoding the first chroma block of video data using the first chroma QP value, and means for signaling syntax elements describing a set of pivot points that specify a piecewise linear model for the first chroma quantization parameter (QP) mapping table in the encoded video bitstream.
[0015] In another example, the present disclosure describes a non-transient computer-readable storage medium storing instructions, the instructions which, when executed, cause one or more processors of a device configured to encode video data to determine a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, to encode a first chroma block of video data using the first chroma QP value, and to signal syntax elements describing a set of pivot points that specify a piecewise linear model for a first chroma quantization parameter (QP) mapping table in the encoded video bitstream.
[0016] Details of one or more examples are disclosed in the accompanying drawings and the following description. Other features, purposes, and advantages will be apparent from the description, drawings, and claims. Brief explanation of the drawing
[0017] FIG. 1 is a block diagram illustrating an example video encoding and decoding system capable of performing the techniques of the present disclosure. FIG. 2 is a block diagram illustrating an example video encoder capable of performing the techniques of the present disclosure. FIG. 3 is a block diagram illustrating an example video decoder capable of performing the techniques of the present disclosure. FIG. 4 is a flowchart illustrating a video encoding method of the present disclosure. FIG. 5 is a flowchart illustrating a video decoding method of the present disclosure. Specific details for implementing the invention
[0018] In the draft versions of the examples of the VVC (Versatile Video Coding) standard under development, the values of quantization parameters (QP) used to decode chroma blocks (e.g., chroma QP) are derived from the values of offset parameters using chroma QP mapping tables (e.g., Tables 8-15 in Bross et al.'s "Versatile Video Coding (Draft 5)," "Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 14th Meeting: Geneva, CH, 19-27 March 2019, JVET-N1008-v8 (hereinafter referred to as "VVC Draft 5"). In some examples, the chroma QP mapping tables are linear of 1 for most QP values. It has a slope and has a slope of less than 1 for QP values between 29 and 43. In VVC Draft 5, a fixed chroma QP mapping table is used to determine chroma QP values from luminance QP values. That is, the chroma QP mapping table is not signaled in the bitstream but is rather static, and the same chroma QP mapping table is stored in both the video encoder and the video decoder.
[0019] Techniques for determining chroma QP values using static chroma QP mapping tables (as in VVC Draft 5, for example) exhibit several disadvantages. For instance, static chroma QP mapping tables do not provide the flexibility to model chroma QP values for all types of video content that can be encoded (e.g., High Dynamic Range (HDR) video content, Wide Color Gamut (WCG) video content, natural content, screen content, etc.). As such, the use of static chroma QP mapping tables may result in suboptimal distortion and / or coding efficiency in some situations. Furthermore, the chroma QP mapping table used in VVC Draft 5 is designed under the assumption that the same table will be used for both Cb and Cr chroma components. However, it has been observed that for more general use cases (e.g., HDR video), it is advantageous to use different chroma QP mapping tables for the Cb and Cr components.
[0020] Taking these disadvantages into account, the present disclosure describes techniques for signaling one or more chroma QP mapping tables in an encoded video bitstream. In one example, the chroma QP mapping tables may be signaled in a sequence parameter set (SPS). A video decoder may receive and decode the encoded chroma QP mapping tables and then use the signaled chroma QP mapping tables to determine QP values for the chroma components of blocks of video data and QP values to be used for the corresponding luma blocks. In some examples, the video encoder may encode and signal the chroma QP mapping tables as a piecewise linear model.
[0021] One advantage of signaling chroma QP mapping tables in a bitstream is that it provides encoders with the flexibility to efficiently model chroma QP values for specific types of video content without relying on the use of QP offset values. Restricting the signaling of chroma QP mapping tables (e.g., by using static chroma QP mapping tables) prevents the realization of this objective. As such, it is advantageous to have a more general signaling mechanism for chroma QP mapping tables.
[0022] FIG. 1 is a block diagram illustrating an example video encoding and decoding system (100) capable of performing the techniques of the present disclosure. The techniques of the present disclosure generally relate to coding (encoding and / or decoding) video data. Generally, video data includes any data for processing video. Accordingly, video data may include raw, uncoded video, encoded video, decoded (e.g., restored) video, and video metadata, such as signaling data.
[0023] As illustrated in FIG. 1, the system (100) includes a source device (102) that provides encoded video data to be decoded and displayed by a destination device (116) in this example. In particular, the source device (102) provides the video data to the destination device (116) via a computer-readable medium (110). The source device (102) and the destination device (116) may include any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, mobile devices, tablet computers, set-top boxes, telephone handsets, e.g. smartphones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, broadcast receiver devices, etc. In some cases, the source device (102) and the destination device (116) may be deployed for wireless communication and thus may be referred to as wireless communication devices.
[0024] In the example of FIG. 1, the source device (102) includes a video source (104), memory (106), a video encoder (200), and an output interface (108). The destination device (116) includes an input interface (122), a video decoder (300), memory (120), and a display device (118). According to the present disclosure, the video encoder (200) of the source device (102) and the video decoder (300) of the destination device (116) may be configured to apply techniques for encoding and decoding chroma QP mapping tables. Thus, the source device (102) represents an example of a video encoding device, while the destination device (116) represents an example of a video decoding device. In other examples, the source device and the destination device may include other components or arrangements. For example, the source device (102) may receive video data from an external video source, such as an external camera. Likewise, the destination device (116) may interface with an external display device rather than including an integrated display device.
[0025] The system (100) illustrated in FIG. 1 is merely an example. In general, any digital video encoding and / or decoding device may perform techniques for encoding and decoding a chroma QP mapping table. The source device (102) and the destination device (116) are merely examples of such coding devices in which the source device (102) generates video data coded for transmission to the destination device (116). The present disclosure refers to a "coding" device as a device that performs the coding (encoding and / or decoding) of data. Accordingly, the video encoder (200) and the video decoder (300) represent examples of coding devices, in particular a video encoder and a video decoder, respectively. In some examples, the source device (102) and the destination device (116) may operate substantially symmetrically such that each of the source device (102) and the destination device (116) includes video encoding and decoding components. Accordingly, the system (100) may support unidirectional or bidirectional video transmission between a source device (102) and a destination device (116) for, for example, video streaming, video playback, video broadcasting, or video calling.
[0026] Generally, a video source (104) represents a source of video data (i.e., raw, unencoded video data) and provides a sequential series of pictures of video data (also referred to as “frames”) to a video encoder (200) that encodes data for the pictures. The video source (104) of the source device (102) may include a video capture device such as a video camera, a video archive containing previously captured raw video, and / or a video feed interface for receiving video from a video content provider. As an additional alternative, the video source (104) may generate computer graphics-based data as source video, or as a combination of live video, archived video, and computer-generated video. In each case, the video encoder (200) encodes the captured, pre-captured, or computer-generated video data. The video encoder (200) may rearrange the pictures from the received order (often referred to as the “display order”) to the coding order for coding. The video encoder (200) may generate a bitstream containing encoded video data. The source device (102) may then output the encoded video data onto a computer-readable medium (110) through an output interface (108) for reception and / or extraction, for example, by an input interface (122) of a destination device (116).
[0027] The memory (106) of the source device (102) and the memory (120) of the destination device (116) represent general-purpose memories. In some examples, the memories (106, 120) may store raw video data, for example, raw video from a video source (104) and raw, decoded video data from a video decoder (300). Additionally or alternatively, the memories (106, 120) may store software instructions executable by, for example, the video encoder (200) and the video decoder (300), respectively. In this example, the memory (106) and the memory (120) are shown separately from the video encoder (200) and the video decoder (300), but it should be understood that the video encoder (200) and the video decoder (300) may also include internal memories for functionally similar or equivalent purposes. Additionally, the memories (106, 120) may store encoded video data that is output from the video encoder (200) and input to the video decoder (300), for example. In some examples, parts of the memories (106, 120) may be allocated as one or more video buffers to store raw, decoded, and / or encoded video data, for example.
[0028] The computer-readable medium (110) may represent any type of medium or device capable of transmitting encoded video data from a source device (102) to a destination device (116). In one example, the computer-readable medium (110) represents a communication medium for enabling the source device (102) to transmit encoded video data directly to the destination device (116) in real time, for example, through a radio frequency network or a computer-based network. Depending on a communication standard such as a wireless communication protocol, an output interface (108) may modulate a transmission signal containing the encoded video data, and an input interface (122) may modulate a received transmission signal. The communication medium may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful for enabling communication from a source device (102) to a destination device (116).
[0029] In some examples, the computer-readable medium (110) may include a storage device (112). The source device (102) may output encoded data to the storage device (112) from the output interface (108). Similarly, the destination device (116) may access the encoded data from the storage device (112) through the input interface (122). The storage device (112) may include any of various distributed or locally accessed data storage media, such as a hard drive, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data.
[0030] In some examples, the computer-readable medium (110) may include a file server (114) or other intermediate storage device that may store encoded video data generated by the source device (102). The source device (102) may output the encoded video data to the file server (114) or other intermediate storage device that may store the encoded video data generated by the source device (102). The destination device (116) may access the stored video data from the file server (114) via streaming or download.
[0031] The file server (114) may be any type of server device capable of storing encoded video data and transmitting the encoded video data to a destination device (116). The file server (114) may represent a web server (e.g., for a website), a server configured to provide a file transfer protocol service (e.g., FTP (File Transfer Protocol) or FLUTE (File Delivery over Unidirectional Transport) protocol), a CDN (content delivery network) device, an HTTP (hypertext transfer protocol) server, an MBMS (Multimedia Broadcast Multicast Service) or eMBMS (Enhanced MBMS) server, and / or a NAS (network attached storage) device. The file server (114) may additionally or alternatively implement one or more HTTP streaming protocols, such as DASH (Dynamic Adaptive Streaming over HTTP), HLS (HTTP Live Streaming), RTSP (Real Time Streaming Protocol), HTTP dynamic streaming, etc.
[0032] The destination device (116) may access encoded video data from the file server (114) via any standard data connection, including an internet connection. This may include a wireless channel (e.g., Wi-Fi connection), a wired connection (e.g., Digital Subscriber Line (DSL), a cable modem, etc.), or a combination of both, suitable for accessing encoded video data stored on the file server (114). The input interface (122) may be configured to operate according to one or more of the various protocols described above for extracting or receiving media data from the file server (114) or other such protocols for extracting media data.
[0033] The output interface (108) and input interface (122) may represent wireless transmitters / receivers, modems, wired networking components (e.g., Ethernet cards), wireless communication components operating according to any of the various IEEE 802.11 standards, or other physical components. In examples where the output interface (108) and input interface (122) include wireless components, the output interface (108) and input interface (122) may be configured to transmit data, such as encoded video data, according to cellular communication standards such as 4G, 4G-LTE (Long-Term Evolution), LTE Advanced, 5G, etc. In some examples where the output interface (108) includes a wireless transmitter, the output interface (108) and the input interface (122) may be configured to transmit data, such as encoded video data, according to other wireless standards such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee™), the Bluetooth™ standard, etc. In some examples, the source device (102) and / or the destination device (116) may include individual system-on-chip (SoC) devices. For example, the source device (102) may include an SoC device for performing the functionality attributed to the video encoder (200) and / or the output interface (108), and the destination device (116) may include an SoC device for performing the functionality attributed to the video decoder (300) and / or the input interface (122).
[0034] The techniques of the present disclosure may be applied to video coding by supporting any of various multimedia applications, such as over-the-air television broadcasts, cable television transmissions, satellite television transmissions, internet streaming video transmissions, e.g., DASH (dynamic adaptive streaming over HTTP), digital video encoded on a data storage medium, decoding of digital video stored on a data storage medium, or other applications.
[0035] The input interface (122) of the destination device (116) receives an encoded video bitstream from a computer-readable medium (110) (e.g., a communication medium, a storage device (112), a file server (114), etc.). The encoded video bitstream may include signaling information defined by a video encoder (200), which is also used by a video decoder (300), such as syntax elements having values describing the processing and / or features of video blocks or other coded units (e.g., slices, pictures, groups of pictures, sequences, etc.). A display device (118) displays decoded pictures of the decoded video data to a user. The display device (118) may represent any of various display devices, such as a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or other types of display devices.
[0036] Although not illustrated in FIG. 1, in some examples, the video encoder (200) and the video decoder (300) may each be integrated with an audio encoder and / or an audio decoder, and may include suitable MUX-DEMUX units or other hardware and / or software to handle multiplexed streams containing both audio and video in a common data stream. Where applicable, the MUX-DEMUX units may follow the ITU H.223 multiplexer protocol, or other protocols, e.g., the User Datagram Protocol (UDP).
[0037] Each of the video encoder (200) and the video decoder (300) may be implemented as any of various suitable encoder and / or decoder circuits, for example, one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. Where the techniques are partially implemented in software, the device may store instructions for the software on a suitable, non-transient computer-readable medium and execute those instructions in hardware using one or more processors to perform the techniques of the present disclosure. Each of the video encoder (200) and the video decoder (300) may be included in one or more encoders or decoders, any one of which may be integrated as part of a combined encoder / decoder (CODEC) in a separate device. A device including a video encoder (200) and / or a video decoder (300) may include an integrated circuit, a microprocessor, and / or a wireless communication device, such as a cellular phone.
[0038] The video encoder (200) and video decoder (300) may operate according to a video coding standard such as ITU-T H.265, also referred to as High Efficiency Video Coding (HEVC), or extensions thereof, such as multi-view and / or scalable video coding extensions. Alternatively, the video encoder (200) and video decoder (300) may operate according to other proprietary or industry standards such as ITU-T H.266, also referred to as Versatile Video Coding (VVC) and / or Essential Video Coding (MPEG EVC). The latest draft of the VVC standard is described in Bross et al., “Versatile Video Coding (Draft 5)” (Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 14th Meeting: Geneva, CH, 19-27 March 2019, N1008-v8) (hereinafter referred to as “VVC Draft 5”). However, the techniques of the present disclosure are not limited to any specific coding standard.
[0039] Generally, the video encoder (200) and video decoder (300) may perform block-based coding of pictures. The term “block” generally refers to a structure containing data to be processed (e.g., to be encoded, to be decoded, or otherwise to be used in the encoding and / or decoding process). For example, a block may contain a two-dimensional matrix of samples of luminance and / or chrominance data. Generally, the video encoder (200) and video decoder (300) may code video data represented in a YUV (e.g., Y, Cb, Cr) format. That is, rather than coding red, green, and blue (RGB) data for samples of a picture, the video encoder (200) and video decoder (300) may code luminance and chrominance components, wherein the chrominance components may include both red and blue chrominance components. In some examples, the video encoder (200) converts the received RGB-formatted data into a YUV representation prior to encoding, and the video decoder (300) converts the YUV representation into an RGB format. Alternatively, pre- and post-processing units (not shown) may perform these conversions.
[0040] The present disclosure may generally refer to the coding of pictures (e.g., encoding and decoding), which includes a process of encoding or decoding data of the pictures. Similarly, the present disclosure may refer to the coding of blocks of pictures, which includes a process of encoding or decoding data for the blocks, such as, for example, prediction and / or residual coding. An encoded video bitstream generally includes a series of values for syntax elements representing coding decisions (e.g., coding modes) and partitioning of the pictures into blocks. Accordingly, references to coding a picture or block should generally be understood as coding values for the syntax elements forming the picture or block.
[0041] HEVC defines various blocks including coding units (CUs), prediction units (PUs), and transformation units (TUs). According to HEVC, a video coder (e.g., a video encoder (200)) partitions coding tree units (CTUs) into CUs according to a quadtree structure. That is, the video coder partitions the CTUs and CUs into four identical, non-overlapping squares, and each node of the quadtree has zero or four child nodes. Nodes without child nodes may be referred to as "leaf nodes," and the CUs of such leaf nodes may contain one or more PUs and / or one or more TUs. The video coder may further partition the PUs and TUs. For example, in HEVC, a residual quadtree (RQT) represents the partitioning of the TUs. In HEVC, PUs represent inter-prediction data, while TUs represent residual data. Intra-predicted CUs include intra-predicted information, such as intra-mode indications.
[0042] As another example, the video encoder (200) and video decoder (300) may be configured to operate according to VVC. According to VVC, a video encoder (such as the video encoder (200)) partitions a picture into multiple coding tree units (CTUs). The video encoder (200) may partition the CTUs according to a tree structure such as a quadtree binary tree (QTBT) structure or a multi-type tree (MTT) structure. The QTBT structure eliminates the concepts of multiple partition types, such as the separation between CUs, PUs, and TUs in HEVC. The QTBT structure includes two levels: a first level partitioned according to quadtree partitioning, and a second level partitioned according to binary tree partitioning. The root node of the QTBT structure corresponds to a CTU. The leaf nodes of binary trees correspond to coding units (CUs).
[0043] In the MTT partitioning structure, blocks may be partitioned using quadtree (QT) partitions, binary tree (BT) partitions, and one or more types of tripletree (TT) (also called ternary tree (TT)) partitions. A triple or ternary tree partition is a partition in which a block is split into three sub-blocks. In some examples, a triple or ternary tree partition partitions the block into three sub-blocks without partitioning the original block through the center. The partitioning types in MTT (e.g., QT, BT, and TT) may be symmetric or asymmetric.
[0044] In some examples, the video encoder (200) and the video decoder (300) may use a single QTBT or MTT structure to represent each of the luminance and chrominance components, while in other examples, the video encoder (200) and the video decoder (300) may use two or more QTBT or MTT structures, such as one QTBT / MTT structure for the luminance component and another QTBT / MTT structure for both chrominance components (or two QTBT / MTT structures for each chrominance component).
[0045] The video encoder (200) and video decoder (300) may be configured to use quadtree partitioning per HEVC, QTBT partitioning, MTT partitioning, or other partitioning structures used in examples of VVC and / or EVC. For the purposes of explanation, the description of the techniques of the present disclosure is presented with respect to QTBT partitioning. However, it should be understood that the techniques of the present disclosure may also be applied to video coders configured to use quadtree partitioning or other types of partitioning.
[0046] In some examples, the CTU includes a coding tree block (CTB) of luminance samples, two corresponding CTBs of chroma samples of a picture having a three-sample array, or a CTB of samples of a picture coded using a monochrome picture or three distinct color planes, and a syntax structure used to code the samples. The CTB may be an NxN block of samples for some values of N such that the partitioning into the component's CTBs is partitioned. The component is an array or single sample from one of the three arrays (luma and two chroma) that make up the picture in a 4:2:0, 4:2:2, or 4:4:4 color format, or an array or single sample of arrays that make up the picture in a monochrome format. In some examples, the coding block is an MxN block of samples for some values of M and N such that the partitioning into the coding blocks of the CTB is partitioned.
[0047] Blocks (e.g., CTUs or CUs) may be grouped in various ways within a picture. As an example, a brick may refer to a rectangular area of rows of CTUs within a specific tile in the picture. A tile may refer to a rectangular area of CTBs within a specific tile column and a specific tile row in the picture. A tile column refers to a rectangular area of CTUs having a height equal to the height of the picture and a width specified by syntax elements (e.g., in a picture parameter set). A tile row refers to a rectangular area of CTUs having a width equal to the width of the picture and a height specified by syntax elements (e.g., in a picture parameter set).
[0048] In some examples, a tile may be partitioned into multiple bricks, each of which may contain one or more CTU rows within the tile. A tile that is not partitioned into multiple bricks may also be referred to as a brick. However, a brick, which is a true subset of a tile, may not be referred to as a tile.
[0049] Bricks in a picture may also be arranged into slices. A slice may be an integer number of bricks in a picture that may be exclusively contained in a single NAL (network abstraction layer) unit. In some examples, a slice contains only a number of complete tiles or a continuous sequence of complete bricks of a single tile.
[0050] The present disclosure may interchangeably use "NxN" and "N by N," e.g., 16x16 samples or 16 by 16 samples, to refer to the sample dimensions of a block (e.g., a CU or other video block) in terms of vertical and horizontal dimensions. Generally, a 16x16 CU will have 16 samples in the vertical direction (y = 16) and 16 samples in the horizontal direction (x = 16). Similarly, an NxN CU generally has N samples in the vertical direction and N samples in the horizontal direction, where N represents a non-negative integer value. Samples in a CU may be arranged in rows and columns. Additionally, CUs are not required to have the same number of samples in the horizontal direction as in the vertical direction. For example, CUs may contain NxM samples, where M is not necessarily equal to N.
[0051] A video encoder (200) encodes video data for CUs and other information representing prediction and / or residual information. The prediction information indicates how the CU will be predicted to form a prediction block for the CU. The residual information generally represents the sample-by-sample differences between the samples of the CU prior to encoding and the prediction block.
[0052] To predict the CU, the video encoder (200) may generally form a prediction block for the CU through inter-prediction or intra-prediction. Inter-prediction generally refers to predicting the CU from data of a previously coded picture, whereas intra-prediction generally refers to predicting the CU from data of the same picture that was previously coded. To perform inter-prediction, the video encoder (200) may generate a prediction block using one or more motion vectors. The video encoder (200) may generally perform motion search to identify a reference block that closely matches the CU, for example, in terms of the differences between the CU and the reference block. The video encoder (200) may calculate a difference metric using the sum of absolute differences (SAD), the sum of squared differences (SSD), the mean absolute difference (MAD), the mean squared differences (MSD), or other such difference calculations to determine whether the reference block closely matches the current CU. In some examples, the video encoder (200) may predict the current CU using unidirectional prediction or bidirectional prediction.
[0053] Some examples of VVC also provide an affine motion compensation mode that may be considered as an inter-prediction mode. In the affine motion compensation mode, the video encoder (200) may determine two or more motion vectors representing non-translational motion, such as zoom in or out, rotation, perspective motion, or other irregular motion types.
[0054] To perform intra-prediction, the video encoder (200) may select an intra-prediction mode to generate prediction blocks. Some examples of VVC provide 67 intra-prediction modes, including planar mode and DC mode, as well as various directional modes. Generally, the video encoder (200) selects an intra-prediction mode that describes neighbor samples for the current block (e.g., a block of CU) to predict samples of the current block. These samples may generally be located above, above and to the left of, or to the left of the current block in the same picture as the current block, assuming that the video encoder (200) codes the CTUs and CUs in raster scan order (from left to right, from top to bottom).
[0055] The video encoder (200) encodes data indicating the prediction mode for the current block. For example, for inter-prediction modes, the video encoder (200) may encode motion information for the corresponding mode as well as data indicating which of the various available inter-prediction modes is used. For unidirectional or bidirectional inter-prediction, for example, the video encoder (200) may encode motion vectors using an Advanced Motion Vector Prediction (AMVP) or merging mode. The video encoder (200) may also encode motion vectors for an affine motion compensation mode using similar modes.
[0056] Following a prediction such as an intra-prediction or inter-prediction of a block, the video encoder (200) may calculate residual data for the block. Residual data, such as a residual block, represents sample-unit differences between the block and the prediction block for the block, formed using a corresponding prediction mode. The video encoder (200) may apply one or more transformations to the residual block to generate transformed data in a transformation domain instead of a sample domain. For example, the video encoder (200) may apply a Discrete Cosine Transform (DCT), an Integer Transform, a Wavelet Transform, or a conceptually similar transformation to the residual video data. Additionally, the video encoder (200) may apply a secondary transformation following the first transformation, such as a mode-dependent non-separable secondary transform (MDNSST), a signal-dependent transformation, or a Karhunen-Loeve Transform (KLT). The video encoder (200) generates transformation coefficients following the application of one or more transformations.
[0057] As mentioned above, following any transformations to generate transformation coefficients, the video encoder (200) may perform quantization of the transformation coefficients. Quantization generally refers to a process in which transformation coefficients are quantized to provide additional compression, such that the amount of data used to represent those transformation coefficients is reduced as possible. By performing the quantization process, the video encoder (200) may reduce the bit depth associated with some or all of the transformation coefficients. For example, the video encoder (200) may round down n-bit values to m-bit values during quantization, where n is greater than m. In some examples, to perform quantization, the video encoder (200) may perform a bitwise right-shift of the values to be quantized.
[0058] Following quantization, the video encoder (200) may scan the transform coefficients to generate a one-dimensional vector from a two-dimensional matrix containing the quantized transform coefficients. The scan may be designed to place higher energy (and therefore lower frequency) transform coefficients at the front of the vector and lower energy (and therefore higher frequency) transform coefficients at the rear of the vector. In some examples, the video encoder (200) may generate a serialized vector by utilizing a predefined scan order to scan the quantized transform coefficients, and then entropy-encode the quantized transform coefficients of the vector. In other examples, the video encoder (200) may perform an adaptive scan. After scanning the quantized transform coefficients to form a one-dimensional vector, the video encoder (200) may entropy-encode the one-dimensional vector, for example, according to context-adaptive binary arithmetic coding (CABAC). The video encoder (200) may also entropy-encode values for syntax elements describing metadata associated with the encoded video data for use by the video decoder (300) in decoding the video data.
[0059] To perform CABAC, the video encoder (200) may assign a context within a context model to the symbol to be transmitted. The context may, for example, be related to whether the neighbor values of the symbol are zero. The probability determination may be based on the context assigned to the symbol.
[0060] The video encoder (200) may additionally generate syntax data, e.g., block-based syntax data, picture-based syntax data, and sequence-based syntax data, to the video decoder (300), e.g., picture header, block header, slice header, or other syntax data, e.g., sequence parameter set (SPS), picture parameter set (PPS), or video parameter set (VPS). The video decoder (300) may likewise decode such syntax data to determine how to decode the corresponding video data.
[0061] In this way, the video encoder (200) may generate a bitstream containing syntax elements describing the partitioning of the encoded video data, for example, into blocks of a picture (e.g., CUs), and prediction and / or residual information for the blocks. Ultimately, the video decoder (300) may receive the bitstream and decode the encoded video data.
[0062] Generally, the video decoder (300) performs a process opposite to that performed by the video encoder (200) to decode the encoded video data of the bitstream. For example, the video decoder (300) may decode values for the syntax elements of the bitstream using CABAC in a manner substantially similar to, but opposite to, the CABAC encoding process of the video encoder (200). The syntax elements may define the CUs of the CTU by defining partitioning information for partitioning the picture into CTUs and partitioning each CTU according to a corresponding partition structure such as a QTBT structure. The syntax elements may additionally define prediction and residual information for blocks of video data (e.g., CUs).
[0063] Residual information may be represented, for example, by quantized transform coefficients. The video decoder (300) may inversely quantize and inversely transform the quantized transform coefficients of the block to reconstruct a residual block for the block. The video decoder (300) forms a prediction block for the block using a signaled prediction mode (intra- or inter-prediction) and associated prediction information (e.g., motion information for inter-prediction). The video decoder (300) may then combine the prediction block and the residual block (on a per-sample basis) to reconstruct the original block. The video decoder (300) may perform additional processing, such as performing a deblocking process to reduce visual artifacts along the boundaries of the block.
[0064] As described in more detail below, according to the techniques of the present disclosure, a video encoder (200) may be configured to determine a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, to encode the first chroma block of video data using the first chroma QP value, and to signal syntax elements describing a set of pivot points that specify a piecewise linear model for the first chroma QP mapping table in the encoded video bitstream. Similarly, a video decoder (300) may be configured to receive syntax elements describing a set of pivot points that specify a piecewise linear model for a first chroma QP mapping table in an encoded video bitstream, determine a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, and decode the first chroma block of video data using the first chroma QP value.
[0065] The present disclosure may generally refer to "signaling" specific information, such as syntax elements. The term "signaling" may generally refer to the communication of values for syntax elements and / or other data used to decode encoded video data. That is, the video encoder (200) may signal values for syntax elements in a bitstream. Generally, signaling refers to generating values in a bitstream. As noted above, the source device (102) may transmit the bitstream to the destination device (116) non-real-time or substantially real-time, as may occur when storing syntax elements in the storage device (112) for subsequent retrieval by the destination device (116).
[0066] FIG. 2 is a block diagram illustrating an exemplary video encoder (200) that may perform the techniques of the present disclosure. FIG. 2 is provided for illustrative purposes and should not be considered as a limitation to the techniques generally exemplified and described in the present disclosure. For illustrative purposes, the present disclosure describes a video encoder (200) according to the techniques of VVC (ITU-T H.266, under development), EVC, and HEVC (ITU-T H.265). However, the techniques of the present disclosure may be performed by video encoding devices comprising other video coding standards.
[0067] In the example of FIG. 2, the video encoder (200) includes a video data memory (230), a mode selection unit (202), a residual generation unit (204), a conversion processing unit (206), a quantization unit (208), an inverse quantization unit (210), an inverse conversion processing unit (212), a restoration unit (214), a filter unit (216), a decoded picture buffer (DPB) (218), and an entropy encoding unit (220). Any or all of the video data memory (230), the mode selection unit (202), the residual generation unit (204), the conversion processing unit (206), the quantization unit (208), the inverse quantization unit (210), the inverse conversion processing unit (212), the restoration unit (214), the filter unit (216), the DPB (218), and the entropy encoding unit (220) may be implemented in one or more processors or in a processing circuit. For example, the units of the video encoder (200) may be implemented as one or more circuits or logic elements as part of a hardware circuit or as part of a processor of an FPGA or an ASIC. Furthermore, the video encoder (200) may include additional or alternative processors or processing circuits to perform these and other functions.
[0068] The video data memory (230) may store video data to be encoded by components of the video encoder (200). The video encoder (200) may receive video data stored in the video data memory (230) from, for example, a video source (104) (Fig. 1). The DPB (218) may act as a reference picture memory that stores reference video data for use in predicting subsequent video data by the video encoder (200). The video data memory (230) and the DPB (218) may be formed by various memory devices, for example, synchronous dynamic random access memory (SDRAM), magnetoresistive RAM (MRAM), DRAM including resistive RAM (RRAM), or any of other types of memory devices. The video data memory (230) and the DPB (218) may be provided by the same memory device or by separate memory devices. In various examples, the video data memory (230) may be on-chip with the other components of the video encoder (200) or off-chip with respect to those components, as illustrated.
[0069] In the present disclosure, a reference to the video data memory (230) should not be interpreted as being limited to memory inside the video encoder (200) unless specifically stated otherwise, or to memory outside the video encoder (200) unless specifically stated otherwise. Rather, a reference to the video data memory (230) should be understood as a reference memory that stores video data received by the video encoder (200) for encoding (e.g., video data for the current block to be encoded). The memory (106) of FIG. 1 may also provide temporary storage of outputs from various units of the video encoder (200).
[0070] The various units illustrated in FIG. 2 are illustrated to aid in understanding the operations performed by the video encoder (200). These units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Fixed-function circuits refer to circuits that provide specific functionality and are pre-configured for the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functionality in the operations that can be performed. For example, programmable circuits may execute software or firmware that causes the programmable circuits to operate in a manner defined by the instructions of the software or firmware. Fixed-function circuits may execute software instructions (e.g., to receive parameters or output parameters), but the types of operations performed by the fixed-function circuits are generally invariant. In some examples, one or more of the units may be separate circuit blocks (fixed-function or programmable), and in some examples, one or more of the units may be integrated circuits.
[0071] The video encoder (200) may include arithmetic logic units (ALUs), elementary function units (EFUs), digital circuits, analog circuits, and / or programmable cores formed from programmable circuits. In examples where the operations of the video encoder (200) are performed using software executed by the programmable circuits, memory (106) (FI. 1) may store instructions (e.g., object code) of the software that the video encoder (200) receives and executes, or another memory within the video encoder (200) (not shown) may store such instructions.
[0072] The video data memory (230) is configured to store received video data. The video encoder (200) may extract a picture of video data from the video data memory (230) and provide the video data to the residual generation unit (204) and the mode selection unit (202). The video data in the video data memory (230) may be raw video data to be encoded.
[0073] The mode selection unit (202) includes a motion estimation unit (222), a motion compensation unit (224), and an intra-prediction unit (226). The mode selection unit (202) may include additional function units to perform video prediction according to different prediction modes. As examples, the mode selection unit (202) may include a palette unit, an intra-block copy unit (which may be part of the motion estimation unit (222) and / or the motion compensation unit (224)), an affine unit, a linear model (LM) unit, etc.
[0074] The mode selection unit (202) generally adjusts multiple encoding passes to test combinations of encoding parameters and rate-distortion values of the results for such combinations. The encoding parameters may include partitioning of CTUs into CUs, prediction modes for CUs, types of transformation for residual data of CUs, quantization parameters for residual data of CUs, etc. The mode selection unit (202) may ultimately select a combination of encoding parameters that has superior rate-distortion values compared to other tested combinations.
[0075] The video encoder (200) partitions a picture extracted from the video data memory (230) into a series of CTUs and may encapsulate one or more CTUs within a slice. The mode selection unit (202) may partition the CTUs of the picture according to a tree structure, such as the quadtree structure or QTBT structure of HEVC described above. As described above, the video encoder (200) may form one or more CUs from partitioning the CTUs according to a tree structure. Such CUs may also generally be referred to as "video blocks" or "blocks".
[0076] Generally, the mode selection unit (202) also controls its components (e.g., motion estimation unit (222), motion compensation unit (224), and intra-prediction unit (226)) to generate a prediction block for the current block (e.g., the current CU, or the overlapping portion of the PU and TU in HEVC). For inter-prediction of the current block, the motion estimation unit (222) may perform motion search to identify one or more closely matching reference blocks in one or more reference pictures (e.g., one or more previously coded pictures stored in the DPB (218). In particular, the motion estimation unit (222) may calculate a value indicating how similar a potential reference block is to the current block, for example, based on the sum of absolute differences (SAD), the sum of squared differences (SSD), the mean absolute difference (MAD), the mean squared differences (MSD), etc. The motion estimation unit (222) may perform these calculations using sample-by-sample differences between the reference block and the current block that are generally considered. The motion estimation unit (222) may also identify a reference block having the lowest value resulting from these calculations, indicating the reference block that matches most closely with the current block.
[0077] The motion estimation unit (222) may form one or more motion vectors (MVs) that define the positions of reference blocks in reference pictures for the position of the current block in the current picture. The motion estimation unit (222) may then provide the motion vectors to the motion compensation unit (224). For example, for unidirectional inter-prediction, the motion estimation unit (222) may provide a single motion vector, whereas for bidirectional inter-prediction, the motion estimation unit (222) may provide two motion vectors. Then, the motion compensation unit (224) may generate a prediction block using the motion vectors. For example, the motion compensation unit (224) may extract data for the reference block using the motion vectors. As another example, if the motion vector has fractional sample precision, the motion compensation unit (224) may interpolate the values for the prediction block according to one or more interpolation filters. Additionally, for bidirectional inter-prediction, the motion compensation unit (224) may extract data for two reference blocks identified by individual motion vectors and combine the extracted data, for example, through sample-by-sample averaging or weighted averaging.
[0078] As another example, for intra-prediction or intra-prediction coding, the intra-prediction unit (226) may generate prediction blocks from samples adjacent to the current block. For example, for directional modes, the intra-prediction unit (226) may generally generate prediction blocks by mathematically combining the values of neighboring samples and populating these calculated values in a direction defined across the current block. As yet another example, for DC mode, the intra-prediction unit (226) may calculate the average of neighboring samples for the current block and generate prediction blocks, including the average of these results for each sample of the prediction block.
[0079] The mode selection unit (202) provides the prediction block to the residual generation unit (204). The residual generation unit (204) receives the raw, unencoded version of the current block from the video data memory (230) and the prediction block from the mode selection unit (202). The residual generation unit (204) calculates the sample-by-sample difference between the current block and the prediction block. The sample-by-sample differences of the result define the residual block for the current block. In some examples, the residual generation unit (204) may also determine the differences between sample values in the residual block to generate the residual block using residual differential pulse code modulation (RDPCM). In some examples, the residual generation unit (204) may be formed using one or more subtraction circuits that perform binary subtraction.
[0080] In examples where the mode selection unit (202) partitions the CUs into PUs, each PU may be associated with a luminance prediction unit and a corresponding chroma prediction unit. The video encoder (200) and the video decoder (300) may support PUs of various sizes. As indicated above, the size of the CU may refer to the size of the luminance coding block of the CU, and the size of the PU may refer to the size of the luminance prediction unit of the PU. Assuming that the size of a particular CU is 2Nx2N, the video encoder (200) may support PU sizes of 2Nx2N or NxN for intra-prediction, and may support symmetric PU sizes of 2Nx2N, 2NxN, Nx2N, NxN, etc. for inter-prediction. The video encoder (200) and video decoder (300) may also support asymmetric partitioning for PU sizes of 2NxnU, 2NxnD, nLx2N, and nRx2N for inter-prediction.
[0081] In examples where the mode selection unit (202) does not further partition the CU into PUs, each CU may be associated with a luminance coding block and a corresponding chroma coding block. As described above, the size of the CU may refer to the size of the luminance coding block of the CU. The video encoder (200) and the video decoder (300) may support CU sizes of 2Nx2N, 2NxN, or Nx2N.
[0082] For other video coding techniques such as intra-block copy mode coding, affine mode coding, and linear model (LM) mode coding, as some examples, the mode selection unit (202) generates a prediction block for the current block being encoded through individual units associated with the coding techniques. In some examples, such as palette mode coding, the mode selection unit (202) may not generate a prediction block, but instead generate syntax elements indicating a method for restoring the block based on the selected palette. In such modes, the mode selection unit (202) may provide these syntax elements to the entropy encoding unit (220) to be encoded.
[0083] As described above, the residual generation unit (204) receives video data for the current block and the corresponding prediction block. The residual generation unit (204) then generates a residual block for the current block. To generate the residual block, the residual generation unit (204) calculates the sample-unit differences between the current block and the prediction block.
[0084] The transformation processing unit (206) applies one or more transformations to the residual block to generate a block of transformation coefficients (referred to herein as a “transformation coefficient block”). The transformation processing unit (206) may form the transformation coefficient block by applying various transformations to the residual block. For example, the transformation processing unit (206) may apply a discrete cosine transformation (DCT), a directional transformation, a Karhunen-Loeve transformation (KLT), or a conceptually similar transformation to the residual block. In some examples, the transformation processing unit (206) may perform multiple transformations on the residual block, for example, a first transformation and a second transformation, such as a rotation transformation. In some examples, the transformation processing unit (206) may perform multiple transformations on the residual block, for example, a first transformation and a second transformation, such as a rotation transformation.
[0085] The quantization unit (208) may quantize the transformation coefficients in the transformation coefficient block to create a quantized transformation coefficient block. The quantization unit (208) may quantize the transformation coefficients of the transformation coefficient block according to the quantization parameter (QP) value associated with the current block. The video encoder (200) may adjust the degree of quantization applied to the transformation coefficient blocks associated with the current block by adjusting the QP value associated with the CU (e.g., via the mode selection unit (202)). Quantization may introduce a loss of information, and thus the quantized transformation coefficients may have lower precision than the original transformation coefficients generated by the transformation processing unit (206).
[0086] As will be described in more detail below, in some examples of the present disclosure, the quantization unit (208) (or other structural unit of the video encoder (200)) may be configured to signal one or more chroma QP mapping tables in the encoded video bitstream. The quantization unit (208) may use the chroma QP mapping table to determine the QP value for a chroma block of video data from the QP value used to encode the corresponding lumina block (e.g., lumina QP value) of the video data. That is, the lumina QP value is input into the chroma QP mapping table. The chroma QP mapping table outputs a chroma QP value as a function of the lumina QP value. In some examples, the function is a piecewise linear value. The quantization unit (208) may signal the chroma QP mapping table used (e.g., in an SPS) to the video decoder (300). The video decoder (300) may then use a chroma QP mapping table to determine a chroma QP value that can be used to perform inverse quantization when decoding a chroma block of video data.
[0087] In one example of the present disclosure, a quantization unit (208) (or another structural unit of the video encoder (200)) may determine a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, encode the first chroma block of video data using the first chroma QP value, and signal the first chroma QP mapping table in the encoded video bitstream. In one example, the first chroma QP mapping table is a piecewise linear model. In this example, to signal the first chroma QP mapping table, the quantization unit (208) may be configured to signal syntax elements describing a set of pivot points that specify the piecewise linear model.
[0088] The inverse quantization unit (210) and the inverse transform processing unit (212) may each apply inverse quantization and inverse transforms to the quantized transform factor block to restore a residual block from the transform factor block. The restoration unit (214) may generate a restored block corresponding to the current block (potentially having some degree of distortion) based on the prediction block generated by the mode selection unit (202) and the restored residual block. For example, the restoration unit (214) may generate a restored block by adding samples of the restored residual block to corresponding samples from the prediction block generated by the mode selection unit (202).
[0089] The filter unit (216) may perform one or more filter operations on the restored block. For example, the filter unit (216) may perform deblocking operations to reduce blockiness artifacts along the edges of the CUs. The operations of the filter unit (216) may be skipped in some examples.
[0090] The video encoder (200) stores the restored blocks in the DPB (218). For example, in examples where the operations of the filter unit (216) are not required, the restoration unit (214) may store the restored blocks in the DPB (218). In examples where the operations of the filter unit (216) are required, the filter unit (216) may store the filtered restored blocks in the DPB (218). The motion estimation unit (222) and the motion compensation unit (224) may take a reference picture from the DPB (218) formed from the restored (and potentially filtered) blocks to inter-predict blocks of subsequent encoded pictures. Additionally, the intra-prediction unit (226) may use the restored blocks from the DPB (218) of the current picture to intra-predict other blocks in the current picture.
[0091] Generally, the entropy encoding unit (220) may entropy encode syntax elements received from other functional components of the video encoder (200). For example, the entropy encoding unit (220) may entropy encode quantized transform factor blocks from the quantization unit (208). As another example, the entropy encoding unit (220) may entropy encode prediction syntax elements (e.g., intra-mode information for intra-prediction or motion information for inter-prediction) from the mode selection unit (202). The entropy encoding unit (220) may perform one or more entropy encoding operations on syntax elements, which are other examples of video data, to generate entropy-encoded data. For example, the entropy encoding unit (220) may perform a context-adaptive variable-length coding (CAVLC) operation, a CABAC operation, a V2V (variable-to-variable) length coding operation, a syntax-based context-adaptive binary arithmetic coding (SBAC) operation, a probability interval partitioning entropy (PIPE) coding operation, an exponential-Golomb encoding operation, or other types of entropy encoding operations on the data. In some examples, the entropy encoding unit (220) may operate in a bypass mode where syntax elements are not entropy encoded.
[0092] The video encoder (200) may output a bitstream containing entropy-encoded syntax elements necessary to restore blocks of a picture or slice. In particular, the entropy encoding unit (220) may output the bitstream.
[0093] The operations described above are described with respect to blocks. These descriptions should be understood as operations for luminance coding blocks and / or chroma coding blocks. As described above, in some examples, the luminance coding blocks and chroma coding blocks are the luminance and chroma components of the CU. In some examples, the luminance coding blocks and chroma coding blocks are the luminance and chroma components of the PU.
[0094] In some examples, operations performed on a luminance coding block do not need to be repeated for a chroma coding block. As one example, operations to identify the motion vector (MV) and reference picture for a luminance coding block do not need to be repeated to identify the MV and reference picture for a chroma block. Rather, the MV for a luminance coding block may be scaled to determine the MV for a chroma block, and the reference picture may be the same. As another example, the intra-prediction process may be the same for a luminance coding block and a chroma coding block.
[0095] A video encoder (200) represents an example of a device configured to encode video data, and the device comprises a memory configured to store video data, and
[0096] The circuit may include one or more processing units implemented in the circuit, and the one or more processing units may be configured to determine a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, encode the first chroma block of video data using the first chroma QP value, and signal syntax elements describing a set of pivot points that specify a piecewise linear model for the first chroma QP mapping table in the encoded video bitstream.
[0097] FIG. 3 is a block diagram illustrating an exemplary video decoder (300) that may perform the techniques of this disclosure. FIG. 3 is provided for illustrative purposes and is not limited to techniques generally exemplified and described in this disclosure. For illustrative purposes, this disclosure describes a video decoder (300) according to techniques of VVC (ITU-T H.266, under development), EVC, and HEVC (ITU-T H.265). However, the techniques of this disclosure may be performed by video coding devices configured with other video coding standards.
[0098] In the example of FIG. 3, the video decoder (300) includes a coded picture buffer (CPB) memory (320), an entropy decoding unit (302), a prediction processing unit (304), an inverse quantization unit (306), an inverse conversion processing unit (308), a restoration unit (310), a filter unit (312), and a decoded picture buffer (DPB) (314). Any or all of the CPB memory (320), the entropy decoding unit (302), the prediction processing unit (304), the inverse quantization unit (306), the inverse conversion processing unit (308), the restoration unit (310), the filter unit (312), and the DPB (314) may be implemented in one or more processors or in a processing circuit. For example, the units of the video decoder (300) may be implemented as one or more circuits or logic elements as part of a hardware circuit or as part of a processor of an FPGA or an ASIC. Furthermore, the video decoder (300) may include additional or alternative processors or processing circuits to perform these and other functions.
[0099] The prediction processing unit (304) includes a motion compensation unit (316) and an intra prediction processing unit (318). The prediction processing unit (304) may include additional units to perform predictions according to different prediction modes. For example, the prediction processing unit (304) may include a palette unit, an intra-block copy unit (which may form part of the motion compensation unit (316)), an affine unit, a linear model (LM) unit, etc. In other examples, the video decoder (300) may include more, fewer, or different functional components.
[0100] The CPB memory (320) may store video data, such as an encoded video bitstream to be decoded by components of the video decoder (300). The video data stored in the CPB memory (320) may be obtained, for example, from a computer-readable medium (110) (Fig. 1). The CPB memory (320) may include a CPB that stores encoded video data (e.g., syntax elements) from the encoded video bitstream. Additionally, the CPB memory (320) may store video data other than syntax elements of the encoded picture, such as transient data representing outputs from various units of the video decoder (300). The DPB (314) generally stores decoded pictures that the video decoder (300) may output and / or use as reference video data when decoding subsequent data or pictures of the encoded video bitstream. The CPB memory (320) and DPB (314) may be formed by any of the various memory devices, such as DRAM, MRAM, RRAM, or other types of memory devices including SDRAM. The CPB memory (320) and DPB (314) may be provided by the same memory device or by separate memory devices. In several examples, the CPB memory (320) may be on-chip with respect to other components of the video decoder (300) or off-chip with respect to those components.
[0101] Additionally or alternatively, in some examples, the video decoder (300) may retrieve coded video data from memory (120) (Fig. 1). That is, the memory (120) may store data as discussed above in CPB memory (320). Likewise, the memory (120) may store instructions to be executed by the video decoder (300) when some or all of the functionality of the video decoder (300) is implemented in software so that it is executed by the processing circuit of the video decoder (300).
[0102] The various units illustrated in FIG. 3 are illustrated to aid in understanding the operations performed by the video decoder (300). These units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Similar to FIG. 2, fixed-function circuits refer to circuits that provide specific functionality and are pre-configured for the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functionality in the operations that can be performed. For example, programmable circuits may execute software or firmware that causes the programmable circuits to operate in a manner defined by the instructions of the software or firmware. Fixed-function circuits may execute software instructions (e.g., to receive parameters or output parameters), but the types of operations performed by fixed-function circuits are generally invariant. In some examples, one or more of the units may be separate circuit blocks (fixed-function or programmable), and in some examples, one or more of the units may be integrated circuits.
[0103] The video decoder (300) may include ALUs, EFUs, digital circuits, analog circuits, and / or programmable cores formed from programmable circuits. In examples where the operations of the video decoder (300) are performed by software running on the programmable circuits, on-chip or off-chip memory may store instructions (e.g., object code) of the software that the video decoder (300) receives and executes.
[0104] The entropy decoding unit (302) may receive encoded video data from the CPB and entropy decode the video data to reproduce syntax elements. The prediction processing unit (304), the inverse quantization unit (306), the inverse transform processing unit (308), the restoration unit (310), and the filter unit (312) may generate decoded video data based on syntax elements extracted from the bitstream.
[0105] Generally, the video decoder (300) restores the picture on a block-by-block basis. The video decoder (300) may also perform restoration operations for each block individually (where the block currently being restored, i.e., being decoded, may be referred to as the "current block").
[0106] The entropy decoding unit (302) may entropy decode not only conversion information such as quantization parameters (QP) and / or conversion mode indication(s), but also syntax elements defining the quantized conversion coefficients of the quantized conversion coefficient block. The inverse quantization unit (306) may use the QP associated with the quantized conversion coefficient block to determine the degree of quantization and, similarly, the degree of inverse quantization to be applied by the inverse quantization unit (306). The inverse quantization unit (306) may, for example, perform a bit-by-bit left-shift operation to inverse quantize the quantized conversion coefficients. Thus, the inverse quantization unit (306) may form a conversion coefficient block containing the conversion coefficients.
[0107] As will be described in more detail below, in some examples of the present disclosure, the inverse quantization unit (306) (or other structural unit of the video decoder (300)) may be configured to receive one or more chroma QP mapping tables in an encoded video bitstream. The inverse quantization unit (306) may use the chroma QP mapping table to determine a QP value (e.g., chroma QP value) for a chroma block of video data from a QP value used to decode a corresponding lumina block of video data (e.g., lumina QP value). That is, a lumina QP value is input to the chroma QP mapping table. The chroma QP mapping table outputs a chroma QP value as a function of the lumina QP value. In some examples, the function is a piecewise linear value. The inverse quantization unit (306) may receive the chroma QP mapping table used (e.g., in an SPS). The inverse quantization unit (306) of the video decoder (300) may then use a chroma QP mapping table to determine a chroma QP value that can be used to perform inverse quantization when decoding a chroma block of video data.
[0108] In one example of the present disclosure, an inverse quantization unit (306) (or other structural unit of the video decoder (300)) may be configured to receive a first chroma QP mapping table from an encoded video bitstream, determine a first chroma QP value for a first chroma block of video data from a luminance QP value and the first chroma QP mapping table, and decode the first chroma block of video data using the first chroma QP value. In one example, the first chroma QP mapping table is a piecewise linear model. In this example, to receive the first chroma QP mapping table, the inverse quantization unit (306) may be configured to receive syntax elements describing a set of pivot points that specify the piecewise linear model.
[0109] After the inverse quantization unit (306) forms the transform factor block, the inverse transform processing unit (308) may apply one or more inverse transforms to the transform factor block to generate a residual block associated with the current block. For example, the inverse transform processing unit (308) may apply an inverse DCT, an inverse integer transform, an inverse Karhunen-Loeve transform (KLT), an inverse rotation transform, an inverse directional transform, or other inverse transforms to the transform factor block.
[0110] Furthermore, the prediction processing unit (304) generates a prediction block according to the prediction information syntax elements entropy-decoded by the entropy decoding unit (302). For example, if the prediction information syntax elements indicate that the current block is inter-predicted, the motion compensation unit (316) may generate a prediction block. In this case, the prediction information syntax elements may indicate a motion vector identifying the position of the reference block in the reference picture as well as the position of the current block in the current picture, as well as the reference picture in the DPB (314) from which the reference block will be extracted. The motion compensation unit (316) may generally perform the inter-predicting process in a manner substantially similar to that described for the motion compensation unit (224) (Fig. 2).
[0111] As another example, if the prediction information syntax elements indicate that the current block is intra-predicted, the intra-predict unit (318) may generate a prediction block according to the intra-predict mode indicated by the prediction information syntax elements. Again, the intra-predict unit (318) may perform the intra-predict process in a manner substantially similar to that generally described for the intra-predict unit (226) (Fig. 2). The intra-predict unit (318) may extract data of neighbor samples for the current block from the DPB (314).
[0112] The restoration unit (310) may restore the current block using the prediction block and the residual block. For example, the restoration unit (310) may restore the current block by adding samples of the residual block to the corresponding samples of the prediction block.
[0113] The filter unit (312) may perform one or more filter operations on the restored blocks. For example, the filter unit (312) may perform deblocking operations to reduce blocking artifacts along the edges of the restored blocks. The operations of the filter unit (312) are not necessarily performed in all examples.
[0114] The video decoder (300) may store the restored blocks in the DPB (314). For example, in examples where the operations of the filter unit (312) are not performed, the restoration unit (310) may store the restored blocks in the DPB (314). In examples where the operations of the filter unit (312) are performed, the filter unit (312) may store the filtered restored blocks in the DPB (314). As discussed above, the DPB (314) may provide reference information to the prediction processing unit (304), such as samples of previously decoded pictures for subsequent motion compensation and samples of the current picture for intra-prediction. Furthermore, the video decoder (300) may output decoded pictures (e.g., decoded video) from the DPB (314) for subsequent presentation on a display device such as the display device (118) of FIG. 1.
[0115] In this way, the video decoder (300) also represents an example of a video decoding device comprising a memory configured to store video data and one or more processing units implemented in a circuit, wherein the one or more processing units may be configured to receive syntax elements describing a set of pivot points that specify a piecewise linear model for a first chroma QP mapping table in an encoded video bitstream, determine a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, and decode the first chroma block of video data using the first chroma QP value.
[0116] Next-generation video applications are expected to operate with video data representing captured scenery featuring High Dynamic Range (HDR) and a Wide Color Gamut (WCG). The parameters of the utilized dynamic range and color gamut are two independent characteristics of video content, and their specifications for the purposes of digital television and multimedia services are defined by several international standards. For example, ITU-R Rec. BT.709, "Parameter values for the HDTV standards for production and international program exchange," and ITU-R Rec. BT.2020, "Parameter values for ultra-high definition television systems for production and international program exchange," respectively define parameters for HDTV (high definition television) and UHDTV (ultra-high definition television), such as Standard Dynamic Range (SDR) and color primarys that extend beyond the standard color gamut. Rec. BT.2100, "Image parameter values for high dynamic range television for use in production and international program exchange" defines transfer functions and representations for HDR television use, including primary values that support wide color gamut representations.
[0117] There also exist other standards that develop organizational (SDO) literature specifying dynamic range and color gamut attributes in other systems; for example, the DCI-P3 color gamut is defined by SMPTE-231-2 (Society of Motion Picture and Television Engineers), and some HDR parameters are defined in SMPTE-2084. A brief description of dynamic range and color gamut for video data is provided below.
[0118] Dynamic range is typically defined as the ratio between the maximum and minimum brightness (e.g., luminance) of a video signal. Dynamic range may also be measured in terms of 'f-stops,' where one f-stop corresponds to a doubling of the signal's dynamic range. As defined by the Motion Picture Expert Group (MPEG), content featuring brightness variations with more than 16 f-stops is referred to as HDR content. In some terms, levels between 10 and 16 f-stops are considered as intermediate dynamic range, but may be considered as HDR according to other definitions. In some examples of this disclosure, HDR video content may be any video content having a higher dynamic range than conventional video content having a standard dynamic range (e.g., video content as specified by ITU-R Rec. BT.709).
[0119] The human visual system (HVS) can perceive much larger dynamic ranges than SDR and HDR content. However, the HVS includes an adaptation mechanism to narrow the dynamic range of the HVS to a so-called simultaneous range. The width of the simultaneous range may depend on current lighting conditions (e.g., current brightness).
[0120] Current video applications and services are regulated by ITU Rec. 709 and typically support a brightness (e.g., luminance) range of about 0.1 to 100 candela (cd) per m2 (often referred to as "nits"), providing SDR that results in fewer than 10 f-stops. Some exemplary next-generation video services are expected to provide a dynamic range of up to 16 f-stops. While detailed specifications for such content are currently under development, some initial parameters are specified in SMPTE-2084 and ITU-R Rec. 2020.
[0121] Ruma QP Regarding the value Chroma QP dependency
[0122] Some video coding designs in the relevant technical field, such as HEVC and newer video coding standards, may utilize predefined dependencies (e.g., static chroma QP mapping tables) between luminance and chroma QP values that are efficiently applied to process the currently coded Cb chroma block and / or the currently coded Cr chroma block. Such dependencies may also be utilized to achieve optimal bitrate allocation between luminance and chroma components.
[0123] An example of such dependency is represented by Table 8-10 of the HEVC specification, where the chroma QP values applied to decode chroma samples are derived from the QP values utilized to decode lumina samples. The chroma QP values, the QP values of the corresponding lumina samples (e.g., QP values applied to the block / TU of the corresponding lumina sample), chroma QP offsets, and the relevant sections of HEVC derived based on Table 8-10 of the HEVC specification are reproduced below.
[0124] When ChromaArrayType is not equal to 0, the following applies:
[0125] - Variable qP Cb and qP Cr This is derived as follows:
[0126] - If tu_residual_act_flag[ xTbY ][ yTbY ] is equal to 0, the following applies:
[0127] qPi Cb = Clip3( -QpBdOffset C , 57, Qp Y + pps_cb_qp_offset + slice_cb_qp_offset + CuQpOffset Cb ) (8-287)
[0128] qPi Cr = Clip3( -QpBdOffset C , 57, Qp Y + pps_cr_qp_offset + slice_cr_qp_offset + CuQpOffset Cr ) (8-288)
[0129] - Otherwise (tu_residual_act_flag[ xTbY ][ yTbY ] is equal to 1), the following applies:
[0130] qPi Cb = Clip3( -QpBdOffsetC, 57, QpY + PpsActQpOffsetCb + slice_act_cb_qp_offset + CuQpOffsetCb ) (8-289)
[0131] qPi Cr = Clip3(-QpBdOffsetC, 57, QpY + PpsActQpOffsetCr + slice_act_cr_qp_offset + CuQpOffsetCr) (8-290)
[0132] - If ChromaArrayType is the same as 1, variables qP Cb and qP Cr qPi Cb and qPi Cr and Qp as specified in Tables 8-10 based on the same index qPi, respectively C It is set to be the same as the value of.
[0133] - Otherwise, variable qP Cb and qP Cr are qPi respectively Cb and qPi Cr Based on the same index qPi, it is set to be the same as Min( qPi, 51 ).
[0134] - Cb and Cr components (Qp' Cb and Qp' Cr The chroma quantization parameters for ) are derived as follows:
[0135] Qp' Cb = qP Cb + QpBdOffset C (8-291)
[0136] Qp' Cr = qP Cr + QpBdOffset C (8-292)
[0137] Qp as a ChromaArrayType function identical to Table 8-10-1 C Specifications
[0138]
[0139] Variable qP Cb and qP Cr are the final QP values Qp' Cb and Qp' CrThese are the intermediate values of each of the Cb and Cr chroma QPs used to determine it. A ChromaArrayType of 0 indicates that monochrome coding syntax is used. A ChromaArrayType that is not 0 (e.g., greater than 0) indicates different types of chroma sub-sampling formats (e.g., 4:4:4, 4:2:2, 4:2:0, etc.).
[0140] Similar QP mapping tables and chroma QP derivation are used in VVC (e.g., Tables 8-15 in VVC Draft 5).
[0141] In VVC Draft 5, the chroma QP values are derived from the luminance QP values and offset parameters using the chroma QP mapping table (e.g., Tables 8-15 in VVC Draft 5). The chroma QP mapping table has a linear slope of 1 for most luminance QP values. For luminance QP values between 29 and 43, the slope is less than 1.
[0142] The design of VVC Draft 5 and other techniques using static chroma QP mapping tables, with or without chroma QP offsets, have several disadvantages. For example, static chroma QP mapping tables do not provide the flexibility to model chroma QP values for all types of video content that can be encoded (e.g., High Dynamic Range (HDR) video content, Wide Color Gamut (WCG) video content, natural content, screen content, etc.). As such, the use of static chroma QP mapping tables may result in suboptimal distortion and / or coding efficiency in some situations.
[0143] Additionally, the chroma QP mapping table used in VVC Draft 5 is designed under the assumption that the same table will be used for both Cb and Cr chroma components. However, it has also been observed that for more general use cases (e.g., HDR video), it is advantageous to use different chroma QP mapping tables for Cb and Cr components.
[0144] With these in mind, the present disclosure describes techniques for signaling one or more chroma QP mapping tables in an encoded video bitstream. In one example, the chroma QP mapping tables may be signaled in a sequence parameter set (SPS). A video decoder (300) may receive and decode the encoded chroma QP mapping tables and then use the signaled chroma QP mapping tables to determine QP values for the chroma components of blocks of video data and QP values used for the corresponding luma blocks. In some examples, the video encoder (200) may encode and signal the chroma QP mapping tables as a piecewise linear model.
[0145] One advantage of signaling a chroma QP mapping table in a bitstream is that it provides encoders with the flexibility to efficiently model chroma QP values for specific types of video content (e.g., HDR content) without relying on the use of QP offset values. Restricting the signaling of the chroma QP mapping table (e.g., by using a static chroma QP mapping table) makes it impossible to achieve this purpose. As such, it is advantageous to have a more general signaling mechanism for chroma QP mapping tables. The techniques of the present disclosure may also improve dynamic range adaptation for different types of video content. It should be understood that one or more of the techniques described below may be used independently or in combination with any other combination of the techniques of the present disclosure.
[0146] In one example of the present disclosure, a video encoder (200) and a video decoder (300) may be configured to code (e.g., encode and decode, respectively) a syntax element indicating whether one or more chroma QP mapping tables are explicitly signaled in an encoded video bitstream. For example, the video encoder (200) may encode a syntax element having a first value (e.g., 1) indicating that chroma QP mapping tables are signaled in the bitstream, or a second value (e.g., 0) indicating that chroma QP mapping tables are not signaled in the bitstream. The video encoder (200) may signal these syntax elements in one or more of a sequence parameter set (SPS), a picture parameter set (PPS), an adaptive parameter set (APS), other parameter sets, a picture header, a tile group header, a slice header, and / or other data structures for signaling syntax elements. When the video encoder (200) signals a syntax element indicating that chroma QP mapping tables are signaled in the bitstream, the video encoder (200) may additionally encode and signal these chroma QP mapping tables.
[0147] As an example, the video encoder (200) may be configured to encode a chroma_qp_table_present_flag in the APS and / or SPS that indicates whether chroma QP mapping tables are signaled in the bitstream. As an example, a chroma_qp_table_present_flag with a value equal to 1 indicates that chroma QP mapping tables are signaled in the APS. A chroma_qp_table_present_flag with a value equal to 0 indicates that chroma QP mapping tables are not signaled in the APS and that a default chroma QP mapping table (e.g., Tables 8-15 in VVC Draft 5) is used to derive chroma QP values.
[0148] The video decoder (300) may be configured to receive and decode a syntax element indicating whether chroma QP mapping tables are being signaled in the bitstream. If the video decoder (300) determines that the syntax element indicates that chroma QP mapping tables are being signaled in the bitstream, the video decoder (300) may also receive and decode these chroma QP mapping tables. If the video decoder (300) determines that the syntax element indicates that chroma QP mapping tables are not being signaled in the bitstream, the video decoder (300) may instead use default chroma QP mapping tables (e.g., Tables 8-15 in VVC Draft 5) and / or previously received chroma QP mapping tables.
[0149] Accordingly, in one example of the present disclosure, the video encoder (200) may be configured to signal a syntax element indicating whether one or more chroma QP mapping tables are explicitly signaled in the encoded video bitstream. Likewise, in the opposite manner, the video decoder (300) may be configured to receive a syntax element indicating whether one or more chroma QP mapping tables are explicitly signaled in the encoded video bitstream. Based on this syntax element, the video decoder (300) may be configured to determine whether the chroma QP mapping tables are received and decoded.
[0150] In another example of the present disclosure, the video encoder (200) may signal one or more chroma QP mapping tables in the encoded video bitstream. The video encoder (200) may be configured to signal chroma QP mapping tables regardless of whether the video encoder (200) is configured to signal a syntax element indicating that the chroma QP mapping tables are signaled in the bitstream. That is, in some examples, the video encoder (200) may indicate whether the chroma QP mapping tables are not signaled. Rather, the video encoder (200) may always signal chroma QP mapping tables at some level of the syntax structure (e.g., SPS, APS, etc.).
[0151] Accordingly, in one example of the present disclosure, the video encoder (200) may be configured to determine a first chroma QP value for a first chroma block of video data from a luma QP value and a first chroma QP mapping table. The video encoder (200) may encode the first chroma block of video data using the first chroma QP value and signal syntax elements describing a set of pivot points that specify a piecewise linear model for the first chroma QP mapping table in the encoded video bitstream. In a contrasting manner, the video decoder (300) receives syntax elements describing a set of pivot points that specify a piecewise linear model for a first chroma QP mapping table in the encoded video bitstream, determines a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, and may decode the first chroma block of video data using the first chroma QP value.
[0152] In the above example, the video encoder (200) signals at least one chroma QP mapping table in a specific syntax structure (e.g., SPS, APS, etc.). In other examples, the video encoder (200) signals multiple chroma QP mapping tables for a specific syntax structure (e.g., one chroma QP mapping table for each of multiple APSs) and then signals an index indicating which of the multiple chroma QP mapping tables is a block / tile / slice / picture (e.g., an ID for a specific one). For example, as illustrated in Implementation Example 1 below, the video encoder (200) may signal chromaQP_table_data in each of multiple APSs, where chromaQP_table_data specifies a chroma QP mapping table. The video encoder (200) may also signal adaptation_parameter_set_id, which is an ID indicating an APS that allows the next chroma QP mapping table to be obtained.
[0153] In one example of the present disclosure, the video encoder (200) may signal a chroma QP mapping table as a parameter function. In particular, the video encoder (200) may signal parameters of the parameter function. The video decoder (300) may receive the parameters and reconstruct the parameter function of the chroma QP mapping table.
[0154] In other examples, the video encoder (200) may signal a chroma QP mapping table as a piece-wise linear model. In some examples, the video encoder (200) may signal a piece-wise linear model by signaling scales and offsets associated with each linear piece of the piece-wise linear model. In other examples, the video encoder (200) may signal a set of pivot points specifying the boundaries of the piece-wise linear model. However, any technique for signaling a piece-wise linear model may be used. In the context of this disclosure, the boundaries of a piece-wise linear model indicate the positions of the model where the slope of the linear model changes. As such, a pivot point is a position of the position of the slope change (e.g., a boundary).
[0155] As illustrated in Examples 1 and 2 below, the video encoder (200) signals a chroma QP mapping table by signaling pivot points that specify the boundaries of the piecewise linear model. For example, the video encoder (200) may signal a syntax element num_points_in_qp_table[i] that indicates the number of pivot points in the i-th chroma QP mapping table. After that, for each pivot point, the video encoder (200) may signal delta_qp_in_val[i][j] and delta_qp_out_val[i][j], where delta_qp_in_val[i][j] specifies the delta value used to derive the input coordinates of the j-th pivot point of the i-th chroma QP mapping table, and delta_qp_out_val[i][j] specifies the delta value used to derive the output coordinates of the j-th pivot point of the i-th chroma QP mapping table.
[0156] Accordingly, in one example, the video encoder (200) may be configured to signal a set of pivot points that specify the boundaries of the piece-wise linear model of the chroma QP mapping table. The video decoder (300) may be configured to receive a set of pivot points that specify the boundaries of the piece-wise linear model. The video decoder (300) may then reconstruct the chroma QP mapping table from the received pivot points.
[0157] In another example of the present disclosure, the video encoder (200) may signal a syntax element indicating that the same chroma QP mapping table is used for Cb and Cr components. That is, the same chroma QP mapping table may be used to determine chroma QP values for juxtaposed Cb chroma blocks and Cr chroma blocks. For example, when the syntax element has a value of 1, one chroma QP mapping table is used for both Cb and Cr chroma blocks. When the syntax element is 0, the video encoder (200) may be configured to signal separate chroma QP mapping tables for the Cb and Cr chroma blocks.
[0158] Similarly, in another example, the video encoder (200) may signal a syntax element indicating that the same chroma QP mapping table is used for Cb components, Cr components, and / or joint CbCr residuals. That is, the same chroma QP mapping table may be used to determine chroma QP values for juxtaposed Cb chroma blocks, Cr chroma blocks, and / or joint CbCr residuals. For example, when the syntax element has a value of 1, one chroma QP mapping table is used for any of the Cb chroma blocks, Cr chroma blocks, and / or joint CbCr residuals. When the syntax element is 0, the video encoder (200) may be configured to signal separate chroma QP mapping tables for the Cb chroma blocks, Cr chroma blocks, and / or joint CbCr residuals.
[0159] In one example of the present disclosure, the first chroma block is a Cb chroma block and the second chroma block is a Cr chroma block juxtaposed with the first chroma block. In this example, a video encoder (200) may signal a syntax element indicating whether the same chroma QP mapping table is used for both the Cb chroma block and the Cr chroma block, and a video decoder (300) may receive it.
[0160] In one example, the syntax element indicates that the same chroma QP mapping table is used for both the Cb chroma block and the Cr chroma block. In this example, the video encoder (200) may signal a single chroma QP mapping table. The video decoder (300) may determine a first chroma QP value for a first chroma block (e.g., a Cr block) and a second chroma QP value for a second chroma block (e.g., a juxtaposed Cb block) from the corresponding luma QP value and the chroma QP mapping table.
[0161] In another example, the syntax element indicates that the same chroma QP mapping table is not used for both the Cb chroma block and the Cr chroma block. In this example, the video decoder (300) may receive a first chroma QP mapping table from a video bitstream encoded for a first chroma block (e.g., a Cb block) and may receive a second chroma QP mapping table from a video bitstream encoded for a second chroma block (e.g., a Cr block). The video decoder (300) may then determine a first chroma QP value for the Cb chroma block of the video data from the lumina QP value and the first chroma QP mapping table, and determine a second chroma QP value for the Cr chroma block of the video data from the lumina QP value and the second chroma QP mapping table.
[0162] In some example video codecs, in addition to Cb and Cr residuals (e.g., one residual block for the Cb component and another residual block for the Cr component), the video encoder (200) and the video decoder (300) may be configured to derive one or more residual blocks of video data from the jointly coded and quantized Cb and Cr residuals. These residuals may be referred to as joint CbCr residuals. For example, one joint residual may be obtained by averaging the residuals of the Cb block (Cb_res) and the residuals of the Cr block (Cr_res) using the formula (Cb_res+Cr_res) / 2. In another example, the joint residual may be obtained from the averaged difference between the residuals of the Cb block (Cb_res) and the residuals of the Cr block (Cr_res) using the formula (Cb_res-Cr_res) / 2. In such a video codec, the video encoder (200) may be configured to define and signal a chroma QP mapping table for each of these joint residuals. In some examples, the chroma QP mapping table may be signaled for all joint CbCr residuals.
[0163] In some examples, the video encoder (200) may be configured to signal / specify that one or more chroma QP mapping tables for Cb and / or Cr blocks may be applied to one or more joint residuals.
[0164] In some examples, the video encoder (200) may be configured to signal syntax elements (e.g., index values) that specify which residual blocks (Cb, Cr, joint CbCr, etc.) share one or more chroma QP mapping tables. For example, when the index value is equal to 0, no residuals share the same chroma QP mapping table. When the index value is equal to 1, the Cb and Cr blocks do not share the same chroma QP mapping table, while the joint CbCr residual block may be decoded using a separate chroma QP mapping table.
[0165] In one or more examples of the present disclosure, one possible candidate for use as a chroma QP mapping table is a chroma QP mapping table defined by default in the video coding specification (e.g., default chroma QP mapping table). In this example, the video encoder (200) may be configured to signal a syntax element indicating that for a specific residual type (e.g., Cb, Cr, joint CbCr), the default chroma QP mapping table will be used or an explicitly signaled chroma QP mapping table will be used.
[0166] In some examples, the video encoder (200) may be configured to signal N single chroma QP mapping tables. For example, the video encoder (200) may be configured to signal a list of N chroma QP mapping tables. Each chroma QP mapping table may be defined by a plurality of pivot points describing a piecewise linear mapping of the chroma QP mapping table. For each pivot point, an input and an output QP may be signaled. For example, as illustrated in the embodiments below, the input QP value for a pivot point is delta_ qp _in_val[ i ][ j ]It may also be defined by, which specifies the delta value used to derive the input coordinates of the j-th pivot point of the i-th chroma QP mapping table. The output QP value for the pivot point is delta_ qp _out_val[ i ][ j ] It may be defined by, which specifies the delta value used to derive the output coordinates of the j-th pivot point of the i-th chroma QP mapping table. A specific chroma QP mapping table to be used for a specific residual may also be specified by an index to a list of chroma QP mapping tables.
[0167] In other examples, for each residual type (e.g., Cb, Cr, joint CbCr), the video encoder (200) may be configured to signal an index to specify the chroma QP mapping table to be used.
[0168] In any combination of the above examples, the video encoder (200) may be configured to signal one or more chroma QP mapping tables in one or more parameter sets, in a slice header, or in other parts of the encoded video bitstream. The parameter sets of examples include one or more of SPS, PPS, APS, VPS, decoder parameter set (DPS), or other parameter sets. When associated with a parameter set, the chroma QP mapping table is applicable to all samples in the picture associated with that specific parameter set.
[0169] In another example of the present disclosure, the video encoder (200) may specify one or more spatial regions (e.g., slice, tile, brick, region of interest, etc.) for a picture, and the video encoder (200) may signal one or more chroma QP mapping tables for a specific specified spatial region.
[0170] In other examples, the video encoder (200) may be configured to update and signal chroma QP mapping tables at the bitstream, sequence, frame block, or pixel level.
[0171] In examples where chroma QP mapping tables are associated with spatial regions, the video encoder (200) may signal one or more chroma QP mapping tables, and the video encoder (200) may specify a specific chroma QP mapping table to be used for a specific region using an index to a list of chroma QP mapping tables.
[0172] In another example of the present disclosure, the video encoder (200) may be configured to specify and signal chroma QP mapping tables for other chroma types, such as chroma formats, chroma sample location types, etc. The chroma format (e.g., chroma_format) may indicate a chroma sub-sampling format. Examples include monochrome 4:4:0, 4:2:2, 4:4:4, etc. The chroma sample location type (e.g., chroma_sample_location_type) may indicate the relative locations of luminance and chroma samples for various chroma formats. These chroma QP mapping tables may be explicitly defined by a standard, stored in both the video encoder (200) and the video decoder (300), or signaled in the bitstream by the means disclosed in the present disclosure or other methods.
[0173] In another example of the present disclosure, the video encoder (200) may signal one or more syntax elements to indicate the chroma type associated with the chroma QP mapping table. In some cases, more than one syntax element may be used to indicate the chroma types associated with the mapping table. For example, the video encoder (200) may signal the chroma QP mapping table for chroma_format, chroma_sample_location_type, component ID (Cb, Cr), etc.
[0174] In some examples, the video encoder (200) and the video decoder (300) may be configured to store one or more chroma QP mapping tables as a set. The video encoder (200) and the video decoder (300) may also be configured to update, add, or remove one or more chroma QP mapping tables from a set, which may result in a dynamic set of chroma QP mapping tables. The process for adding, updating, and / or removing chroma QP mapping tables may be specified by individual syntax elements and / or syntax element values. From a set of chroma QP mapping tables, the video decoder (300) may derive a subset of chroma QP mapping tables associated with the current block / sample / region as a list of mapping tables for the block / sample / region. The video encoder (200) may signal a specific mapping table to be used.
[0175] In some examples, one or more syntax elements in the SPS and / or VUI (video usability information) syntax may be used to infer the chroma type to which the chroma QP mapping table applies.
[0176] In some examples, the video encoder (200) and the video decoder (300) may use different color spaces to code video data (e.g., non-constant luminance Y'CbCr, constant luminance Y'CbCr, ICtCp, RGb, etc.). In these examples, the video encoder (200) may specify one or more chroma QP mapping tables to derive a QP value for a specific color component that may or may not depend on the QP value of another color component. One or more methods described in this disclosure are applicable to these color spaces, and the methods and descriptions may be extended accordingly to these applications.
[0177] One or more video coding processes of a video encoder (200) and a video decoder (300) that use a chroma QP may have an associated chroma QP mapping table. For example, the video encoder (200) and the video decoder (300) may determine various deblocking parameters / decisions using a chroma QP that may be calculated from the chroma QP mapping table. In some examples, the video encoder (200) may signal additional indications (e.g., syntax elements) that associate the chroma QP mapping table with other video coding processes (e.g., deblocking).
[0178] In some examples, one or more chroma deblocking filtering decisions or filter strengths (strong filter, weak filter, etc.) may rely on one or more signaled chroma QP mapping tables. These tables may be applied to one component (Cb or Cr of the joint CbCr) or more than one component. The video encoder (200) may signal syntax elements to associate the chroma QP mapping tables with the deblocking decisions / filter strengths, or such association may be inferred / derived by predetermined methods.
[0179] In other examples of the present disclosure, the video encoder (200) and the video decoder (300) may be configured to apply separate chroma QP mapping tables to high dynamic range (HDR) and standard dynamic range (SDR) video sequences. In some examples, the video encoder (200) may signal additional indications (e.g., syntax elements) that associate the chroma QP mapping table with the type of video content (e.g., HDR content, SDR content, color gamut of the video content, color primary of the video content, etc.).
[0180] One or more methods described in this disclosure may also rely on other syntax elements in the bitstream, such as QP offset values associated with color components in a slice header, PPS, and other parts of the bitstream. One or more video coding decisions may use chroma QP mapping tables in conjunction with one or more syntax elements. For example, deblocking filter decisions may be based on chroma QP mapping tables and one or more QP offsets associated with one or more color components.
[0181] One or more methods disclosed in this document may additionally be constrained by one or more features of the samples to which the chroma QP mapping table is applied. For example, block geometry, aspect ratio, the prediction mode used, features of neighboring blocks, and the position of samples in the picture (near boundaries, including picture boundaries, tile boundaries, slice boundaries, brick boundaries, etc., or apart from boundaries) may be used to determine when and how the chroma QP mapping tables are applied.
[0182] Some of the methods described above may be applied to a video encoder (200), a video decoder (300), or both. Although many methods are described for chroma components, the techniques of the present disclosure may also be applicable to luminance and components in other color spaces that may be used to represent video data.
[0183] The previously described video encoder (200) and video decoder (300) relate to block-based coding techniques that encode or decode associated chroma blocks and lumina blocks generated by the processes of prediction, residual derivation, and transformation. The embodiments below describe various techniques for determining quantization parameter values for using these block-based video coding techniques, depending on whether they are HEVC, VVC, or other block-based video coding techniques.
[0184] Implementation example 1
[0185] In some examples, signaling of chroma QP dependencies, including chroma QP mapping tables, can be signaled in APS. Below is a non-limiting example of such communication in RBSP (APS Raw Byte Sequence Payload) syntax.
[0186] APS RBSP Syntax
[0187]
[0188] ChromaQP Table data Syntax
[0189]
[0190] Tile group header Syntax :
[0191]
[0192] Semantics
[0193] Same as 1 chroma _ qp _table_present_flag specifies that the chroma QP mapping table is signaled in the APS. The chroma_qp_table_present_flag, which is equal to 0, specifies that the chroma QP mapping table is not signaled in the APS and that Table 8-15 is used to derive the chroma QP values.
[0194] Same as 1 same_ qp _table_for_cb_ cr specifies that only one chroma QP mapping table is signaled and applied to both the Cb and Cr components. Same_qp_table_for_cb_cr, which is equivalent to 0, specifies that two chroma QP mapping tables are signaled in the APS.
[0195] num _points_in_ qp _table_ minus2 [ i ] plus 2 Specifies the number of points used to describe the chroma QP mapping table. The value of num_points_in_qp_table_minus1[ i ] ranges from 0 to 69 + QpBdOffsetC It is in the range (including these values).
[0196] delta_ qp _in_val[ i ][ j ] specifies the delta value used to derive the input coordinates of the j-th pivot point of the i-th chroma QP mapping table.
[0197] delta_ qp _out_val[ i ][ j ] specifies the delta value used to derive the output coordinates of the j-th pivot point of the i-th chroma QP mapping table.
[0198] Pivot points for each chroma QP table are denoted by qpVal[ ] and cQPTable[ ]. qpVal[ j ] and cQPTable[ j ] are two coordinates of the j-th pivot point in the chroma QP table. The video encoder (200) and the video decoder (300) derive the variables qpVal[ ] and cQPTable[ ] from delta_qp_in_val[ ][ ] and delta_qp_out_val[ ][ ], respectively. The video encoder (200) and the video decoder (300) derive the values of the syntax elements delta_qp_in_val[ ][ ] and delta_qp_out_val[ ][ ] from -QpBdOffset, which is the lowest QP value considered for a specific bit depth. C The value of the first pivot point is calculated by adding to QpBdOffset. C The value of is 6 * (bitDepth C - Same as 8), where, bitDepth C is the bit depth of the corresponding chroma component. For bit depths exceeding 8 bits, the QP value range is larger and depends on the bit depth. For example, the QP value range is -QpBdOffset C It is set to be the same as 69 (including these values), where the value of QPBdOffset increases according to the bit depth.
[0199] If the first pivot point does not correspond to -QpBdOffset, the video encoder (200) and video decoder (300) may perform padding with a uniform slope of 1. For example, if QpBdOffset is equal to 12, qpVal[0] = 4, and cQPTable[0] = 4, the range of ChromaQpTable[i][k] is set equally to -12 to 3 (including these values), respectively. Similarly, if the last pivot point does not correspond to a maximum QP value (i.e., 69 in this example), the video encoder (200) and video decoder (300) pad with a QP value exceeding the last pivot point with a slope of 1. For all intermediate QPs, for QP values between pivot points, the video encoder (200) and the video decoder (300) derive QP values by linear interpolation between adjacent pivot point pairs. For example, if there are two pivot points x1 = qpVal[ j ], x2 = qpVal[j + 1], y1 = cQpTable[ j ], y2 = cQPTable[ j + 1 ], for the value of x between x1 and x2, the video encoder (200) and the video decoder (300) obtain the value of the chroma mapping table ChromaQpTable[ i ][ x ] by linear interpolation between two pivot points (x1, y1) and (x2, y2). At one or more locations, the video encoder (200) and the video decoder (300) derive the chroma QP value (in this example, -QpBdOffset C To 69) can also be clipped to an effective QP range.
[0200] Generally, the video decoder (300) is configured to pad QP values from the lowest value pivot point of the set of pivot points to the minimum QP value in the chroma QP mapping table using a function gradient of 1, and to pad QP values from the highest value pivot point of the set of pivot points to the maximum QP value in the chroma QP mapping table using a function gradient of 1.
[0201] The i-th chroma QP mapping tables cQPTable[ i ] ( i = 0..same_qp_table_for_cb_cr ? 0 : 1) are derived as follows:
[0202]
[0203]
[0204] When same_qp_table_for_cb_cr is equal to 1, ChromaQpTable[ 1 ][ k ] is ChromaQpTable[ 0 ][ k ] (k = -QpBdOffset C It is set to be the same as ..69).
[0205] In addition, the following changes are made to the chroma QP derivation.
[0206] The following constraint may be added: The value of qpVal[ i ][ j ] is greater than the value qpVal[ i ][ j - 1 ] (j = 1..num_points_in_qp_table[ i ] ).
[0207] The following text is removed from VVC Draft 5:
[0208] - If ChromaArrayType is the same as 1, variables qP Cb , qP Cr and qP CbCr qPi Cb , qPi Cr and qPi CbCrEach is set to the same value as Qpc as specified in Table 8-15, based on the same index qPi.
[0209] - Otherwise, variable qP Cb , qP Cr and qP CbCr are qPi respectively Cb , qPi Cr and qPi CbCr Based on the same index qPi, it is set to be the same as Min( qPi, 63 ).
[0210] The following text is added to VVC Draft 5:
[0211] - When ChromaArrayType is equal to 1, the following applies:
[0212] - When chroma_qp_table_present_flag is equal to 1, variable qP Cb and qP Cr is ChromaQpTable[ 0 ][ qPi Cb ] and ChromaQpTable
[0001] [ qPi Cr Each is set identically in ].
[0213] - Otherwise (if chroma_qp_table_present_flag is equal to 0), variables qP Cb and qP Cr qPi Cb and qPi Cr Each is set to the same value as Qpc as specified in Table 8-15, based on the same index qPi.
[0214] - Variable qP CbCr The index qPi is qPi CbCr Based on the fact that it is identical to Qp as specified in Table 8-15 C It is set to be the same as the value of.
[0215] In some examples, the signaling of chroma QP mapping tables may also be provided to other parameter sets (e.g., SPS, PPS, etc.) or to slice header / data syntax structures.
[0216] One or more delta values of QPs (delta_qp_in_Val, delta_qp_out_val) may be signaled as minus1 (e.g., after subtracting the value of 1) to indicate that some syntax elements are not allowed to take a zero value. For example, some delta values may not be allowed to take a value of 0, and it is more efficient to signal syntax elements with "minus1". More generally, syntax elements may be signaled as "minusN", where N may be predetermined / signaled.
[0217] The number of pivot points in a chroma QP mapping table may be constrained to be at least equal to a threshold T. In these cases, endpoints may be inferred and the syntax element num_points_in_qp_table may be signaled as minusT (e.g., after subtracting T from the value).
[0218] Implementation example 2
[0219] In another example of the present disclosure, an alternative form for signaling chroma QP mapping tables is provided. In this example, the signaling of chroma QP dependencies including chroma QP mapping tables is signaled in SPS. The following is a non-limiting example of such communication in SPS.
[0220] Syntax
[0221]
[0222]
[0223] Same as 1 chroma _ qp _table_present_flag specifies that the chroma QP mapping table is signaled in the SPS. The chroma_qp_table_present_flag, which is equal to 0, specifies that the chroma QP mapping table is not signaled in the SPS and that Table 8-16 is used to derive the chroma QP values.
[0224] Same as 1 same_ qp _table_for_ chroma specifies that only one chroma QP mapping table is signaled and applied to both the Cb and Cr components. Same_qp_table_for_chroma, which is equivalent to 0, specifies that two chroma QP mapping tables are signaled in the SPS for Cb and Cr, respectively.
[0225] Same as 1 global_offset_flag specifies that the first pivot point in the chroma QP mapping tables has at least 16 input coordinates and at least 16 output coordinates. global_offset_flag equal to 0 specifies that there are no restrictions on the first pivot point in the chroma QP mapping tables.
[0226] num _points_in_ qp _table_ minus1 [ i ] plus 1 specifies the number of points used to describe the chroma QP mapping table. The value of num_points_in_qp_table_minus1[ i ] ranges from 0 to 57 + QpBdOffset C - It is in the range of (global_offset_flag == 1 ? 16 : 0) (including these values).
[0227] delta_ qp _in_val_ minus1[ i ][ j ] plus 1 specifies the delta value used to derive the input coordinates of the j-th pivot point of the i-th chroma QP mapping table.
[0228] delta_ qp _out_val [ i ][ j ] specifies the delta value used to derive the output coordinates of the j-th pivot point of the i-th chroma QP mapping table.
[0229] The i-th chroma QP mapping tables ChromaQpTable[ i ] (i = 0..same_qp_table_for_chroma ? 0 : 1) are derived as follows:
[0230]
[0231] When same_qp_table_for_chroma is equal to 1, ChromaQpTable
[0001] [ k ] is ChromaQpTable
[0000] [ k ] (k = -QpBdOffset C It is set to be the same as ..57).
[0232] The values of qpInVal[ i ][ j ] and qpOutval[ i ][ j ] are -QpBdOffset C The requirement for bitstream conformity is that it is in the range of 57 (including these values) (i = 0..same_qp_table_for_chroma ? 0 : 1 and j = 0..num_points_in_qp_table_minus1[ i ]).
[0233] Table 1 provides bit estimates for examples of some chroma QP mapping tables defined for use in MPEG EVC (Essential Video Coding) and JVET developments.
[0234] Table 1: Chroma QP Mapping tables Signaling Analysis of the bits* required for the example
[0235]
[0236] A number of bits are applied here to the signaling of delta_qp_in_val_minus1 and delta_qp_out_val. Other syntax elements associated with chroma QP mapping tables are similar to all methods discussed in this disclosure and were not measured accordingly.
[0237] FIG. 4 is a flowchart illustrating an exemplary method for encoding a current block according to the techniques of the present disclosure. The current block may include a current chroma block. Although a video encoder (200) (Fig. 1 and Fig. 2) has been described, it should be understood that other devices may be configured to perform a method similar to that of FIG. 4.
[0238] In one example of the present disclosure, the video encoder (200) may be configured (350) to determine a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, and may encode the first chroma block of video data using the first chroma QP value (352). The video encoder (200) may also be configured to determine a luminance QP value and to encode a luminance block of video data corresponding to the first chroma block of video data using the luminance QP value. The video encoder (200) may also be configured (354) to signal syntax elements (e.g., delta_qp_in_val[ ][ ] and delta_qp_out_val[ ][ ]) describing a set of pivot points that specify a piecewise linear model for the first chroma QP mapping table in the encoded video bitstream.
[0239] In another example of the present disclosure, the first chroma block is a Cb chroma block and the second chroma block is a juxtaposed Cr chroma block. In this example, the video encoder (200) may also be configured to signal a syntax element indicating whether the same chroma QP mapping table is used for both the Cb chroma block and the Cr chroma block.
[0240] In one example, the same chroma QP mapping table is used for both the Cb chroma block and the Cr chroma block. In this example, the video encoder (200) is also configured to determine a second chroma QP value for the Cr chroma block of the video data from the lumina QP value and the first chroma QP mapping table. In another example, the same chroma QP mapping table is not used for both the Cb chroma block and the Cr chroma block. In this example, the video encoder (200) is configured to determine a second chroma QP value for the Cr chroma block of the video data from the lumina QP value and the second chroma QP mapping table, and to signal the second chroma QP mapping table in the video bitstream encoded for the Cr chroma block.
[0241] In one example, the same chroma QP mapping table is used for all of the Cb chroma blocks, Cr chroma blocks, and joint CbCr chroma blocks. In this example, the video encoder (200) is also configured to determine a second chroma QP value for the Cr chroma block of the video data from the lumina QP value and the first chroma QP mapping table, and a third chroma QP value for the joint CbCr chroma block of the video data from the lumina QP and the first chroma QP mapping table. In another example, the same chroma QP mapping table may not be used for the Cb chroma blocks, Cr chroma blocks, and joint CbCr chroma blocks. In this example, the video encoder (200) is configured to determine a second chroma QP value for a Cb chroma block of video data from a luminance QP value and a second chroma QP mapping table, and to signal the second chroma QP mapping table in the video bitstream encoded for the Cb chroma block. The video encoder (200) is configured to determine a third chroma QP value for a Cr chroma block of video data from a luminance QP value and a third chroma QP mapping table, and to signal the third chroma QP mapping table in the video bitstream encoded for the Cr chroma block.
[0242] In another example, the same chroma QP mapping table is not used for each of the Cb chroma block, the Cr chroma block, and the joint CbCr residual. In this example, the video encoder (200) may be configured to signal a second chroma QP mapping table in the video bitstream encoded for the Cr chroma block and a third chroma QP mapping table in the video bitstream encoded for the joint CbCr residual.
[0243] In another example of the present disclosure, the first chroma block of the video data is the joint CbCr residual.
[0244] In another example of the present disclosure, a video encoder (200) is configured to signal chroma QP mapping tables in a sequence parameter set (SPS).
[0245] In another example of the present disclosure, the video encoder (200) is configured to signal a syntax element indicating whether one or more chroma mapping tables are explicitly signaled in the encoded video bitstream.
[0246] FIG. 5 is a flowchart illustrating an exemplary method for decoding a current block according to the techniques of the present disclosure. The current block may include a current chroma block. Although a video decoder (300) (Fig. 1 and FIG. 3) has been described, it should be understood that other devices may be configured to perform a method similar to that of FIG. 5.
[0247] In one example of the present disclosure, the video decoder (300) may also be configured (370) to receive syntax elements (e.g., delta_qp_in_val[ ][ ] and delta_qp_out_val[ ][ ]) describing a set of pivot points that specify a piece-wise linear model for a first chroma quantization parameter (QP) mapping table in the encoded video bitstream. The video decoder (300) may be configured (372) to determine a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma QP mapping table, and (374) to decode the first chroma block of video data using the first chroma QP value. The video decoder (300) may also be configured to determine a luminance QP value and to use the luminance QP value to decode a luminance block of video data corresponding to a first chroma block of video data.
[0248] In one example of the present disclosure, the video decoder (300) is configured to pad QP values from the lowest value pivot point of a set of pivot points to the minimum QP value in a first chroma QP mapping table using a function gradient of 1, and to pad QP values from the maximum value pivot point of a set of pivot points to the maximum QP value in a first chroma QP mapping table using a function gradient of 1.
[0249] In one example of the present disclosure, the first chroma block is a Cb chroma block and the second chroma block is a juxtaposed Cr chroma block. In this example, the video decoder (300) may also be configured to receive a syntax element indicating whether the same chroma QP mapping table is used for both the Cb chroma block and the Cr chroma block.
[0250] In one example, the syntax element indicates that the same chroma QP mapping table is used for both the Cb chroma block and the Cr chroma block. In this example, the video decoder (300) may also be configured to determine a second chroma QP value for the Cr chroma block of the video data from the lumina QP value and the first chroma QP mapping table. In another example, the syntax element indicates that the same chroma QP mapping table is not used for both the Cb chroma block and the Cr chroma block. In this example, the video decoder (300) may also be configured to receive a second chroma QP mapping table from a video bitstream encoded for the Cb chroma block and to determine a second chroma QP value for the Cb chroma block of the video data from the lumina QP value and the second chroma QP mapping table.
[0251] In another example, the syntax element indicates that the same chroma QP mapping table is not used for the Cb chroma block, the Cr chroma block, and the joint CbCr residual, respectively. In this example, the video decoder (300) may be configured to receive a second chroma QP mapping table in the video bitstream encoded for the Cr chroma block and a third chroma QP mapping table in the video bitstream encoded for the joint CbCr residual.
[0252] In another example, the first chroma block of the video data is the joint CbCr residual.
[0253] In another example, the video decoder (300) may be configured to receive chroma QP mapping tables from a sequence parameter set (SPS).
[0254] In another example, the video decoder (300) may be configured to receive a syntax element indicating whether one or more chroma mapping tables are explicitly signaled in the encoded video bitstream.
[0255] It should be recognized that, depending on the example, certain acts or events of any of the techniques described herein may be performed in different sequences and may be added, merged, or removed in their entirety (e.g., not all described acts or events are essential for the execution of the techniques). Furthermore, in certain examples, acts or events may be performed concurrently rather than sequentially, for example, through multi-threaded processing, interrupt processing, or multiple processors.
[0256] In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored as one or more instructions or code on a computer-readable medium or transmitted therethrough, or executed by a hardware-based processing unit. A computer-readable medium may include a computer-readable storage medium corresponding to a medium of the same type as a data storage medium, or a communication medium including any medium that enables the transmission of a computer program from one place to another, for example, according to a communication protocol. In this way, computer-readable media may generally correspond to (1) non-transient types of computer-readable storage media or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to extract instructions, code and / or data structures for the implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[0257] By way of example, not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and can be accessed by a computer. Additionally, any connection is appropriately referred to as a computer-readable medium. For example, if software is transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of the medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other ephemeral media, but instead are oriented toward non-ephemeral types of storage media. Disks and discs, as used herein, include compact discs (CDs), laser discs, optical discs, digital multifunction discs (DVDs), floppy discs, and Blu-ray discs, wherein disks typically reproduce data magnetically, while discs reproduce data optically using lasers. Additionally, the above combinations must be included within the scope of computer-readable media.
[0258] Instructions may be executed by one or more processors, for example, one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the terms "processor" and "processing circuit" as used herein may refer to any of the aforementioned structures or any other structures suitable for implementing the techniques described herein. Additionally, in some embodiments, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or integrated into a combined codec. Furthermore, the techniques may be fully implemented in one or more circuits or logic elements.
[0259] The techniques of the present disclosure may be implemented in a wide variety of devices or apparatus, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chip sets). Various components, modules, or units are described in the present disclosure to highlight functional aspects of devices configured to perform the disclosed techniques, but are not necessarily required to be realized by different hardware units. Rather, as described above, various units may be combined in a codec hardware unit or provided by a collection of interoperable hardware units comprising one or more processors as described above, together with suitable software and / or firmware.
[0260] Various examples have been described. These and other examples are within the scope of the following claims.
Claims
Claim 1 A method for decoding video data, comprising: receiving syntax elements describing a set of pivot points that specify a piece-wise linear model for a first chroma quantization parameter (QP) mapping table in an encoded video bitstream; determining a first chroma QP value for a first chroma block of video data from a luminance QP value and the first chroma QP mapping table; receiving a syntax element indicating whether the same chroma QP mapping table is used for both a Cb chroma block and a juxtaposed Cr chroma block, wherein the first chroma block is the Cb chroma block and the second chroma block is the juxtaposed Cr chroma block; and decoding the first chroma block of video data using the first chroma QP value. Claim 2 A method for decoding video data according to claim 1, further comprising: a step of padding QP values from the lowest value pivot point among a set of pivot points to the minimum QP value in the first chroma QP mapping table using a function gradient; and a step of padding QP values from the maximum value pivot point among a set of pivot points to the maximum QP value in the first chroma QP mapping table using a function gradient. Claim 3 delete Claim 4 A method for decoding video data according to claim 1, wherein the syntax element indicates that the same chroma QP mapping table is used for a Cb chroma block, a Cr chroma block, and a joint CbCr residual, and the method further comprises the step of determining a second chroma QP value for a Cr chroma block of video data from a luminance QP value and a first chroma QP mapping table. Claim 5 A method for decoding video data according to claim 1, wherein the syntax element indicates that the same chroma QP mapping table is not used for both the Cb chroma block and the Cr chroma block, and the method further comprises: receiving a second chroma QP mapping table in a video bitstream encoded for the Cr chroma block; and determining a second chroma QP value for the Cr chroma block of the video data from the lumas QP value and the second chroma QP mapping table. Claim 6 A method for decoding video data according to claim 1, wherein the syntax element indicates that the same chroma QP mapping table is not used for each of the Cb chroma block, the Cr chroma block, and the joint CbCr residual, and the method further comprises: receiving a second chroma QP mapping table in a video bitstream encoded for the Cr chroma block; and receiving a third chroma QP mapping table in a video bitstream encoded for the joint CbCr residual. Claim 7 delete Claim 8 A method for decoding video data according to claim 1, further comprising: a step of determining the luminance QP value; and a step of decoding the luminance block of the video data corresponding to the first chroma block of the video data using the luminance QP value. Claim 9 A method for decoding video data according to claim 1, wherein the step of receiving the chroma QP mapping table further comprises the step of receiving the chroma QP mapping table in a sequence parameter set (SPS). Claim 10 A method for decoding video data according to claim 1, further comprising the step of receiving a syntax element indicating whether one or more chroma QP mapping tables are explicitly signaled in an encoded video bitstream. Claim 11 A method for decoding video data according to claim 1, further comprising the step of displaying a picture including a first chroma block of video data. Claim 12 A device configured to decode video data, comprising: a memory configured to store video data; and one or more processors communicating with said memory, wherein the one or more processors: receive syntax elements describing a set of pivot points specifying a piecewise linear model for a first chroma quantization parameter (QP) mapping table in an encoded video bitstream; determine a first chroma QP value for a first chroma block of video data from a luminance QP value and said first chroma QP mapping table; receive a syntax element indicating whether the same chroma QP mapping table is used for both a Cb chroma block and a juxtaposed Cr chroma block, wherein said first chroma block is said Cb chroma block and said second chroma block is said Cr chroma block; and the device configured to decode the first chroma block of video data using said first chroma QP value. Claim 13 An apparatus configured to decode video data, wherein, in claim 12, the one or more processors are also configured to pad QP values from the lowest value pivot point of a set of pivot points to the minimum QP value in the first chroma QP mapping table using a function gradient 1; and pad QP values from the maximum value pivot point of a set of pivot points to the maximum QP value in the first chroma QP mapping table using a function gradient 1. Claim 14 delete Claim 15 In claim 12, the syntax element indicates that the same chroma QP mapping table is used for a Cb chroma block, a Cr chroma block, and a joint CbCr residual, and the one or more processors are also configured to determine a second chroma QP value for a Cr chroma block of video data from a luminance QP value and a first chroma QP mapping table, a device configured to decode video data. Claim 16 In claim 12, the syntax element indicates that the same chroma QP mapping table is not used for both the Cb chroma block and the Cr chroma block, and the one or more processors are also configured to: receive a second chroma QP mapping table in a video bitstream encoded for the Cr chroma block; and determine a second chroma QP value for the Cr chroma block of the video data from the chroma QP value and the second chroma QP mapping table, an apparatus configured to decode video data. Claim 17 In claim 12, the syntax element indicates that the same chroma QP mapping table is not used for each of the Cb chroma block, the Cr chroma block, and the joint CbCr residual, and the one or more processors are also configured to: receive a second chroma QP mapping table in a video bitstream encoded for the Cr chroma block; and receive a third chroma QP mapping table in a video bitstream encoded for the joint CbCr residual, an apparatus configured to decode video data. Claim 18 delete Claim 19 In claim 12, the one or more processors are also configured to: determine the luminance QP value; and use the luminance QP value to decode a luminance block of video data corresponding to a first chroma block of video data, the device configured to decode video data. Claim 20 In claim 12, for receiving the chroma QP mapping table, the one or more processors are also: a device configured to decode video data, configured to receive the chroma QP mapping table in a sequence parameter set (SPS). Claim 21 In claim 12, the one or more processors are also: a device configured to decode video data, configured to receive a syntax element indicating whether one or more chroma QP mapping tables are explicitly signaled in the encoded video bitstream. Claim 22 In claim 12, a device configured to decode video data, further comprising a display configured to display a picture including a first chroma block of video data. Claim 23 In claim 12, the device is a wireless communication device configured to decode video data. Claim 24 A method for encoding video data, comprising: determining a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma quantization parameter (QP) mapping table; encoding the first chroma block of video data using the first chroma QP value; signaling a syntax element indicating whether the same chroma QP mapping table is used for both a Cb chroma block and a juxtaposed Cr chroma block, wherein the first chroma block is the Cb chroma block and the second chroma block is the juxtaposed Cr chroma block; and signaling syntax elements describing a set of pivot points that specify a piecewise linear model for the first chroma QP mapping table in an encoded video bitstream. Claim 25 A device configured to encode video data, comprising: a memory configured to store video data; and one or more processors communicating with said memory, wherein the one or more processors: determine a first chroma QP value for a first chroma block of video data from a luminance QP value and a first chroma quantization parameter (QP) mapping table; encode the first chroma block of video data using said first chroma QP value; signal a syntax element indicating whether the same chroma QP mapping table is used for both a Cb chroma block and a juxtaposed Cr chroma block, wherein said first chroma block is said Cb chroma block and said second chroma block is said Cr chroma block; and signal a syntax element describing a set of pivot points specifying a piecewise linear model for said first chroma QP mapping table in an encoded video bitstream. Claim 26 delete Claim 27 In claim 25, the same chroma QP mapping table is used for a Cb chroma block, a Cr chroma block, and a joint CbCr residual, and the one or more processors are also configured to determine a second chroma QP value for a Cr chroma block of video data from a luminance QP value and a first chroma QP mapping table, a device configured to encode video data. Claim 28 In claim 25, the same chroma QP mapping table is not used for both the Cb chroma block and the Cr chroma block, and the one or more processors are also configured to: determine a second chroma QP value for the Cr chroma block of video data from a luminance QP value and a second chroma QP mapping table; and to signal the second chroma QP mapping table in a video bitstream encoded for the Cr chroma block, a device configured to encode video data. Claim 29 An apparatus configured to encode video data, wherein the same chroma QP mapping table is not used for each of the Cb chroma block, the Cr chroma block, and the joint CbCr residual, and the one or more processors are also configured to: signal a second chroma QP mapping table in a video bitstream encoded for the Cr chroma block, and signal a third chroma QP mapping table in a video bitstream encoded for the joint CbCr residual. Claim 30 delete Claim 31 In claim 25, the one or more processors are also configured to: determine the luminance QP value; and use the luminance QP value to encode a luminance block of video data corresponding to a first chroma block of video data, the device configured to encode video data. Claim 32 In claim 25, for signaling the chroma QP mapping table, the one or more processors are also: a device configured to encode video data configured to signal the chroma QP mapping table in a sequence parameter set (SPS). Claim 33 In claim 25, the one or more processors are also: a device configured to encode video data, configured to signal a syntax element indicating whether one or more chroma QP mapping tables are explicitly signaled in the encoded video bitstream. Claim 34 In claim 25, a device configured to encode video data, further comprising a camera configured to capture a picture including a first chroma block of video data. Claim 35 In claim 25, the device is a wireless communication device configured to encode video data.
