Sample Adaptive Offset Control

By implementing additional quantization steps, adaptive dynamic range signaling, and offset interpolation, the limitations of existing HEVC standards in SAO methods are addressed, resulting in improved accuracy and efficiency of SAO values.

JP7665065B2Active Publication Date: 2025-04-18APPLE INC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2024035186
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2014-04-17
Filing Date
2024-03-07
Publication Date
2025-04-18
Estimated Expiration
2034-05-01

AI Technical Summary

Technical Problem

Existing HEVC standards have limitations in SAO methods regarding classification and overhead, particularly in bit depth precision, color, and bands used for partitioning, which affect the accuracy and dynamic range of SAO values.

Method used

The proposed solution involves additional quantization steps during the classification or segmentation process, adaptive dynamic range signaling, and offset interpolation to enhance the accuracy of SAO values while minimizing overhead and maintaining dynamic range.

Benefits of technology

This approach reduces noise sensitivity in sample offset values, improves the accuracy of applied offsets, and minimizes the impact of offset values on dynamic range and signal overhead, leading to better image quality and encoding efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007665065000008
    Figure 0007665065000008
  • Figure 0007665065000009
    Figure 0007665065000009
  • Figure 0007665065000010
    Figure 0007665065000010
Patent Text Reader

Abstract

To provide methods for quantization and adaptive dynamic range signaling in Sample Adaptive Offset (SAO) processes in video coding and processing systems within the High Efficiency Video Coding (HEVC) standard, etc.SOLUTION: A quantization method includes: a step of identifying a quantization factor (T), a value of a predetermined video sample (p), a value of a first neighboring sample (n0) to the predetermined video sample, and a value of a second neighboring sample (n1) to the predetermined video sample; a step 102 in which each of the identified values (p, n0, n1) is divided by the quantization factor (T); a step 103 in which the divided sample value (p / T) is compared to divided values of its neighboring sample (n0 / T) and (n1 / T); and a step 104 in which the predetermined video sample is classified as one of a minimum, a first edge type, a second edge type, a maximum, and none of these, based on the comparison made in the step 103.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] This application claims priority to U.S. Patent Application No. 14 / 255,609, filed April 17, 2014, which is a continuation of U.S. Patent Application No. 14 / 173,676, filed February 5, 2014, which claims the benefit under 35 U.S.C. § 119(e) of U.S. Provisional Application No. 61 / 836,931, filed June 19, 2013, and is incorporated herein by reference in its entirety.

[0002] The present invention relates to methods for signal amplitude reconstruction for video encoding and compression, and more particularly, to methods for quantization and adaptive dynamic range signaling for Sample Adaptive Offset (SAO) processing in video encoding and processing systems, such as within the High Efficiency Video Coding (HEVC) standard. [Background technology]

[0003] The HEVC standard, currently published as ISO / IEC 23008-2 MPEG-H Part 2 and ITU-T H.265, introduced several new video coding tools designed to improve video coding efficiency over previous video coding standards and techniques, including but not limited to MPEG-2, MPEG-4 Part 2, MPEG-4 AVC / H.264, VC1, and VP8. One of these tools is SAO, a filtering mechanism typically implemented after deblocking filtering. The processing may be in-loop, e.g., affecting subsequent images that may use the SAO processed image as a reference, or out-of-loop, e.g., affecting only display or other subsequent processing outside the encoder. SAO reduces distortion by grouping reconstructed pixels into categories and applying offsets to pixel values ​​based on a defined classification or partitioning process.

[0004] SAO supports two modes of operation, edge offset mode and band offset mode, as specified in the HEVC specification. In edge offset mode, the value of a given sample may be compared to two of eight horizontally, vertically, or diagonally adjacent samples. Based on a simple direct comparison of the sampled values, a given sample may be classified into one of several categories. In band offset mode, the amplitude of a given sample may be used to classify the sample into one of 32 bands. An offset may be specified for a sample if the sample falls into one of four consecutive bands out of the set of 32 bands for which SAO supports offset parameters. Summary of the Invention

[0005] The existing HEVC standard includes limitations on the SAO method in terms of partitioning and overhead. In this regard, the partitioning process is limited in terms of the bit depth, precision, colors, and number of bands used for partitioning. To reduce the overhead required for signaling offset values, the existing HEVC standard limits both the number of bands for which offsets can be provided and the ability to specify precise offset values ​​for each of the various pixel categories. For example, limiting the maximum value of the offset value for bit depths greater than 10 bits reduces the precision of the SAO value at larger bit depths, which has the benefit of increasing the dynamic range covered by the SAO value. However, in some cases, a higher precision of the SAO value may be more important for image quality purposes than a large dynamic range, such as when the offset to be applied is within a small range. Thus, a more flexible approach to SAO is needed that can partition samples with low sensitivity to noise and can extend the precision of the applied offset while minimizing the impact on the dynamic range of the offset value and / or the signaling overhead required to transmit those offsets. [Brief description of the drawings]

[0006] [Figure 1] 1 is a flow chart illustrating a method for quantization according to an embodiment of the present invention. [Diagram 2] 5 is a flow chart illustrating another method for quantization according to an embodiment of the present invention. [Diagram 3] 5 is a flow chart illustrating another method for quantization according to an embodiment of the present invention. [Figure 4A] 4 is a flow chart illustrating a method for applying a sample adaptive offset to a transformed color space according to an embodiment of the present invention. [Figure 4B] 4 is a flow chart illustrating a method for applying a sample adaptive offset to a transformed color space according to an embodiment of the present invention. [Diagram 5] 1 is a flow chart illustrating a method for offset interpolation according to an embodiment of the present invention. [Figure 6] 1 is a flow chart illustrating a method for identifying offsets for samples having non-uniformly distributed ranges according to an embodiment of the present invention. [Figure 7] FIG. 1 is a block diagram of an encoding system according to an embodiment of the present invention. [Figure 8] FIG. 2 is a block diagram of a decoding system according to an embodiment of the present invention. [Figure 9] FIG. 1 is a block diagram of a multi-terminal system according to an embodiment of the present invention. [Figure 10] 11 is a flowchart illustrating a method for determining and signaling a dynamic range and / or accuracy of a sample adaptive offset. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0007] Embodiments of the present invention provide techniques for reducing and controlling the effects of noise on sample offset values ​​and / or for adapting the bit depth of sample offset values, which may be applied in Sample Adaptive Offset (SAO) processing as well as post-processing.

[0008] In one embodiment, an optional additional quantization step may be performed during the classification or partitioning process, where sample values ​​may be partitioned into distinct groups before being compared to reduce noise sensitivity of the offset values. In another embodiment, sample range, offset mode, and offset precision parameters may also be calculated and transmitted using metadata associated with the sampled video data to improve application of the offset in other embodiments.

[0009] In another embodiment, the video data may be converted to a second color space having components more suitable for applying the offset value. Once the offset value is applied in the second color space, the video data with the applied offset may be converted back to the first color space. Again, in this case, if an identification of the second color space is to be transmitted, minimal overhead may be required to transmit this identification.

[0010] In another embodiment, offset values ​​for particular bands for which explicit signaling is not possible due to limited signal overhead may instead be interpolated from the explicitly signaled offset values. This interpolation may occur by explicitly signaling non-adjacent bands and then interpolating offset values ​​associated with intermediate bands that are between the explicitly signaled non-adjacent bands. Bands may also be divided non-uniformly, such that some bands have different widths and / or include a wider range of values ​​than other bands. These embodiments may allow offset values ​​to be applied more precisely to the specific portions of the image that are most affected by the offset.

[0011] [Sample quantization and division] SAO may include partitioning the reconstructed samples into various categories, obtaining an offset for each category, and adding the obtained offset to each sample of the category. The offset for each category may be calculated at the encoder and signaled to the decoder. The partitioning of the samples may be performed at both the encoder and the decoder. Quantization may mask noise in the content and provide better focus on the edges of the video content. In these cases, a specific quantization value only needs to be transmitted when information about the specific quantization factor used should be transmitted. Overhead may be further reduced by using the same quantization factor for multiple samples. Additional parameters of sample range, offset mode, and offset precision may also be calculated and transmitted with metadata associated with the sampled video data to improve application of offsets in other embodiments. A quantization parameter may be introduced to aid edge partitioning by checking not only whether samples are far apart, but also how far apart they are. The quantization parameter may also be used to determine if the absolute difference between adjacent samples is greater than a threshold, which may be exact or quantized. The quantization parameter may also quantize the difference between adjacent samples and perform partitioning based on the quantized difference. Conventional edge offset determinations are based on direct comparison using criteria such as whether the current sample value is greater than / less than / equal to its adjacent values, but they are easily distorted by noise, especially at higher bit depths. The quantization parameter technique discussed herein is expected to reduce sensitivity to such noise effects.

[0012] In the first embodiment, all samples to be processed may be quantized using a quantization factor. The quantization factor may include a divisor by which a given sample value and its neighboring sample values ​​are divided. The quantized samples may be rounded. The rounded result may then be used as a parameter for the partitioning process. In some cases, in addition to or instead of the rounding process, other operations such as rounding up or rounding down calculations may be performed on the quotient. For example, if the value of the divisor is a power of 2, then the division operation may be simplified by using a shift operation or a bitwise AND mask instead, which may save memory resources, which will be further described herein. The decision process may then classify the samples based on the new quantized samples. Table 1 shows exemplary conditions for partitioning various edge types in the edge offset mode based on this embodiment. In Table 1, T, which may be a floating point number, corresponds to the divisor.

[0013] [Table 1]

[0014] 1 shows an exemplary method 100 according to a first embodiment. At step 101, a quantization factor (T), a value (p) of a given video sample, a value (n0) of a first neighboring sample for the given video sample, and a value (n1) of a second neighboring sample for the given video sample may be identified. At step 102, each of the identified values ​​(p, n0, n1) may be divided by the quantization factor (T). At step 103, the divided sample value (p / T) may be compared to the divided values ​​(n0 / T) and (n1 / T) of its neighboring samples.

[0015] In some cases, before the comparison occurs, a function may be applied to one or more of the divided values ​​(p / T), (n0 / T), and / or (n1 / T) to associate the divided values ​​with a more general category. For example, in some cases, a rounding function may be applied to each of the divided values, such as in box 105, such that each of the divided values ​​is associated with a corresponding integer. The associated integers may then be compared to one another in step 103. In other cases, a variety of functions may be applied. For example, in box 106, a round down or round up calculation function may be applied to each of the divided values ​​before comparing the values ​​to one another in step 103. In other embodiments, other functions may also be used. In step 104, a given video sample may be classified as one of a minimum, a first edge type, a second edge type, a maximum, and none of the above, based on the comparison made in step 103. Table 1 above shows exemplary criteria for classifying a video sample as one of these types based on the comparison in step 103. The Conditions column in Table 1 shows exemplary comparison criteria.

[0016] In a further embodiment, the division of edge types may be based on quantization of the difference between a sampled value and its neighboring values, and the difference between a sampled value and its neighboring values ​​may be evaluated according to conventional SAO methods. Table 2 shows exemplary conditions of a method for dividing various edge types in edge offset mode based on this embodiment.

[0017] [Table 2]

[0018] FIG. 2 illustrates an exemplary method 200 according to a second embodiment. In step 201, a quantization factor (Q), a value of a given video sample (p), a value of a first neighboring sample (n0) for the given video sample, and a value of a second neighboring sample (n1) for the given video sample may be identified. In step 202, differences (p-n0 and p-n1) between the given video sample (p) and each of its neighboring samples (n0, n1) may be determined. In step 203, a quantization factor (Q) may be applied to each of the differences between a value and its neighboring values ​​determined in step 202, as described further herein. In step 204, the method 200 may evaluate a sign of quantization for each of the differences between the given video sample value and its neighboring values. In step 205, the given video sample (p) may be classified as one of a minimum, a first edge type, a second edge type, a maximum, and none of the above, based on the evaluation made in step 204. Table 2 above shows exemplary criteria for classifying a video sample as one of these types based on the evaluation performed in step 204. The Condition column of Table 2 shows exemplary comparison criteria.

[0019] In yet another embodiment, all samples to be processed may be quantized using the same quantizer Q. The decision process may then classify the samples based on the new quantized samples. The quantization parameter may reduce the dynamic range of the samples by quantizing the samples to a lower precision before edge partitioning. By quantizing the samples and then reusing the quantized values ​​for all neighborhood determinations, this embodiment may conserve memory resources. Table 3 below shows exemplary conditions for partitioning various edge types in edge offset mode based on this embodiment. In Table 3 and other tables herein (unless otherwise indicated), p corresponds to the value of a given sample, n0 corresponds to the value of the adjacent sample in a first direction (typically horizontal, vertical, or diagonal) from the given sample, n1 corresponds to the value of the adjacent sample in a second direction (typically horizontal, vertical, or diagonal opposite to the first direction) from the given sample, and Q corresponds to the quantization factor.

[0020] [Table 3]

[0021] FIG. 3 illustrates an exemplary method 300 according to a third embodiment. In step 301, a quantization factor (Q), a value of a given video sample (p), a value of a first neighboring sample (n0) for the given video sample, and a value of a second neighboring sample (n1) for the given video sample may be identified. In step 302, a quantization factor (Q) may be applied to each of the identified values ​​(p, n0, n1). For example, the quantization may be a rounding function as described with respect to Table 1 above. In this example, Table 3 generalizes Table 1. In step 303, the quantized sample value Q[p] may be compared to the quantized values ​​Q[n0] and Q[n1] of its neighboring samples. In step 304, the given video sample (p) may be classified as one of a minimum, a first edge type, a second edge type, a maximum, and none of the above based on the comparison made in step 303. Table 3 above shows exemplary criteria for classifying a video sample as one of these types based on the comparison made in step 303. The Condition column of Table 3 shows exemplary comparison criteria.

[0022] For each of the embodiments described herein, the quantization process may be a shift operation by j bits, such as a right shift operation. In some cases, the shift operation may further include a rounding control. In one mode of the quantization process, the quantization step size may be dynamically calculated based on the bit depth of the samples. For example, the samples may be quantized to their 8 most significant bits. In other words, bitDepth represents the bit depth of the samples to be processed, N (replacing j) is fixed based on bitDepth, i.e., N=bitDepth-8, and for the embodiments of Figures 1 and 3 discussed herein, quantization may be performed as Q1(x)=x>>N.

[0023] In one embodiment, for the embodiment of FIG. 2 discussed herein, quantization may be performed using sample x and quantization factor j as follows:

[0024] Q2(x,j)=floor(x / (2^j))=sign(x)*(abs(x)>>j) Q3(x,j)=((x+(1<<(j-1)))>>j)

[0025] Quantization methods Q1 and Q3 are similar, e.g., positive and negative values ​​are not distinguished, there is a negative bias, values ​​are never 0, and if negative, samples can be right-shifted without a rounding factor.

[0026] Alternatively, the quantization method can be conceptualized into a coding tree modification process, in which the value of the edge index edgeIdx may be derived as follows: edgeIdx=2+Sign(recPicture[xSi][ySj]-recPicture[xSi+hPos[0]][ySj+vPos[0]])+Sign(recPicture[xSi][ySj]-recPicture[xSi+hPos[1]][ySj+vPos[1]]) When quantization is applied according to an embodiment of the present invention, the edge index may be derived by replacing Sign with SignQuant as follows: edgeIdx=2+SignQuant(recPicture[xSi][ySj]-recPicture[xSi+hPos[0]][ySj+vPos[0]])+SignQuant(recPicture[xSi][ySj]-recPicture[xSi+hPos[1]][ySj+vPos[1]]) where SignQuant can be:

number

[0027] In an alternative embodiment, this can be done as follows: edgeIdx=2+Sign(Q(recPicture[xSi][ySj]-recPicture[xSi+hPos[0]][ySj+vPos[0]]))+Sign(Q(recPicture[xSi][ySj]-recPicture[xSi+hPos[1]][ySj+vPos[1]])) Q is the quantization method as described above, where Q can be, for example, Q2 or Q3. In a further embodiment, it can also be: edgeIdx=2+Sign(Q1(recPicture[xSi][ySj])-Q1(recPicture[xSi+hPos[0]][ySj+vPos[0]])))+Sign(Q1(recPicture[xSi][ySj])-Q1(recPicture[xSi+hPos[1]][ySj+vPos[1]]))

[0028] In another mode of the quantization process, j may be signaled for each color component. The signaling may be performed in the slice header, which may provide the advantage of minimizing overhead. For example, the slice segment header may be modified as follows, where slice_sao_luma_thres_scale and slice_sao_chroma_thres_scale specify the thresholds for the luma and chroma components, respectively, that may be used for comparison in quantizing sampled video values ​​in the edge offset partitions discussed herein. [Table 4]

[0029] Signaling can also be implemented in the SAO syntax adapted in the coding tree unit at the PPS or SPS level. This mode may provide more flexibility by decoupling the quantization from the predefined number of most significant bits by which the samples are quantized, allowing the quantization parameters to be signaled at various levels.

[0030] [Signaling of dynamic range and precision parameters] In one embodiment, for both the edge offset and band offset partitioning methods, the accuracy of SAO may be extended while constraining signaling overhead and preserving dynamic range by supporting signaling of additional parameters. These additional parameters may include parameters that specify the dynamic range and / or accuracy of the signaled offset.

[0031] Although SAO is designed to better reconstruct the original signal amplitude, its performance may be poor, especially at large bit rates and bit depths in the existing HEVC standard. In SAO, an image and a correction offset are received in the bitstream. The reconstructed image samples are partitioned into categories, and the correction offsets corresponding to the categories are added to the reconstructed image samples after deblocking. In the existing HEVC standard, the code values ​​are either signaled in the bitstream (e.g., in a band offset manner) or specified for each edge category, while the magnitude of the coded offset value is limited to a maximum value of (1<<(Min(bitDepth,10)-5))-1. Thus, the final offset value can be calculated as follows: SaoOffset=offsetSign*saoOffsetAbs<<(bitDepth-Min(bitDepth,10))

[0032] where offsetSign is the specified offset, saoOffsetAbs is the magnitude of the offset to be signaled, and bitDepth is the specified bit depth of the samples to be processed. SaoOffset may be specified and signaled separately for each color component as described further herein. For example, the offset range for 8-bit data is within [-7,7], for 10-bit data is within [-31,31], and for 12-bit data is within [-31,31]*4. Quantization is represented in the above formula as the right-shifted part, i.e., <<(bitDepth-Min(bitDepth,10)). In other words, quantization in the existing HEVC standard is applied for bit depths greater than 10.

[0033] However, this calculation method may result in poor performance. For example, in either the edge or band offset SAO method, the offsets to be signaled may be within a limited and rather small range, assuming a certain optimization model (e.g., using the least mean square method). However, when the final SAO offset values ​​are determined for signaling, assuming additional constraints such as encoding required by the HEVC standard (for bit depths greater than 10), as well as rounding, quantization, and clipping constraints, these offsets may end up being fully quantized until most or all of them become zero after quantization. This reduces the effectiveness of SAO, or even stops SAO altogether, negatively impacting the overall efficiency of the coding.

[0034] Thus, the performance of SAO may be improved by removing quantization and / or adjusting the quantization for a given bit depth. In an embodiment, a parameter may be provided that specifies the precision of the SAO offset. Instead of applying a fixed scaling factor, a varying scaling parameter may be provided to adjust the offset parameter by a fixed amount that is bit depth dependent. The scaling parameter may specify a particular scaling factor to be applied to a particular sample.

[0035] FIG. 10 is a flow chart illustrating a method 1000 for determining and signaling a dynamic range and / or precision of a sample adaptive offset. In a first step 1002, the method 1000 may receive encoded video data in a bitstream and extract a parameter from the bitstream that specifies how the SAO offset should be applied. In some cases, the saoShiftOffset parameter may be used to signal a particular scaling factor. In step 1004, the method 1000 determines whether the bitstream includes a parameter that specifies an SAO shift offset value. For example, past systems did not have to transmit a parameter that specifies how the SAO offset should be applied. If a parameter that specifies how to apply the SAO offset is not extractable, the method 1000 then proceeds to step 1008, where a default SAO offset scheme is applied. For example, if saoShiftOffset is not signaled, not received, or not present, then the offset may be scaled according to an existing fixed scaling scheme (i.e., applying quantization for bit depths greater than 10). If the method 1000 extracts the SAO offset parameter, then the method proceeds to step 1006, where SAO is applied to the image according to the parameter. For example, the offset may be shifted by an amount specified by the saoShiftOffset parameter according to the following example code: if(saoShiftOffset does not exist) SaoOffset=offsetSign*saoOffsetAbs<<(bitDepth-Min(bitDepth,10)) else SaoOffset=offsetSign*saoOffsetAbs< <saoShiftOffset

[0036] In alternative embodiments, criteria may also be specified to limit the cases in which customized offset scaling is used. For example, additional criteria may be specified to allow customized offset scaling only if bitDepth is greater than 10, while also limiting the dynamic range to within the current maximum sample value given the specified bitDepth based on the amount of saoMaxLogOffsetAbs.

[0037] In an embodiment, the parameter SaoOffset may be signaled in a picture parameter set (PPS). In alternative embodiments, the parameter may be explicitly signaled in a sequence parameter set (SPS), slice header, or other metadata associated with the coded video data. In some cases, these additional parameters may be supported in new profiles that are different from the profiles already defined in HEVC, such as the Main, Main-10, and Main Still profiles. The parameter may be signaled for each Largest Coding Unit (LCU), while a prediction mechanism between LCUs can reduce signaling overhead.

[0038] Parameters may be defined for each color component that may be, but need not be, similar to one another. Thus, each color component may have its own saoOffset parameter associated with it. For example, a luma component may have its own saoOffset parameter and a chroma component may have its own saoOffset parameter. In alternative embodiments, different color components may use the same saoOffset parameter or the same set of saoOffset parameters.

[0039] For example, the parameter SaoOffset may be signaled by the parameters sao_luma_bit_shift and sao_chroma_bit_shift of the picture parameter set Raw Byte Sequence Payload (RBSP) syntax as follows: [Table 5]

[0040] sao_luma_bit_shift may specify a parameter used to derive the SAO offset value for luma samples. The value of sao_luma_bit_shift ranges from 0 to BitDepth. Y The value of sao_luma_bit_shift may range from 0 to BitDepth -6 inclusive. When not present, the value of sao_luma_bit_shift may be inferred to be equal to 0, in which case quantization may be performed according to the existing HEVC standard. sao_chroma_bit_shift may specify a parameter used to derive the SAO offset value for the chroma samples. The value of sao_chroma_bit_shift may range from 0 to BitDepth C It may range from -6 (inclusive). When not present, the value of sao_chroma_bit_shift may be inferred to be equal to 0, in which case quantization may be performed according to the existing HEVC standard.

[0041] In some cases, a maximum allowed value for the signaled offset amount, saoOffsetAbs, may also be included in the parameters or included as an additional parameter. The maximum allowed value may be encoded as is, or may be more efficiently encoded by taking its base 2 logarithm, saoMaxLogOffsetAbs. In this case, the maximum allowed offset may be specified as follows: saoMaxOffset=(1< <saoMaxLogOffsetAbs)-1

[0042] In some cases, the entropy coding process (cmax) of saoOffsetAbs may be affected by this coding. In an alternative embodiment, since the current max value may be set equal to (1<<(Min(bitDepth,10)-5))-1, a small number of bits may be saved by signaling saoDeltaMaxLogOffsetAbs and setting saoMaxLogOffsetAbs equal to: saoMaxLogOffsetAbs=(Min(bitDepth,10)-5)+saoDeltaMaxLogOffsetAbs

[0043] If saoDeltaMaxLogOffsetAbs is equal to 0, then the existing dynamic range may be used, otherwise an extended dynamic range may be provided.

[0044] In an alternative embodiment, adaptive dynamic range signaling may be provided and derived with slice level control. For example, SaoOffsetVal[cIdx][rx][ry][i] for i in the range 0 to 4 (inclusive) may be derived as follows: SaoOffsetVal[cIdx][rx][ry][0]=0 for(i=0;i<4;i++) SaoOffsetVal[cIdx][rx][ry][i+1]=offsetSign*sao_offset_abs[cIdx][rx][ry][i] }

[0045] In an alternative embodiment, adaptive dynamic range signaling is provided and can be derived at the sequence level control as follows: [Table 6]

[0046] When sao_quant_enabled_flag is 1, the decoder may be alerted that quantization should be applied to sao_offset_abs. sao_quant_enabled_flag equal to 0 may indicate that quantization for sao_offset_abs should not be used. When not present, the value of sao_quant_enabled_flag equal to 0 is inferred, in which case quantization may be performed according to the existing HEVC standard.

[0047] In addition, while HEVC applies SAO as an in-loop processing mechanism, one or more of the embodiments described herein may be applied as part of an in-loop SAO processing mechanism or as a codec-independent post-processing mechanism, such as HEVC. For those embodiments applied as a codec-independent post-processing mechanism, the SAO metadata may still be signaled within the codec using a transport mechanism including, but not limited to, Supplemental Enhancement Information (SEI) messages, user-specified metadata in MPEG-2 systems, or other mechanisms. Additionally, embodiments of the present invention may be included in other codecs that may provide some SAO. These other codecs may include future codecs or extensions of HEVC, such as scalable or 3D / multiview extensions of HEVC.

[0048] [Application of SAO in transformed color space] In addition to supporting the YUV 4:2:0 color space, HEVC also supports other color spaces and color sampling formats, such as YUV 4:2:2 and YCoCg, YCoCg-R, or RGB 4:4:4, among others. In various embodiments, the SAO may be applied in a color space different from the native color space of the video data. Application of the SAO in a different color space may allow offsets to be more precisely specified for particular parameters associated with a particular color space, such as chromaticity parameters instead of particular color values ​​in the RGB color space.

[0049] SAO may be applied within a non-native color space by converting the image data to a different color space and sampling format, such as from 4:2:0 to 4:4:4, applying the SAO to the different color space and sampling format, and then converting the image data back to the native color space and sampling format. For example, if the native encoding color space is RGB Rec. 709 or Rec. 2020, the image data may then be converted to a YUV color space to apply the SAO directly to the luma and / or chroma components of the image data. Once the image data has been converted to a YUV color space, one or more offsets based on the SAO may be applied to the image data converted to the YUV color space. An inverse transform or color conversion algorithm may be applied to the data in the YUV color space to restore the original RGB color space.

[0050] This decision, the type of color space and / or the sampling format conversion may be signaled or identified in the set of encoded data, and in some cases may be included in the sequence parameter set (SPS), picture parameter set (PPS), slice header, or SAO syntax, in other cases this information may be part of other metadata or may be signaled elsewhere.

[0051] The inverse transform to return to the native color space can be derived by computing the inverse of the forward transform M. For example, the inverse transform M -1 is M -1 =adj(M) / det(M), where adj is the cofactor of matrix M and det is the determinant of M. In some cases, such an operation may reduce the overhead required to signal a return to a native color space.

[0052] The application of SAO in a non-native color space may in some cases replace existing native color space methods in HEVC or future video coding systems. In other cases, the ability to apply SAO to a non-native color space may be added as an additional option in HEVC or other video coding systems. In some cases, the conversion to various color spaces may be limited to only 4:4:4 content to simplify the computational requirements for the conversion, while in other cases the conversion may be extended to other color sampling cases by also allowing chroma samples to be up- and down-scaled within the color conversion process. The up- and down-scaling may be performed with simple calculations such as pixel duplication or decimation, or may include computationally intensive filters, starting from bilinear, to multi-tap, edge-adaptive, and bilateral algorithms, among others.

[0053] As per the current HEVC specification, one form of SAO is applied to one color sample (e.g., luma), but it may be desirable to apply another form of SAO to a different color sample (chroma u or chroma v). Each of the embodiments described herein may support applying various types of SAO non-uniformly and / or on a sample-by-sample basis to video data.

[0054] 4A shows an exemplary encoding method 400. In box 401, video data may be converted from a first color space to a second color space. The first color space may be a default or predetermined color space in which the video data is to be encoded. The second color space may be selected because it contains one or more color components that may be further enhanced with an offset applied in the second color space instead of the first color space.

[0055] Once the video data is converted to the second color space, at least one offset calculation criterion may be applied to the video data converted to the second color space, in box 402. Once an offset is calculated, the converted video data, including the calculated offset, may be converted back to the first color space, in box 403.

[0056] An identifier or other attribute of the second color space may then be included in, or otherwise signaled in, metadata associated with the video converted to the first color space to provide information about the conversion to the second color space for subsequent video processing functions 404.

[0057] 4B shows an example decoding method 410. In box 411, an identifier or other attribute of the second color space may then be received and / or extracted from metadata associated with the video converted to the first color space. The identifier may provide information regarding the conversion to the second color space for a video processing function. Based on the identifier received in box 411, one or more offset calculation criteria may be applied to the video data converted to the second color space.

[0058] Offset Interpolation As previously discussed, the existing band offset mode provided the ability to specify offsets for four consecutive bands out of 32 possible bands. However, in some instances it may be desirable to specify offsets for more than a limited set of four consecutive bands without necessarily increasing the overhead and / or the number of offsets signaled.

[0059] To achieve this, in some cases offset signaling may be allowed for non-contiguous bands. In some cases, the same set of four bands may be selected, but some or all of the bands may be selected to be non-adjacent. The offsets for these intermediate bands between non-adjacent bands may be interpolated using the offsets associated with the non-adjacent bands. The number of intermediate bands may be specified in parameters signaled in the SPS, PPS, slice header, SAO syntax, or other metadata associated with the encoded data.

[0060] In these cases where all four bands are evenly spaced such that there is an equal number of intermediate bands (parameter sao_intermediate_offset) between each of the four bands, the number of possible offsets may be equal to (4+3*sao_intermediate_offsets). If sao_intermediate_offsets is set to a value other than 0, then only the offsets of bands with band separation distance equal to parameter sao_intermediate_offsets, starting from the initial band at the first band position (parameter sao_band_position), may be signaled as signaled in the bitstream. Each of the other unsignaled intermediate bands may be interpolated using the signaled band offsets. The simplest method is to use bilinear interpolation and generate the offsets as follows: w=sao_intermediate_offsets+1; s=sao_band_position; for(k=0;k<4;k++) for(i=1;i <w;i++){ band_offset[s+4*k+i] = ((wi)*band_offset[s+4*k]+i*band_offset[s+4*(k+1)]+(w>>1)) / w; } }

[0061] Other, longer filters may be used in various instances. Additional offsets outside of this specified range may also be extrapolated based on the value of the offset within the specified range.

[0062] 5 illustrates an exemplary method 500 of an embodiment. In box 501, the range of possible amplitudes of values ​​associated with sampled video data may be subdivided into multiple bands. Each band may correspond to a particular subset of the overall amplitude range, such that each amplitude value in the overall range is within a single band.

[0063] Due to overhead limitations, existing systems could only specify offset values ​​for a limited contiguous number of these bands, such as only a set of four adjacent bands out of 32 bands. In one embodiment, it was only possible to apply the offset to this limited set of contiguous bands for which the offset was explicitly specified. In an alternative embodiment, it was also not possible to specify or apply an offset to bands that were not adjacent to another band for which an offset was specified.

[0064] An offset may be signaled for each of at least two non-adjacent bands in box 502. Thus, instead of requiring offsets to be signaled for a set of four contiguous bands that are adjacent to one another, e.g., bands 1, 2, 3, and 4, offsets may be signaled in box 502 for the same or different numbers of non-adjacent bands, e.g., bands 1, 5, 9, and 13.

[0065] At box 503, an offset may be interpolated for an intermediate band between the at least two non-adjacent bands for which offsets were signaled in box 502. The offset may be interpolated using the values ​​of the offsets for the at least two non-adjacent bands signaled in box 502. Any type of interpolation algorithm may be used, including but not limited to linear, bilinear, polynomial, and spline interpolation.

[0066] [Non-uniform band] In other cases, the samples may be non-uniformly distributed or have a varying range, where smaller changes may be more perceptible to the naked eye, for example as specified by the Weber-Fechner law. In these cases, the sample range need not be uniformly divided into evenly spaced bands. Instead, the bands may be divided using a logarithmic, exponential, or other non-linear function. For example, in some cases, the bands may be defined by the following function: f(x)=ceil(log2(x+1)), f(x)=ceil(log2((1< <bitDepth)-x)) f(x)=(x<=(1<<(bitDepth-1))?ceil(log2(x+1)):ceil(log2((1< <bitDepth)-x)) f(x)=round((2.0^(float(x) / float((1< <bitDepth)-1))*31))-31 f(x)=round((2.0^(float((1< <bitDepth)-x-1) / float((1<<bitDepth)-1))*31))-31

[0067] These and other functions may be used to create various bands with various numbers of samples within each band. In another embodiment, parameters may be provided where the number of bands is explicitly signaled and the number of samples associated with each respective band in the sequence. In some cases, the start of each band may be signaled explicitly or differently with an additional start parameter. In other cases, these methods provided in existing HEVC specifications may also be used to identify the bands being signaled.

[0068] Interpolation may be used to identify additional offsets beyond those explicitly signaled. Intermediate band offsets may be interpolated independent of their size, or a size parameter may be used to scale the interpolation result. In some cases, the creation process of the first band, or a particular band, may be signaled by parameters included in the SPS, PPS, slice level, or other metadata associated with the encoded data.

[0069] Bands may also be dynamically adjusted for each offset or coded macroblock, coding unit, or coding tree unit. However, this may require additional bandwidth and computational power to generate more complex bands. In some cases, instead of switching band partitioning processes for each macroblock, coding unit, or coding tree unit, various supported modes may be signaled, including various variants of band offset and / or edge offset modes. In addition, parameters such as sao_type_idx_luma and sao_type_idx_chroma indices may also be provided to further increase the number of supported modes.

[0070] FIG. 6 illustrates an exemplary method of an embodiment. At box 601, a range of possible amplitude values ​​of the sampled video data may be identified. At box 602, a non-linear operation may be applied to the identified range. The non-linear operation may subdivide the range of amplitude values ​​into non-uniform bands with some bands being wider and containing more values ​​than other bands. The non-linear operation may include any type of logic or function that produces a non-uniform output from which non-uniform bands may be generated. The non-linear operation may include, but is not limited to, non-linear functions such as exponential, logarithmic, or polynomial functions of at least degree two. At box 603, the amplitude range identified at box 601 may be divided into non-uniform bands based on the results of applying the non-linear operation to the amplitude range. At box 604, identifiers of the non-uniform bands may be signaled or otherwise included in metadata associated with the encoded video data so that the bands may be distinguished. In some cases, the identifiers may specify the start and / or end of each band. In other cases, the identifiers may identify the start of the first band and a formula or other criteria used to identify each of the bands. In other cases, the identifier may include other types of identifying information in which various non-uniform bands may be presented.

[0071] [Focused Edge Offset Mode] As discussed herein, in existing edge offset modes, the value of a given sample is compared to two of eight horizontally, vertically, or diagonally adjacent samples to partition the sample. Existing edge offset modes consider all samples equally without considering the relative magnitude of each of the samples. In some cases, the encoder may consider the magnitude of the samples in addition to the edge characteristics, which may improve focus on specific edges, objects, or areas that would benefit most from edge offsetting.

[0072] Focus on a particular edge, object, or area may be achieved by signaling an SAO band index parameter, such as the sao_band_position parameter provided in the band offset mode to indicate the start of the SAO offset band. This band index parameter may specify the band(s) for which the edge offset mode should be applied. In other words, a sample may first be checked to determine whether it belongs to a particular band. An edge index EdgeIdx criterion may then be applied to determine the appropriate offset only if the sample is first determined to belong to a particular band.

[0073] In some cases, a single band may be identified as a specific band based on either a uniform sampling scheme specified in the current HEVC specification or other non-uniform schemes such as those described herein. In other cases, additional bands including two or more consecutive bands may also be identified as specific bands with another parameter that specifies the additional number of bands to be processed. Each of the parameters may be signaled within metadata or SAO syntax associated with the encoded video data, including but not limited to SPS, PPS, slice headers. This extended edge offset mode may replace the existing edge offset mode or may be provided as an additional type of operating mode.

[0074] [System Overview] In addition, while HEVC applies SAO as an in-loop processing mechanism, one or more of the embodiments described herein may be applied as part of an in-loop SAO processing mechanism or as a codec-independent post-processing mechanism, such as HEVC. For those embodiments applied as a codec-independent post-processing mechanism, the SAO metadata may also be signaled within the codec using a transport mechanism, including but not limited to a Supplemental Enhancement Information (SEI) message, user-specified metadata in MPEG-2 systems, or other mechanisms. Additionally, embodiments of the present invention may be included in other codecs that may provide some SAO. These other codecs may include future codecs or extensions of HEVC, such as scalable or 3D / multiview extensions of HEVC.

[0075] FIG. 7 shows a simplified block diagram of an encoding system 700 of an embodiment of the present invention, including elements for encoding and decoding video data. The system 700 may include a subtractor 712, a transform unit 714, a quantizer 716, and an entropy coding unit 718. The subtractor 712 may receive an input motion compensation block from a source image and, depending on the prediction mode used, a predicted motion compensation block from a prediction unit 750. The subtractor 712 may subtract the predicted block from the input block to generate a block of residual pixels. If no prediction is performed, the subtractor 712 may simply output the input block unchanged. The transform unit 714 may convert the blocks it receives into an array of transform coefficients according to a spatial transform, typically a discrete cosine transform ("DCT") or a wavelet transform. The quantizer 716 may truncate the transform coefficients of each block according to a quantization parameter ("QP"). The QP value used for the truncation may be transmitted to the decoder in the channel. The entropy coding unit 718 may code the quantized coefficients according to an entropy coding algorithm, such as a variable length coding algorithm or a context-adaptive binary arithmetic coding algorithm. Additional metadata, including the messages, flags, and / or other information discussed above, may be added to or included in the coded data that may be output by the system 700.

[0076] System 700 may also include an inverse quantization unit 722, an inverse transform unit 724, an adder 726, a filter system 730, a buffer 740, and a prediction unit 750. The inverse quantization unit 722 may quantize the encoded video data according to the QP used by the quantizer 716. The inverse transform unit 724 may convert the requantized coefficients to the pixel domain. The adder 726 may add residual pixels output from the inverse transform unit 724 to the predicted motion data from the prediction unit 750. The summed output from the adder 726 may be output to the filtering system 730.

[0077] The filtering system 730 may include a deblocking filter 732, an intensity derivation unit 734, and a sample adaptive offset (SAO) filter 733. The filters in the filtering system may be applied to the reconstructed samples before they are written to the decoded image buffer 740 in the decoder loop. The deblocking filter 732 may apply deblocking filtering to restore the video data output from the summer 526 with the intensity provided by the intensity derivation unit 734. The intensity derivation unit 734 may derive the intensity value using any of the techniques described above. The SAO filter 733 may be configured to perform at least one of the offset functions described herein, and in some cases may perform various combinations of two or more of the offset functions described herein. The SAO filtering may be adaptively applied to all samples that meet certain conditions specified herein. The SAO may modify the decoded samples by conditionally adding an offset value to each sample based on a value in a lookup table sent by the encoder. For example, a partition index, which specifies the partition of each sample and the sample offset, may be coded in the bitstream by the entropy coder 718. In the decoding processor, the partition index and offset may be decoded by a corresponding decoder. The filtering system 730 may also include other types of filters, which are not shown in FIG. 7 merely to simplify the presentation of this embodiment of the invention.

[0078] A buffer 740 may store the reconstructed frame data as output by the filtering system 730. The reconstructed frame data may be stored for use as a reference frame during subsequent encoding of received blocks.

[0079] The prediction unit 750 may include a mode decision unit 752 and a motion estimator 754. The motion estimator 754 may estimate image motion between a source image to be encoded and a reference frame(s) stored in the buffer 740. The mode decision unit 752 may assign a prediction mode for encoding an input block and select a block from the buffer 740 to serve as a prediction reference for the input block. For example, the mode decision unit 752 may select a prediction mode (e.g., unidirectional predictive P-coding or bidirectional predictive B-coding) to be used and generate a motion vector for use in such predictive encoding. In this regard, the prediction unit 750 may retrieve buffered block data of the selected reference frame from the buffer 740.

[0080] 8 is a simplified block diagram of a decoder 800 according to an embodiment of the present invention. The decoder 800 may include an entropy decoder 818, an inverse quantizer 816, an inverse transform unit 814, an adder 812, an intensity derivation unit 834, a deblocking filter 832, and an SAO filter 833. The decoder 800 may further include a prediction unit 850 and a buffer 840.

[0081] The entropy decoder 818 may decode data received from the channel (or via a channel buffer, not shown) according to an entropy decoding algorithm, such as, for example, a variable length decoding algorithm or a context-adaptive binary arithmetic decoding. The inverse quantizer 816 may multiply the coefficient data received from the entropy decoder 818 by a quantization parameter. The inverse transform unit 814 may convert the dequantized coefficient data received from the inverse quantizer 816 into pixel data. The inverse transform unit 814 may perform an inverse of the transform operation (e.g., DCT or wavelet transform) performed by the transform unit of the encoder. The adder 812 may add pixel-by-pixel the pixel data obtained by the inverse transform unit 814 to the predicted pixel data obtained from the prediction unit 850. The adder 812 may output reconstructed data from which a reconstructed frame may be constructed and rendered to a display device (not shown). The frame buffer 840 may accumulate the decoded data and construct a reconstructed frame from the decoded data. The intensity derivation unit 834 may derive the intensity value using any of the techniques discussed above. The deblocking filter 832 may perform a deblocking filtering operation on the reconstructed frame data with the intensity provided by the intensity derivation unit 834 according to the channel-identified filtering parameters. The SAO filter 833 may be configured to perform at least one of the offset functions described herein, and in some cases may perform different combinations of two or more of the offset functions described herein. The SAO filtering may be adaptively applied to all samples that meet certain conditions specified herein. The SAO may modify the decoded samples by conditionally adding an offset value to each sample based on a value in a lookup table transmitted by the encoder. For example, a partition index that specifies the partition of each sample and the offset of the sample may be read and decoded from the bitstream.

[0082] 9 illustrates a multi-terminal system 900 suitable for use with embodiments of the present invention. The system 900 may include at least two terminals 910, 920 interconnected via a channel 950. In the case of one-way data transmission, a first terminal 910 may encode video data at a local location for transmission to another terminal 920 via the channel 950. The second terminal 920 may receive the other terminal's encoded video data from the channel 950, decode the encoded data, and display the recovered video data. One-way data transmission is well known from media streaming applications, etc.

[0083] 9 also shows a second pair of terminals 930, 940 provided to support two-way transmission of encoded video, such as may occur during a video conference. For two-way data transmission, each terminal 930, 940 may encode video data captured at a local location for transmission to the other terminal over channel 950. Each terminal 930, 940 may receive encoded video data transmitted by the other terminal, decode the encoded data, and display the recovered video data on a local display device.

[0084] Although FIG. 9 illustrates terminals 910-940 as servers, personal computers, and smartphones, the principles of the invention are not so limited. Embodiments of the invention find application in laptop computers, tablet computers, media players, and / or dedicated videoconferencing equipment. Each terminal 910-940 may include a processor and a memory. The processor may include devices such as a central processing unit, a microcontroller, or other integrated circuits configured to execute instructions stored in the memory. The memory may include any form of non-transitory media capable of storing instructions, including, but not limited to, RAM, ROM, hard drives, flash drives, and optical disks. Channel 950 represents any number of networks, including, for example, wireline and / or wireless communication networks, that convey encoded video data between terminals 910-940. The communication networks may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. In another embodiment, channel 950 may be provided as a storage device, for example, an electrical, optical, or magnetic storage device. For the purposes of this discussion, the architecture and topology of channel 950 is not important to the operation of the present invention.

[0085] The above discussion has described the operation of embodiments of the present invention in the context of a codec. Generally, the codec is provided as an electronic device. The codec may be embodied in an integrated circuit, such as an application specific integrated circuit, a field programmable gate array, and / or a digital signal processor. Alternatively, the codec may be embodied in a computer program that runs on a personal computer, a notebook computer, or a computer server. Similarly, the decoder may be embodied in an integrated circuit, such as an application specific integrated circuit, a field programmable gate array, and / or a digital signal processor, or may be embodied in a computer program that runs on a personal computer, a notebook computer, or a computer server. Decoders are commonly implemented in consumer electronic devices such as game systems, DVD players, portable media players, and the like, and decoders may be implemented in consumer software applications such as video games, browser-based media players, and the like. These elements may be provided as hybrid systems that distribute functionality across dedicated hardware elements and programmed general-purpose processors, if desired.

[0086] The foregoing description has been presented for purposes of illustration and description. It is not exhaustive and does not limit the embodiments of the invention to the precise form disclosed. Modifications and variations are possible in light of the above teachings and may be acquired from practical embodiments consistent with the invention. Unless otherwise stated herein, any of the methods may be practiced in any combination. For example, the method of signaling and the method of deriving a quantization factor for partitioning may be practiced in any combination.

Claims

1. 1. A method for decoding a video, comprising: Decoding the encoded video stream to generate reconstructed pixel data in a first color space and indices in a second color space for sample adaptive offset (SAO) filtering; converting the reconstructed pixel data from the first color space to the second color space in response to the index of the second color space; SAO filtering the reconstructed pixel data in the second color space; Transforming the SAO filtered and reconstructed pixel data from the second color space to the first color space.

23. A method comprising:

2. When the SAO filtered and reconstructed pixel data in the first color space serves as a prediction reference, predicting a portion of pixel data of the encoded video stream from the SAO filtered and reconstructed pixel data in the first color space; 2. The method of claim 1, further comprising:

3. The SAO filtering step includes: Classifying the pixel data; applying an offset to the pixel data based on the classification; 2. The method of claim 1, comprising:

4. the second color space includes luminance and chroma components; The method comprises: Downscale the chroma component, wherein the SAO filtering comprises SAO filtering the downscaled chroma component; upscaling the SAO filtered reconstructed pixel data from the second color space; wherein converting the SAO filtered and reconstructed pixel data to the first color space includes converting the upscaled and SAO filtered and reconstructed pixel data.

2. The method of claim 1, comprising:

5. The indication of the second color space is included in a syntax element in a picture parameter set (PPS) layer of the encoded video stream.

2. The method of claim 1 .

6. the second color space includes luminance and chroma components; The SAO filtering of the reconstructed pixel data includes applying a first type of SAO filtering to a luma component and applying a second type of SAO filtering, different from the first type of SAO filtering, to a chroma component.

2. The method of claim 1, comprising:

7. A computer-readable storage medium containing instructions that, when executed by a processor, cause the processor to: Decoding the encoded video stream to generate reconstructed pixel data in a first color space and indices in a second color space for sample adaptive offset (SAO) filtering; Transforming the reconstructed pixel data from the first color space to the second color space in response to the index of the second color space; SAO filtering the reconstructed pixel data in the second color space; Transforming the SAO filtered and reconstructed pixel data from the second color space to the first color space. A medium characterized by:

8. When the SAO filtered and reconstructed pixel data in the first color space serves as a prediction reference, The instructions further cause the processor to predict a portion of pixel data of the encoded video stream from the SAO filtered reconstructed pixel data in the first color space.

8. The medium according to claim 7.

9. The SAO filtering step includes: Classifying the pixel data; applying an offset to the pixel data based on the classification; The medium of claim 7, comprising:

10. the second color space includes luminance and chroma components; The instructions further include for the processor to: Downscale the saturation component, wherein the SAO filtering comprises SAO filtering the downscaled chroma component; upscaling the SAO filtered reconstructed pixel data from the second color space; wherein converting the SAO filtered and reconstructed pixel data to the first color space includes converting the upscaled and SAO filtered and reconstructed pixel data.

8. The medium according to claim 7.

11. The indication of the second color space is included in a syntax element in a picture parameter set (PPS) layer of the encoded video stream.

8. The medium according to claim 7.

12. the second color space includes luminance and chroma components; The SAO filtering of the reconstructed pixel data includes applying a first type of SAO filtering to a luma component and applying a second type of SAO filtering, different from the first type of SAO filtering, to a chroma component. The medium of claim 7, comprising:

13. a video decoder including a sample adaptive offset (SAO) filter; A processor; and a memory containing instructions that, when executed by the processor, cause the processor to: processing the encoded video stream to generate reconstructed pixel data in a first color space and indices of a second color space for sample adaptive offset (SAO) filtering; Transforming the reconstructed pixel data from the first color space to the second color space in response to the index of the second color space; SAO filtering the reconstructed pixel data in the second color space; Transforming the SAO filtered and reconstructed pixel data from the second color space to the first color space. A system characterized by:

14. When the SAO filtered and reconstructed pixel data in the first color space serves as a prediction reference, The instructions further cause the processor to predict a portion of pixel data of the encoded video stream from the SAO filtered reconstructed pixel data in the first color space.

14. The system of claim 13.

15. The SAO filtering step includes: Classifying the pixel data; applying an offset to the pixel data based on the classification; 14. The system of claim 13, comprising:

16. the second color space includes luminance and chroma components; The instructions further include for the processor to: Downscale the saturation component, wherein the SAO filtering comprises SAO filtering the downscaled chroma component; upscaling the SAO filtered reconstructed pixel data from the second color space; wherein converting the SAO filtered and reconstructed pixel data to the first color space includes converting the upscaled and SAO filtered and reconstructed pixel data.

14. The system of claim 13.

17. The indication of the second color space is included in a syntax element in a picture parameter set (PPS) layer of the encoded video stream.

14. The system of claim 13.

18. the second color space includes luminance and chroma components; The SAO filtering of the reconstructed pixel data includes applying a first type of SAO filtering to a luma component and applying a second type of SAO filtering, different from the first type of SAO filtering, to a chroma component.

14. The system of claim 13, comprising:

19. 1. A method for decoding a video, comprising: Decoding the encoded video stream to generate reconstructed pixel data in a first color space and indices in a second color space for sample adaptive offset (SAO) filtering; converting the reconstructed pixel data from the first color space to the second color space in response to the index of the second color space; SAO filtering the reconstructed pixel data in the second color space; A method comprising:

20. When the SAO filtered and reconstructed pixel data in the first color space serves as a prediction reference, predicting a portion of pixel data of the encoded video stream from the SAO filtered and reconstructed pixel data in the first color space; 20. The method of claim 19 further comprising:

21. the second color space includes luminance and chroma components; The SAO filtering of the reconstructed pixel data includes applying a first type of SAO filtering to a luma component and applying a second type of SAO filtering, different from the first type of SAO filtering, to a chroma component.

20. The method of claim 19, comprising:

Citation Information

Patent Citations

  • Image processing device and method

    JP2013012845A

  • Method and apparatus for improved in-loop filtering

    WO2012142966A1

  • Offset decoding device, offset encoding device, image filter device, and data structure

    WO2012176910A1

  • Cross-plane filtering for chroma signal enhancement in video coding

    WO2014052731A2