FIG. 2c illustrates the set of offset values encoded as an immediate offset value 244 and a delta value 245 based on the immediate offset. In this example, the immediate offset value 244 is directly applied as the chroma QP offset of the first chroma component (255) while the sum of the delta value 245 and the immediate value 244 is used as the chroma QP offset value of the second chroma component (256). Some embodiments select this method when the two chroma components differ in their relationships to the luma component by a small offset that can be cheaply encoded in the bitstream with very few bits. This method encodes the second chroma QP offset (for component [1]) in relationship to the first chroma QP offset. That is, the second chroma QP offset is now predicted from the first chroma QP offset (for component [0]). In some embodiments, the chroma QP value for the first chroma component is computed as:
QPchroma[0]=QPluma+QPoffset_pps[0]+QPoffset_quant_group[0].??(3)
The chroma QP value for the second chroma component is computed as:
QPchroma[1]=QPluma+QPoffset_pps[1]+QPoffset_quant_group[0]+QPoffset_quant_group[1].??(4)
(i=0 for the first chroma component; i=1 for the second chroma component)
As mentioned, some embodiments use chroma QP offset values from multiple different layers of the video coding hierarchy for deriving the final chroma QP value. For some embodiments that use chroma QP offset values from both the PPS and the slice header, the chroma QP value for the first chroma component is computed as:
QPchroma[0]=QPluma+QPoffset_pps[0]+QPoffset_slice[0]+QPoffset_quant_group[0].??(5)