JVET VVC: Ticket #845: Issue on modeTypeCondition derivation
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845
<p>
As MttSplitMode[][][] is derived only when split_qt_flag == 0, modeTypeCondition should check its value only when split_qt_flag == 0.
Without this change, there is a mismatch between the spec and the VTM behaviour.
</p>
<p>
The specification should become:
</p>
<div class="code"><pre>The variable modeTypeCondition is derived as follows:
• If one or more of the following conditions are true, modeTypeCondition is set equal to 0:
• slice_type is equal to I and qtbtt_dual_tree_intra_flag is equal to 1.
• modeTypeCurr is not equal to MODE_TYPE_ALL.
• chroma_format_idc is equal to 0.
• chroma_format_idc is equal to 3.
• Otherwise, if one of the following conditions is true, modeTypeCondition is set equal to 1:
• cbWidth * cbHeight is equal to 64 and split_qt_flag is equal to 1.
<span class="gd">- • cbWidth * cbHeight is equal to 64 and MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_TT_HOR or SPLIT_TT_VER.
- • cbWidth * cbHeight is equal to 32 and MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_BT_HOR or SPLIT_BT_VER.
</span><span class="gi">+ • cbWidth * cbHeight is equal to 64 and split_qt_flag == 0 && MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_TT_HOR or SPLIT_TT_VER.
+ • cbWidth * cbHeight is equal to 32 and split_qt_flag == 0 && MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_BT_HOR or SPLIT_BT_VER.
</span></pre></div>en-usTrac 1.0.18forayrThu, 30 Jan 2020 09:34:59 GMTversion set; milestone deleted
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:1
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:1
<ul>
<li><strong>version</strong>
set to <em>VVC D8 vB</em>
</li>
<li><strong>milestone</strong>
<em>VVC D7 vC</em> deleted
</li>
</ul>
TicketbbrossSat, 20 Jun 2020 23:11:52 GMTversion changed; milestone set
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:2
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:2
<ul>
<li><strong>version</strong>
changed from <em>VVC D8 vB</em> to <em>VVC D9 vB</em>
</li>
<li><strong>milestone</strong>
set to <em>VVC D10</em>
</li>
</ul>
<p>
Thanks for bringing that up.
</p>
<p>
After checking this, I have the following comments/questions:
1.
Regarding
<em>MttSplitMode[][][] is derived only when split_qt_flag == 0</em>
Actually it is derived based on mtt_split_cu_vertical_flag and mtt_split_cu_binary_flag, both are inferred if not present (e.g. when split_qt_flag == 1).
Hence it is derived but I cannot really see whether the derived values in that case makes sense in the context of deriving modeTypeCondition.
2.
There is a second "Otherwise" part in the derivation of modeTypeCondition that evaluates MttSplitMode[][][]. How is that impacted?
3.
What is the value of modeTypeCondition supposed to be in case of split_qt_flag==1?
Maybe it makes sense to add a condition on split_qt_flag and set modeTypeCondition accordingly?
</p>
TicketforayrMon, 22 Jun 2020 07:42:20 GMT
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:3
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:3
<ol><li>Right, there is an inference on these value, but the modeTypeCondition derived using this infered value might not match the vtm
</li><li>I just check and there is an issue in my proposed fix. The described issue is present only for 2 last conditions on the last otherwise. One fix might be:
<div class="code"><pre>The variable modeTypeCondition is derived as follows:
• If one or more of the following conditions are true, modeTypeCondition is set equal to 0:
• slice_type is equal to I and qtbtt_dual_tree_intra_flag is equal to 1.
• modeTypeCurr is not equal to MODE_TYPE_ALL.
• chroma_format_idc is equal to 0.
• chroma_format_idc is equal to 3.
• Otherwise, if one of the following conditions is true, modeTypeCondition is set equal to 1:
• cbWidth * cbHeight is equal to 64 and split_qt_flag is equal to 1.
• cbWidth * cbHeight is equal to 64 and MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_TT_HOR or SPLIT_TT_VER.
• cbWidth * cbHeight is equal to 32 and MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_BT_HOR or SPLIT_BT_VER.
• Otherwise, if one of the following conditions is true, modeTypeCondition is set equal to 1 + (sh_slice_type != I ?1:0):
• cbWidth*cbHeight is equal to 64 and MttSplitMode[x0][y0][mttDepth] is equal to SPLIT_BT_HOR orSPLIT_BT_VER and sps_chroma_format_idc is equal to 1.
• cbWidth*cbHeight is equal to 128 and MttSplitMode[x0][y0][mttDepth] is equal to SPLIT_TT_HOR orSPLIT_TT_VER and sps_chroma_format_idc is equal to 1.
<span class="gd">- • cbWidth is equal to 8 and MttSplitMode[x0][y0][mttDepth] is equal to SPLIT_BT_VER.
- • cbWidth is equal to 16 and MttSplitMode[x0][y0][mttDepth] is equal to SPLIT_TT_VER.
</span><span class="gi">+ • cbWidth is equal to 8 and split_qt_flag == 0 and MttSplitMode[x0][y0][mttDepth] is equal to SPLIT_BT_VER.
+ • cbWidth is equal to 16 and split_qt_flag == 0 and MttSplitMode[x0][y0][mttDepth] is equal to SPLIT_TT_VER.
</span>• Otherwise, modeTypeCondition is set equal to 0.
</pre></div></li></ol>
TicketbbrossMon, 29 Jun 2020 15:30:54 GMTpriority changed
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:4
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:4
<ul>
<li><strong>priority</strong>
changed from <em>minor</em> to <em>blocker</em>
</li>
</ul>
TicketbbrossMon, 29 Jun 2020 20:21:42 GMT
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:5
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:5
<p>
Agreed solution after offline discussion (thanks to Jianle, Frank and Peter for looking into this):
</p>
<p>
The variable modeTypeCondition is derived as follows:
– If one or more of the following conditions are true, modeTypeCondition is set equal to 0:
</p>
<blockquote>
<p>
– slice_type is equal to I and qtbtt_dual_tree_intra_flag is equal to 1.
– modeTypeCurr is not equal to MODE_TYPE_ALL.
– chroma_format_idc is equal to 0.
– chroma_format_idc is equal to 3.
</p>
</blockquote>
<p>
– Otherwise, if one of the following conditions is true, modeTypeCondition is set equal to 1:
</p>
<blockquote>
<p>
– cbWidth * cbHeight is equal to 64 and split_qt_flag is equal to 1.
– cbWidth * cbHeight is equal to 64<strong>, split_qt_flag is equal to 0</strong>, and MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_TT_HOR or SPLIT_TT_VER.
– cbWidth * cbHeight is equal to 32 and MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_BT_HOR or SPLIT_BT_VER.
</p>
</blockquote>
<p>
– Otherwise, if one <strong>or more</strong> of the following conditions is true, modeTypeCondition is set equal to 1 + ( sh_slice_type != I ? 1 : 0 ):
</p>
<blockquote>
<p>
– cbWidth * cbHeight is equal to 64<strong>, split_qt_flag is equal to 0</strong> , and MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_BT_HOR or SPLIT_BT_VER and sps_chroma_format_idc is equal to 1.
– cbWidth * cbHeight is equal to 128 and MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_TT_HOR or SPLIT_TT_VER and sps_chroma_format_idc is equal to 1.
– cbWidth is equal to 8<strong>, split_qt_flag is equal to 0</strong> and MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_BT_VER.
– cbWidth is equal to 16,<strong> split_qt_flag is equal to 0</strong> and MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_TT_VER.
</p>
</blockquote>
TicketbbrossWed, 01 Jul 2020 16:44:23 GMT
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:6
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:6
<p>
Additional comment after discussion with Frank and Brian:
</p>
<p>
Due to the following condition:
– cbWidth * cbHeight is equal to 64 and split_qt_flag is equal to 1.
Adding "split_qt_flag equal to 0" in the the following conditions is redundant since for the values of cbWidth and cbHeight and split_qt_flag equal to 1, the condition above would kick in:
– cbWidth * cbHeight is equal to 64<strong>, split_qt_flag is equal to 0</strong> , and MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_BT_HOR or SPLIT_BT_VER and sps_chroma_format_idc is equal to 1.
– cbWidth is equal to 8<strong>, split_qt_flag is equal to 0</strong> and MttSplitMode[ x0 ][ y0 ][ mttDepth ] is equal to SPLIT_BT_VER.
</p>
TicketbbrossWed, 01 Jul 2020 19:10:26 GMTstatus changed; resolution set
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:7
https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/845#comment:7
<ul>
<li><strong>status</strong>
changed from <em>new</em> to <em>closed</em>
</li>
<li><strong>resolution</strong>
set to <em>fixed</em>
</li>
</ul>
<p>
This is fixed in JVET-S2001-v9 with messed up indent that will be fixed in vA.
</p>
Ticket