Opened 10 years ago

Closed 10 years ago

#1225 closed defect (fixed)

4:2:2 and 4:4:4 chroma cbf coding

Reported by: kazui.kimihiko@… Owned by:
Priority: major Milestone: RExt D7
Component: RExt text Version: RExt D5 (O1005) v3
Keywords: Cc: davidf, joel, teruhiko, jct-vc@…

Description (last modified by davidf)

In both 4:2:2 and 4:4:4 the transform tree syntax doesn't provide for non non-zero TBs.

(Reminder), For 4:2:0, an 8x8 TU that is split to four 4x4 TUs will have a single 4x4 chroma TB coded. The chroma CBF for this single 4x4 TB is that from the level above (ie 8x8).

In the case of 4:2:2, which follows the 4:2:0 design, there are two 'leaf' 4x4 chroma TBs. The current spec has the issue that both chroma TBs inherit the CBF from the level above, requiring both to contain sig coefs.

In the case of 4:4:4, which allows the equal splitting of luma and chroma blocks (ie an 8x8CU can be split into four 4x4 luma TBs and four 4x4 Cb TBs), all 4x4 chroma TBs will inherit the CBF from the level above.

Change History (6)

comment:1 Changed 10 years ago by DefaultCC Plugin

  • Cc davidf joel teruhiko jct-vc@… added

comment:2 Changed 10 years ago by davidf

  • Description modified (diff)
  • Milestone changed from RExt D5 to RExt D6
  • Reporter changed from karlsharman to kazui.kimihiko@…
  • Summary changed from 4:2:2 chroma cbf coding to 4:2:2 and 4:4:4 chroma cbf coding

comment:3 Changed 10 years ago by davidf

A quick review suggests that in transform_tree(), the following condition:

  if( log2TrafoSize > 2 && chromaArrayType != 0) {
    // chroma CBFs for current depth

should be if( chromaArrayType == 1 && log2TrafoSize > 2 || chromaArrayType > 1 )

Ie, that chroma CBF signalling at current depth is skipped for monochrome and chromaArrayType == 1 with log2TrafoSize == 2 (where it is inherited).

TODO: check HM.

comment:4 Changed 10 years ago by davidf

Unfortunately it is not so simple:

  • For the 4:2:2 case, the extra chroma CBFs should only be evaluated for one value of blkIdx.
  • The most logical value of blkIdx is 3. However, (x0,y0) have inappropriate values when blkIdx = 3 -- would need to use (xBase, yBase).
  • For the 4:4:4 case, it is okay as is (ie, for all values of blkIdx and must not use (xBase,yBase)).

comment:5 Changed 10 years ago by davidf

  • Milestone changed from RExt D6 to RExt D7

comment:6 Changed 10 years ago by davidf

  • Resolution set to fixed
  • Status changed from new to closed

This is resolved in Q1005

Note: See TracTickets for help on using tickets.

This list contains all users that will be notified about changes made to this ticket.

These roles will be notified: Reporter, Owner, Subscriber, Participant

  • David Flynn(Subscriber, Participant)
  • jct-vc@…(Subscriber)
  • Joel(Subscriber)
  • karl.sharman@…(Always)
  • Karsten Suehring(Always)
  • kazui.kimihiko@…(Reporter)
  • Teruhiko Suzuki(Subscriber)