Patent Description:
Most modern video coding standards employ various coding modes to efficiently reduce correlations in the spatial and temporal domains. In the International Organization for Standardization/International Electrotechnical Commission (ISO/IEC) Moving Picture Experts Group-<NUM> (MPEG-<NUM>) Part <NUM> Advanced Video Coding (AVC) Standard/International Telecommunication Union, Telecommunication Sector (ITU-T) H. <NUM> Recommendation (hereinafter the "MPEG-<NUM> AVC Standard"), a picture can be either intra or inter coded. In intra coded pictures, macroblocks (16x16) are coded in intra modes while exploiting spatial correlations in the picture. For intra luma coding, intra modes can be classified into the following three partition types: INTRA4x4; INTRA8x8; and INTRA16x16. INTRA4x4 uses a 4x4 discrete cosine transform (DCT). INTRA8x8 uses 8x8 transforms. INTRA16x16 uses a 4x4 integer DCT cascaded with a 4x4 direct current (DC) Hadamard transform. For intra chroma coding, only one partition type is allowed. Each 8x8 chroma component of an intra coded macroblock is predicted with <NUM> intra prediction modes and uses a 4x4 integer DCT cascaded with a 2x2 DC Hadamard transform. The chroma partition type is fixed no matter what the luma partition type is. <CIT>) exemplifies such a fixed chroma partition type implementation in the prior art.

The MPEG-<NUM> AVC Standard uses intra modes to exploit spatial correlations in the picture. For intra luma coding, intra modes can be classified into the following three types: INTRA4x4; INTRA8x8; and INTRA16x16. INTRA4x4 and INTRA8x8 support <NUM> intra prediction modes and INTRA16x16 supports <NUM> intra prediction modes. Turning to <FIG>, INTRA4x4 and INTRA8x8 prediction modes are indicated generally by the reference numeral <NUM>. In <FIG>, the reference numeral <NUM> indicates a vertical prediction mode, the reference numeral <NUM> indicates a horizontal prediction mode, the reference numeral <NUM> indicates a diagonal-down/left prediction mode, the reference numeral <NUM> indicates a diagonal-down/right prediction mode, the reference numeral <NUM> indicates a vertical-right prediction mode, the reference numeral <NUM> indicates a horizontal-down prediction mode, the reference numeral <NUM> indicates a vertical-left prediction mode, and the reference numeral <NUM> indicates a horizontal-up prediction mode. DC mode, which is part of the INTRA4x4 and INTRA8x8 prediction modes, is not shown. Turning to <FIG>, INTRA16x16 prediction modes are indicated generally by the reference numeral <NUM>. In <FIG>, the reference numeral <NUM> indicates a vertical prediction mode, the reference numeral <NUM> indicates a horizontal prediction mode, and the reference numeral <NUM> indicates a plane prediction mode. DC mode, which is part of the INTRA16x16 prediction modes, is not shown.

Since the basic coding unit in the MPEG-<NUM> AVC Standard is a macroblock, that is, the size is 16x16, the partition types inside a macroblock are either all 16x16, 8x8 or 4x4. There are no mixed partition types inside a macroblock, as shown in <FIG>. Turning to <FIG>, motion partitions for use in intra 16x16 blocks <NUM> are indicated generally by the reference numeral <NUM>. The partitions include 16x16, 8x8, and 4x4 partitions.

As noted above, INTRA4x4 uses a 4x4 DCT transform, INTRA8x8 uses 8x8 transforms, and INTRA16x16 uses cascaded 4x4 transforms. For signaling, INTRA4x4 and INTRA8x8 share the same macroblock type (mb_type) <NUM> and they are differentiated by a transform size flag (transform_8x8_size_flag). Then the choice of intra prediction mode in INTRA4x4 or INTRA8x8 is signaled by the most probably mode possibly with a remaining mode if necessary. For INTRA16x16, all the intra prediction modes along with the coded block pattern (cbp) type are signaled in mb_type, which uses an mb_type value from <NUM> to <NUM>. For intra chroma coding, each 8x8 chroma component of an intra coded macroblock is predicted using <NUM> intra prediction modes and using a 4x4 integer DCT cascaded with a 2x2 DC Hadamard transform. Intra chroma coding is fixed independent of a luma partition type. Intra chroma coding does not adapt to the content, thus reducing the fidelity of chroma coding.

In the <NUM>:<NUM>:<NUM> case in the MPEG-<NUM> AVC Standard, intra luma partition types and prediction modes can be used for all three color components. Common mode and independent mode are supported. In common mode, all three components share the exact same information as the luma component, including partition type and prediction modes. In independent mode, each of the three color components are coded as a separate plane, using the same coding method as the luma plane.

In a first prior art approach, the prediction block unit is extended for intra coding by increasing the number of intra direction modes to more than <NUM>. However, in the first prior art approach, there is no mentioning or contemplation for the chroma case. In a second prior art approach, the chroma partition type is fixed to be Chroma_8x8, the same as in the MPEG-<NUM> AVC Standard. For intra prediction modes and transforms, the chroma partition type is kept the same as luma intra_16x16, intra_8x8 and intra_4x4 in the MPEG-<NUM> AVC Standard, i.e., using <NUM> chroma prediction modes and a cascaded 4x4 transform. For intra_32x32, chroma uses <NUM> chroma prediction modes and a cascaded 8x8 transform, as shown in TABLE <NUM>. That is, TABLE <NUM> shows prediction partition sizes and transforms used for each intra prediction mode for the <NUM>:<NUM>:<NUM> format. The scheme used in the second prior art approach does have several disadvantages. One disadvantage of the second prior art approach is that the chroma coding partition type is fixed for all the luma partition types. Another disadvantage of the second prior art approach is that the selected coding mode or transform for chroma coding is not the best. Yet another disadvantage of the second prior art approach is that the chroma coding has little flexibility.

These and other drawbacks and disadvantages of the prior art are addressed by the present principles, which are directed to apparatus and methods for chroma encoding and decoding.

According to one aspect, there is provided an apparatus. The apparatus includes an encoder for encoding picture data for at least a block in a picture. Multiple partition types are supported for intra chroma coding of the block. The multiple partition types include a set of chroma partition types and a set of luma partition types. The set of chroma partition types are different than the set of luma partition types.

According to another aspect, there is provided a method in a video encoder. The method includes encoding picture data for at least a block in a picture. Multiple partition types are supported for intra chroma coding of the block. The multiple partition types include a set of chroma partition types and a set of luma partition types. The set of chroma partition types are different than the set of luma partition types.

According to yet another aspect, there is provided an apparatus. The apparatus includes a decoder for decoding picture data for at least a block in a picture. Multiple partition types are supported for intra chroma decoding of the block. The multiple partition types include a set of chroma partition types and a set of luma partition types. The set of chroma partition types are different than the set of luma partition types.

According to a further aspect, there is provided a method in a video decoder. The method includes decoding picture data for at least a block in a picture. Multiple partition types are supported for intra chroma decoding of the block. The multiple partition types include a set of chroma partition types and a set of luma partition types. The set of chroma partition types are different than the set of luma partition types.

These and other aspects, features and advantages will become apparent from the following detailed description of exemplary embodiments, which is to be read in connection with the accompanying drawings.

The present principles may be better understood in accordance with the following exemplary figures, in which:.

The present principles are directed to apparatus and methods for intra chroma encoding and decoding.

It will be appreciated by those skilled in the art that the block diagrams presented herein represent conceptual views of illustrative circuitry embodying the present principles. Similarly, it will be appreciated that any flow charts, flow diagrams, state transition diagrams, pseudocode, and the like represent various processes which may be substantially represented in computer readable media and so executed by a computer or processor, whether or not such computer or processor is explicitly shown.

The functions of the various elements shown in the figures may be provided through the use of dedicated hardware as well as hardware capable of executing software in association with appropriate software. Moreover, explicit use of the term "processor" or "controller" should not be construed to refer exclusively to hardware capable of executing software, and may implicitly include, without limitation, digital signal processor ("DSP") hardware, read-only memory ("ROM") for storing software, random access memory ("RAM"), and non-volatile storage.

In the claims hereof, any element expressed as a means for performing a specified function is intended to encompass any way of performing that function including, for example, a) a combination of circuit elements that performs that function or b) software in any form, including, therefore, firmware, microcode or the like, combined with appropriate circuitry for executing that software to perform the function. The present principles as defined by such claims reside in the fact that the functionalities provided by the various recited means are combined and brought together in the manner which the claims call for. It is thus regarded that any means that can provide those functionalities are equivalent to those shown herein.

Reference in the specification to "one embodiment" or "an embodiment" of the present principles, as well as other variations thereof, means that a particular feature, structure, characteristic, and so forth described in connection with the embodiment is included in at least one embodiment of the present principles. Thus, the appearances of the phrase "in one embodiment" or "in an embodiment", as well any other variations, appearing in various places throughout the specification are not necessarily all referring to the same embodiment.

It is to be appreciated that the use of any of the following "/", "and/or", and "at least one of', for example, in the cases of "A/B", "A and/or B" and "at least one of A and B", is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of both options (A and B). As a further example, in the cases of "A, B, and/or C" and "at least one of A, B, and C", such phrasing is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of the third listed option (C) only, or the selection of the first and the second listed options (A and B) only, or the selection of the first and third listed options (A and C) only, or the selection of the second and third listed options (B and C) only, or the selection of all three options (A and B and C). This may be extended, as readily apparent by one of ordinary skill in this and related arts, for as many items listed.

Moreover, as used herein, the words "picture" and "image" are used interchangeably and refer to a still image or a picture from a video sequence. As is known, a picture may be a frame or a field.

Further, as used herein, the word "signal" refers to indicating something to a corresponding decoder. For example, the encoder may signal a particular partition type and/or partition mode for chroma coding in order to make the decoder aware of which particular partition type and/or partition mode was used on the encoder side. In this way, the same function may be used at both the encoder side and the decoder side. Thus, for example, an encoder may transmit a particular partition type and/or partition mode to the decoder so that the decoder may use the same particular partition type and/or partition mode or, if the decoder already has the particular partition type and/or partition mode as well as others, then signaling may be used (without transmitting) to simply allow the decoder to know and select the particular partition type and/or partition mode. By avoiding transmission of any actual partition types and/or partition modes, a bit savings may be realized. It is to be appreciated that signaling may be accomplished in a variety of ways. For example, one or more syntax elements, flags, and so forth may be used to signal information to a corresponding decoder.

Also, as used herein, the word "superblock" refers to one or more macroblocks.

Additionally, as used herein, the phrase "multiple partition types are supported for intra chroma coding" refers to the case where the partition type for intra chroma coding is not fixed to one particular partition type, but rather a selection is made with respect to a set of multiple partition types for intra chroma coding and where the set of multiple partition types for intra chroma coding differs from a set of multiple partition types of intra luma coding that is also available for coding.

Moreover, it is to be appreciated that while one or more embodiments of the present principles are described herein with respect to the MPEG-<NUM> AVC Standard, the present principles are not limited to solely this standard and, thus, may be utilized with respect to other video coding standards, recommendations, and extensions thereof, including extensions of the MPEG-<NUM> AVC standard.

Turning to <FIG>, an exemplary video encoder to which the present principles may be applied is indicated generally by the reference numeral <NUM>.

The video encoder <NUM> includes a frame ordering buffer <NUM> having an output in signal communication with a non-inverting input of a combiner <NUM>. An output of the combiner <NUM> is connected in signal communication with a first input of a transformer and quantizer <NUM>. An output of the transformer and quantizer <NUM> is connected in signal communication with a first input of an entropy coder <NUM> and a first input of an inverse transformer and inverse quantizer <NUM>. An output of the entropy coder <NUM> is connected in signal communication with a first non-inverting input of a combiner <NUM>. An output of the combiner <NUM> is connected in signal communication with a first input of an output buffer <NUM>.

A first output of an encoder controller <NUM> is connected in signal communication with a second input of the frame ordering buffer <NUM>, a second input of the inverse transformer and inverse quantizer <NUM>, an input of a picture-type decision module <NUM>, a first input of a macroblock-type (MB-type) decision module <NUM>, a second input of an intra prediction module with multi-partition support for chroma coding <NUM>, a second input of a deblocking filter <NUM>, a first input of a motion compensator <NUM>, a first input of a motion estimator <NUM>, and a second input of a reference picture buffer <NUM>.

A second output of the encoder controller <NUM> is connected in signal communication with a first input of a Supplemental Enhancement Information (SEI) inserter <NUM>, a second input of the transformer and quantizer <NUM>, a second input of the entropy coder <NUM>, a second input of the output buffer <NUM>, and an input of the Sequence Parameter Set (SPS) and Picture Parameter Set (PPS) inserter <NUM>.

An output of the SEI inserter <NUM> is connected in signal communication with a second non-inverting input of the combiner <NUM>.

A first output of the picture-type decision module <NUM> is connected in signal communication with a third input of the frame ordering buffer <NUM>. A second output of the picture-type decision module <NUM> is connected in signal communication with a second input of a macroblock-type decision module <NUM>.

An output of the Sequence Parameter Set (SPS) and Picture Parameter Set (PPS) inserter <NUM> is connected in signal communication with a third non-inverting input of the combiner <NUM>.

An output of the inverse quantizer and inverse transformer <NUM> is connected in signal communication with a first non-inverting input of a combiner <NUM>. An output of the combiner <NUM> is connected in signal communication with a first input of the intra prediction module with multi-partition support for chroma coding <NUM> and a first input of the deblocking filter <NUM>. An output of the deblocking filter <NUM> is connected in signal communication with a first input of a reference picture buffer <NUM>. An output of the reference picture buffer <NUM> is connected in signal communication with a second input of the motion estimator <NUM> and a third input of the motion compensator <NUM>. A first output of the motion estimator <NUM> is connected in signal communication with a second input of the motion compensator <NUM>. A second output of the motion estimator <NUM> is connected in signal communication with a third input of the entropy coder <NUM>.

An output of the motion compensator <NUM> is connected in signal communication with a first input of a switch <NUM>. An output of the intra prediction module with multi-partition support for chroma coding <NUM> is connected in signal communication with a second input of the switch <NUM>. An output of the macroblock-type decision module <NUM> is connected in signal communication with a third input of the switch <NUM>. The third input of the switch <NUM> determines whether or not the "data" input of the switch (as compared to the control input, i.e., the third input) is to be provided by the motion compensator <NUM> or the intra prediction module with multi-partition support for chroma coding <NUM>. The output of the switch <NUM> is connected in signal communication with a second non-inverting input of the combiner <NUM> and an inverting input of the combiner <NUM>.

A first input of the frame ordering buffer <NUM> and an input of the encoder controller <NUM> are available as inputs of the encoder <NUM>, for receiving an input picture <NUM>. Moreover, a second input of the Supplemental Enhancement Information (SEI) inserter <NUM> is available as an input of the encoder <NUM>, for receiving metadata. An output of the output buffer <NUM> is available as an output of the encoder <NUM>, for outputting a bitstream.

Turning to <FIG>, an exemplary video is indicated generally by the reference numeral <NUM>.

The video decoder <NUM> includes an input buffer <NUM> having an output connected in signal communication with a first input of an entropy decoder <NUM>. A first output of the entropy decoder <NUM> is connected in signal communication with a first input of an inverse transformer and inverse quantizer <NUM>. An output of the inverse transformer and inverse quantizer <NUM> is connected in signal communication with a second non-inverting input of a combiner <NUM>. An output of the combiner <NUM> is connected in signal communication with a second input of a deblocking filter <NUM> and a first input of an intra prediction module with multi-partition support for chroma decoding <NUM>. A second output of the deblocking filter <NUM> is connected in signal communication with a first input of a reference picture buffer <NUM>. An output of the reference picture buffer <NUM> is connected in signal communication with a second input of a motion compensator <NUM>.

A second output of the entropy decoder <NUM> is connected in signal communication with a third input of the motion compensator <NUM>, a first input of the deblocking filter <NUM>, and a third input of the intra predictor with multi-partition support for chroma decoding <NUM>. A third output of the entropy decoder <NUM> is connected in signal communication with an input of a decoder controller <NUM>. A first output of the decoder controller <NUM> is connected in signal communication with a second input of the entropy decoder <NUM>. A second output of the decoder controller <NUM> is connected in signal communication with a second input of the inverse transformer and inverse quantizer <NUM>. A third output of the decoder controller <NUM> is connected in signal communication with a third input of the deblocking filter <NUM>. A fourth output of the decoder controller <NUM> is connected in signal communication with a second input of the intra prediction module with multi-partition support for chroma decoding <NUM>, a first input of the motion compensator <NUM>, and a second input of the reference picture buffer <NUM>.

An output of the motion compensator <NUM> is connected in signal communication with a first input of a switch <NUM>. An output of the intra prediction module with multi-partition support for chroma decoding <NUM> is connected in signal communication with a second input of the switch <NUM>. An output of the switch <NUM> is connected in signal communication with a first non-inverting input of the combiner <NUM>.

An input of the input buffer <NUM> is available as an input of the decoder <NUM>, for receiving an input bitstream. A first output of the deblocking filter <NUM> is available as an output of the decoder <NUM>, for outputting an output picture.

With respect to encoder <NUM>, intra predictor with multi-partition support for chroma coding <NUM> is configured to perform improved intra chroma coding in accordance with one or more embodiments of the present principles. With respect to decoder <NUM>, intra predictor with multi-partition support for chroma decoding <NUM> is configured to perform improved intra chroma decoding in accordance with one or more embodiments of the present principles.

As noted above, the present principles are directed to improved intra chroma coding and decoding. Moreover, as noted above with respect to the prior art, only one partition type is allowed for intra chroma coding. Each 8x8 chroma component of an intra coded macroblock is predicted with <NUM> intra prediction modes and uses a 4x4 integer DCT cascaded with a 2x2 DC Hadamard transform. The chroma partition type is fixed no matter what the luma partition type is. Therefore, we have recognized an opportunity for improvement, and have developed an improved coding efficiency approach for intra chroma coding. One or more embodiments of the present principles are particularly effective for large intra partition types.

As noted above, although one or more embodiments may refer to the MPEG-<NUM> AVC Standard for the sake of illustration, it is to be appreciated that the present principles are not limited solely to the same and, thus, may be used with other video coding standards, recommendations, extensions thereof, and so forth, while maintaining the spirit of the present principles. Moreover, it is to be appreciated that although one or more embodiments may be described with respect to the <NUM>:<NUM>:<NUM> format of the MPEG-<NUM> AVC Standard for the sake of illustration, the present principles are not limited solely to the preceding and, thus, may be applied to other formats including, but not limited to, the <NUM>:<NUM>:<NUM> or <NUM>:<NUM>:<NUM> formats of the MPEG-<NUM> AVC Standard or other formats of other standards, recommendations, and/or extensions. Reather, a particular aspect common to the embodiments involves the enablement of multiple partition types for intra chroma coding.

In accordance with a first exemplary method, also interchangeably referred to herein as Method <NUM>, the chroma partition type is determined by luma partition type. However, unlike the second prior art approach, the chroma partition type is aligned with the luma partition type for a predefined set of partition types. For example, if the luma partition type is 8x8, then the chroma partition type for the <NUM>:<NUM>:<NUM> format will be 4x4 instead of 8x8 chroma as is done in the second prior art approach. This is because the size of chroma is ½ of luma. With regard to the transform, for each chroma partition type, we select the largest-size available transform that matches the partition type from a predefined transform set. If the largest-size available transform is smaller than the partition type, then we can apply a Hadamard transform on the DC coefficients which we generally call a cascaded transform. We do not put any constraint on the luma and chroma intra prediction modes inside the partition type. The luma and chroma intra prediction modes can be the same or different. As for the signaling, we only signal the luma partition type, but not the chroma partition type, since the chroma partition type is decided based on the luma partition type. The luma partition type can be absolutely coded or differentially coded from the neighboring block.

We now described an exemplary embodiment We presume the superblock size is 32x32. We define Luma_Partition_Type = {Luma_32x32, Luma_16x16, Luma_8x8, Luma_4x4}, Chroma_Partition_Type = {Chroma_16x16, Chroma_8x8, Chroma_4x4}, and DCT_Transform_Size = {16x16, 8x8, 4x4}. Then, based on the present principles, we set our basic coding block unit to be 8x8, with the detailed mapping between luma_partition_type and chroma_partition_type and the corresponding transform shown in TABLE <NUM>. That is, TABLE <NUM> shows prediction partition size and transforms used for intra coding for the <NUM>:<NUM>:<NUM> format. When performing encoding inside a superblock, we loop over all luma partition types, and perform a mode decision on the luma component and select the best luma_partition_type and luma intra prediction mode. Then the chroma partition type is decided based on the best luma_partition_type and the best chroma intra prediction mode is selected. We only signal luma_partition_type, luma mode and chroma mode. At the decoder, we only parse luma_partition_type, luma mode and chroma mode.

Turning to <FIG>, an exemplary method for intra chroma coding is indicated generally by the reference numeral <NUM>. The method <NUM> corresponds to one implementation of Embodiment <NUM> described above. The method <NUM> includes a start block <NUM> that passes control to a function block <NUM>. The function block <NUM> performs an encoding setup, and passes control to a loop limit block <NUM>. The loop limit block <NUM> begins a loop over each superblock, and passes control to a loop limit block <NUM>. The loop limit block <NUM> begins a loop over luma partitions, and passes control to a function block <NUM>. The function block <NUM> selects the best luma mode (based on, e.g., a rate-distortion cost), and passes control to a loop limit block <NUM>. The loop limit block <NUM> ends the loop over the luma partitions, and passes control to a function block <NUM>. The function block <NUM> sets the best luma partition and luma mode (based on, e.g., a rate-distortion cost), and passes control to a function block <NUM>. The function block <NUM> sets the best chroma partition based on the best luma partition, and passes control to a function block <NUM>. The function block <NUM> selects the best chroma mode, and passes control to a function block <NUM>. The function block <NUM> encodes the luma partition, the luma mode, and the chroma mode, and passes control to a loop limit block <NUM>. The loop limit block <NUM> ends the loop over the superblocks, and passes control to an end block <NUM>. With respect to function block <NUM>, the luma partition may be absolutely coded or may be differentially coded from one or more neighboring blocks.

Turning to <FIG>, an exemplary method for intra chroma decoding is indicated generally by the reference numeral <NUM>. The method <NUM> corresponds to one implementation of Embodiment <NUM> described above. The method <NUM> includes a start block <NUM> that passes control to a loop limit block <NUM>. The loop limit block <NUM> begins a loop over each superblock, and passes control to a function block <NUM>. The function block <NUM> parses a luma partition, and passes control to a function block <NUM>. The function block <NUM> sets a chroma partition (based on the luma partition parsed by function block <NUM>), and passes control to a function block <NUM>. The function block <NUM> parses a luma mode, and passes control to a function block <NUM>. The function block <NUM> parses a chroma mode, and passes control to a function block <NUM>. The function block <NUM> decodes one superblock (using the items parsed/set by function blocks <NUM>, <NUM>, <NUM>, and <NUM>), and passes control to a loop limit block <NUM>. The loop limit block <NUM> ends the loop over the superblocks, and passes control to an end block <NUM>.

TABLE <NUM> shows exemplary macroblock layer syntax for Embodiment <NUM>, in accordance with an embodiment of the present principles.

The semantics of the syntax elements of TABLE <NUM> are as follows:.

In a second method, also interchangeably referred to herein as Method <NUM>, intra luma partition type and chroma partition type are independently coded inside a macroblock (MB) or a superblock. The difference from <NUM>:<NUM>:<NUM> separate mode in the MPEG-<NUM> AVC Standard is that the decision is made on a macroblock/superblock basis instead of slice basis and luma and chroma can have different intra prediction modes. The difference from the MPEG-<NUM> AVC Standard for other profiles is that the MPEG-<NUM> AVC Standard only allows one chroma partition type, but in our embodiment, we allow a set of chroma partition types. The transform selection rule is the same as per Method <NUM>. For the signaling, we signal the luma partition type and the chroma partition type, as well as the luma modes and the chroma modes. The luma partition type and chroma partition type can be absolutely coded or differentially coded from a neighboring block. Alternatively, the chroma partition type can be differentially coded from the luma partition type. Chroma can use the same or a different entropy coding engine as luma.

We now described an exemplary embodiment. We presume the superblock size is 32x32. We define Luma_Partition_Type = {Luma_32x32, Luma_16x16, Luma_8x8, Luma_4x4}, Chroma_Partition_Type = {Chroma_16x16, Chroma_8x8, Chroma_4x4}, and DCT_Transform_Size = {16x16, 8x8, 4x4}. When performing encoding inside a superblock, we encode the luma component first, trying all possible luma partition types and corresponding prediction modes, and then select the best luma partition type and mode. Then we encode the chroma components, trying all possible chroma partition types and corresponding prediction modes, and then select the best chroma partition type and mode. We encode both luma and chroma partition types. At the decoder side, we parse the syntax of both the luma and chroma partition types.

Turning to <FIG>, another exemplary method for intra chroma coding is indicated generally by the reference numeral <NUM>. The method <NUM> corresponds to one implementation of Embodiment <NUM> described above. The method <NUM> includes a start block <NUM> that passes control to a function block <NUM>. The function block <NUM> performs an encoding setup, and passes control to a loop limit block <NUM>. The function block <NUM> performs a loop over each superblock, and passes control to a loop limit block <NUM>. The loop limit block <NUM> begins a loop over luma partitions, and passes control to a function block <NUM>. The function block <NUM> selects the best luma mode (based on, e.g., a rate-distortion cost), and passes control to a loop limit block <NUM>. The loop limit block <NUM> ends the loop over the luma partitions, and passes control to a function block <NUM>. The function block <NUM> sets the best luma partition and luma mode (based on, e.g., a rate-distortion cost), and passes control to a loop limit block <NUM>. The loop limit block <NUM> begins a loop over chroma partitions, and passes control to a function block <NUM>. The function block <NUM> selects the best chroma mode, and passes control to a loop limit block <NUM>. The loop limit block <NUM> ends the loop over the chroma partitions, and passes control to a function block <NUM>. The function block <NUM> sets the best chroma partition and chroma mode, and passes control to a function block <NUM>. The function block <NUM> encodes the luma partition, the luma mode, the chroma partition, and the chroma mode, and passes control to a loop limit block <NUM>. The loop limit block ends the loop over the superblocks, and passes control to an end block <NUM>. With respect to function block <NUM>, the luma partition and the chroma partition may be absolutely coded or may be differentially coded from one or more neighboring blocks or the chroma partition may be differentially coded from the luma partition.

Turning to <FIG>, another exemplary method for intra chroma decoding is indicated generally by the reference numeral <NUM>. The method <NUM> corresponds to one implementation of Embodiment <NUM> described above. The method <NUM> includes a start block <NUM> that passes control to a loop limit block <NUM>. The loop limit block <NUM> begins a loop over each superblock, and passes control to a function block <NUM>. The function block <NUM> parses a luma partition, and passes control to a function block <NUM>. The function block <NUM> parses a luma mode, and passes control to a function block <NUM>. The function block <NUM> parses a chroma partition, and passes control to a function block <NUM>. The function block <NUM> parses a chroma mode, and passes control to a function block <NUM>. The function block <NUM> decodes ones superblock (using the items parsed by function blocks <NUM>, <NUM>, <NUM>, and <NUM>), and passes control to a loop limit block <NUM>. The loop limit block <NUM> ends the loop over the superblocks, and passes control to an end block <NUM>.

A description will now be given of some of the many attendant advantages/features of the present invention, some of which have been mentioned above. For example, one advantage/feature is an apparatus having an encoder for encoding picture data for at least a block in a picture. Multiple partition types are supported for intra chroma coding of the block. The multiple partition types include a set of chroma partition types and a set of luma partition types. The set of chroma partition types are different than the set of luma partition types.

Another advantage/feature is the apparatus having the encoder as described above, wherein a particular chroma partition type for coding the block is determined from the set of chroma partition types responsive to a luma partition type utilized to code the block or one or more neighboring blocks, the luma partition type being included in the set of luma partition types.

Yet another advantage/feature is the apparatus having the encoder wherein a particular chroma partition type for coding the block is determined from the set of chroma partition types responsive to a luma partition type utilized to code the block or one or more neighboring blocks, the luma partition type being included in the set of luma partition types as described above, wherein for the particular chroma partition type, a largest-size available transform matching the particular chroma partition type is selected from a set of transforms.

Still another advantage/feature is the apparatus having the encoder wherein a particular chroma partition type for coding the block is determined from the set of chroma partition types responsive to a luma partition type utilized to code the block or one or more neighboring blocks, the luma partition type being included in the set of luma partition types as described above, wherein from among a particular luma partition type and a particular chroma partition type selected to code the block only the particular luma partition type is signaled, the particular luma partition type being selected from the set of luma partition types and the particular chroma partition type being selected from the set of chroma partition types.

A further advantage/feature is the apparatus having the encoder wherein from among a particular luma partition type and a particular chroma partition type selected to code the block only the particular luma partition type is signaled, the particular luma partition type being selected from the set of luma partition types and the particular chroma partition type being selected from the set of chroma partition types as described above, wherein the particular luma partition type is absolutely coded or differentially coded from one or more neighboring blocks.

A yet further advantage/feature is the apparatus having the encoder as described above, wherein a particular chroma partition type used to code the block is determined independently from a particular luma partition type used to code the block, the particular chroma partition type being determined from the set of chroma partition types and the particular luma partition type being determined from the set of luma partition types.

Moreover, another advantage/feature is the apparatus having the encoder wherein a particular chroma partition type used to code the block is determined independently from a particular luma partition type used to code the block, the particular chroma partition type being determined from the set of chroma partition types and the particular luma partition type being determined from the set of luma partition types as described above, wherein the particular chroma partition type and the particular luma partition types are both signaled.

Further, another advantage/feature is the apparatus having the encoder wherein the particular chroma partition type and the particular luma partition types are both signaled as described above, wherein the particular luma partition type and the particular chroma partition type are absolutely coded or differentially coded from one or more neighboring blocks.

Also, another advantage/feature is the apparatus having the encoder wherein the particular chroma partition type and the particular luma partition types are both signaled as described above, wherein the particular chroma partition type is differentially coded from the particular luma partition type.

Additionally, another advantage/feature is the apparatus having the encoder as described above, wherein a chroma entropy coding engine used to code the block is different from a luma entropy coding engine used to code the block.

These and other features and advantages may be readily ascertained by one of ordinary skill in the pertinent art based on the teachings herein. It is to be understood that the teachings of the present principles may be implemented in various forms of hardware, software, firmware, special purpose processors, or combinations thereof.

Most preferably, the teachings of the present principles are implemented as a combination of hardware and software. Moreover, the software may be implemented as an application program tangibly embodied on a program storage unit. The application program may be uploaded to, and executed by, a machine comprising any suitable architecture. Preferably, the machine is implemented on a computer platform having hardware such as one or more central processing units ("CPU"), a random access memory ("RAM"), and input/output ("I/O") interfaces. The computer platform may also include an operating system and microinstruction code. The various processes and functions described herein may be either part of the microinstruction code or part of the application program, or any combination thereof, which may be executed by a CPU. In addition, various other peripheral units may be connected to the computer platform such as an additional data storage unit and a printing unit.

It is to be further understood that, because some of the constituent system components and methods depicted in the accompanying drawings are preferably implemented in software, the actual connections between the system components or the process function blocks may differ depending upon the manner in Z which they are programmed. Given the teachings herein, one of ordinary skill in the pertinent art will be able to contemplate these and similar implementations or configurations.

Claim 1:
A video encoding apparatus, comprising:
an encoder (<NUM>) for encoding picture data for at least a block in a picture, wherein multiple partition types are supported for intra chroma coding of the block, the multiple partition types including a set of at least two chroma partition types and a set of at least three luma partition types, the set of chroma partition types being a subset of the set of luma partition types, wherein the encoder comprises an intra prediction module with multi-partition support for chroma coding (<NUM>) configured to perform processing steps comprising selecting the best luma mode (<NUM>), selecting the best luma partition from the set of luma partition types and luma mode (<NUM>), selecting the best chroma mode (<NUM>), selecting best chroma partition from the set of chroma partition types, wherein chroma partition and luma partition selection are independent from each other, and chroma mode (<NUM>) and encoding luma partition, luma mode, chroma partition and chroma mode (<NUM>).