Next, the process computes (at 760) chroma QP values. For a decoder, some embodiments compute the chroma QP value from the identified luma QP values and from each identified chroma QP offset. In some embodiments, this is accomplished by adding the luma QP value with all of the identified chroma QP offsets (from the slice/picture level and from the QG level) as illustrated above in Equations (1)-(6).
The process then determines (at 770) whether it has reached the end of the picture (if the higher level chroma QP offset is for the entire picture) or it has reached the end of the slice (if the higher level chroma QP offset is for the slice). If so, the process 700 ends. If not, the process 700 returns to 730 to process the next quantization group.
As shown above by reference to FIGS. 1-6, the chroma QP values are coded predictively by using offsets from the luma QP values. Furthermore, in some embodiments, the offset values are themselves predictively encoded by offsetting from each other, such as QG level offsets being offsets from slice and/or picture level offsets, and/or the offset values of one chroma component being encoded as offsets from another chroma component. In some embodiments, the chroma QP offsets are further predicted from chroma values or offsets of neighboring coding units or blocks, or from chroma values or offsets of a collocated coding unit or block in a neighboring video picture, as they are most likely sufficiently similar to the coding units or blocks of the current chroma quantization group. Some embodiments do not perform prediction for at least some of the quantization groups. In these instances, chroma QP values are encoded explicitly (not as offsets) such that the QP parameters of the luma component are ignored (because there is no need to offset from luma).