Opened 12 years ago Closed 12 years ago #860 closed defect (fixed)inferSigCoeffFlag discrepancy with HM?
Description
We have code with very similar structure to the draft standard pseudocode. This pseudocode in the text seems incorrect:
To make our implementation agree with HM, we had to do this instead:
Now this could be indicative of a problem elsewhere in the draft standard description or possibly in a mistake our own implementation but we thought it worth flagging up. Change History (7)comment:1 Changed 12 years ago by DefaultCC Plugin
comment:2 Changed 12 years ago by tung.nguyencomment:3 Changed 12 years ago by Parabola
Hello Tung, comment:4 Changed 12 years ago by bbross
Hi John, I think I got the problem with inferSigCoeffFlag here. Let me describe it first before we go ahead to solve this. Problem:
When coded_sub_block_flag is parsed, inferSigCoeffFlag is set to 1. This inferSigCoeffFlag is kicking in only at two places
Now we can assume two cases for a sub-block not being the first or the last in scan order, i.e. coded_sub_block_flag is parsed:
Going further to the semantics of coded_sub_block_flag we get the following interpretation (already including proposed fix from #847):
Where 2. a) does not apply in the example because it only kicks in for the first sub-block for which coded_sub_block_flag is not parsed. This leaves us with:
Lets see how this complies with the parsing of significant_coeff_flag mentioned in the beginning of the problem formulation:
}"
Comparing the semantics of coded_sub_block_flag with the actually parsing/inferring of significant_coeff_flags we get the following:
Solution:
Now that we know where the problem is, I see two ways of solving that:
"...or all of the following conditions are true, significant_coeff_flag[ xC ][ yC ] is inferred to be equal to 1.
Wow, I guess the is the longest comment to a ticket I've ever written. Please check whether my understanding of the problem is correct as well as the suggested solution II. comment:5 Changed 12 years ago by nnguyen
Ben, thanks for the thorough description of the problem. The inferSigCoeffFlag is meant to be used by the decoder to infer the significance of the DC of a sub-block (containing at least one non-zero coefficient) to be 1. As such, I agree with your suggested solution. comment:6 Changed 12 years ago by Parabola
Ben, I tested your second solution in our product by changing the conditions for inferring significant_coeff_flag[ xC ][ yC ] equal to 1. On a limited set of bitstreams, it seems to work fine and is preferable to my original workaround. And I support any change of nomenclature that aids understanding of the text. comment:7 Changed 12 years ago by bbross
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
|
Can you specify the problem in more detail?
I don't understand the intended behaviour from the proposed change.
Best regards,
-Tung