#1044 closed defect (fixed)Clarification about B prediction in P slices
Description
If there is a B slice followed by a P slice, the collocated luma prediction block can be a B block.
In this case, I believe that section 8.5.3.2.8 "Derivation process for collocated motion vectors" will set availableFlagL1Col=1 and thus produce a B predicted block inside the P slice.
I assume that this is not actually allowed.
Perhaps the derivation of availableFlagLXCol should set it to 0 if x==1 and slice_type is equal to P? Change History (6)comment:1 Changed 12 years ago by DefaultCC Plugin
comment:2 Changed 12 years ago by bbrosscomment:3 Changed 12 years ago by bbross
comment:4 Changed 12 years ago by bbross
Fixed in v32. comment:5 Changed 12 years ago by peterderivaz
Thanks for clarifying this. However, note that there are now 3 equations marked 8-87 and 2 marked 8-86 in the specification. comment:6 Changed 12 years ago by yk
Thanks. Fixed in v34, wherein all fields have been updated. 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
|
Agree, in HM this is prevented by calling the collocated MV derivation only for L0 when slice_type is P. Doing that in the draft as you suggested would solve that issue:
Replace:
""
by
"
3. The derivation process for temporal luma motion vector prediction in subclause 8.5.3.2.7 is invoked with the luma location ( xPb, yPb ), the luma prediction block width nPbW, the luma prediction block height nPbH, and the variable refIdxL0Col as inputs, and the output being the availability flag availableFlagL0Col and the temporal motion vector mvL0Col.The variables availableFlagCol, predFlagL0Col and predFlagL1Col are derived as follows:
availableFlagCol = availableFlagL0Col (8 86)
predFlagL0Col = availableFlagL0Col (8 87)
predFlagL1Col = 0 (8 87)
4. When slice_type is equal to B, the derivation process for temporal luma motion vector prediction in subclause 8.5.3.2.7 is invoked with the luma location ( xPb, yPb ), the luma prediction block width nPbW, the luma prediction block height nPbH, and the variable refIdxL1Col as inputs, and the output being the availability flag availableFlagL1Col and the temporal motion vector mvL1Col. The variables availableFlagCol and predFlagL1Col are derived as follows:
availableFlagCol = availableFlagL0Col | | availableFlagL1Col (8 86)
predFlagL1Col = availableFlagL1Col (8 87)
"