Ron, appreciate you chiming in. It is great to have another compression expert to interact with on these topics
. And sorry for the late reply. Had to go back to getting some business done while here.
Anyway, your objection is somewhat valid wrt to wording of the last statement I made, but not relative to the actual argument
. So let me state that more clearly. There is no way to force AVC to use single pixel filtering as VC-1 uses. And that is factual and evident from the pseudo code. I can't quite tell from the wording of your statement if you are disputing this or not. I could read your statement as sometimes AVC can pixel filter just one pixel as opposed to it having a fixed one-pixel mode. Just in case you mean the latter, and for the benefit of others, please allow me to explain why this is not correct.
What the AVC spec allows, as with VC-1 or any other codec with a loop filter, conditions for not filtering content based on certain criteria. This includes things like whether this is an intra/inter block, or the block is a boundary block in a macroblock, or if this pixel lies on an edge (think of left side of your screen - you can't go past it to filter anything), and the quantization step size (how much you are compressing the video - the adaptive part of the filter). But when these special conditions are not met (say, a block encapsulating background grain in the somewhere away from the edge), the algorithm goes out and filters three pixels on each side of the block, even in a small 4x4 block! As a result, some/many pixels will be filtered multiple times!
You can verify the above from the pseudo code. The first part clearly lists that there are three pixels potentially being operated on (input sample values pi and qi (i = 0..2) which means pixels corresponding to i=0, 1 and 2, or three pixels). So we know this code is not talking about single filtering mode at all.
Then there are conditional if statement which examine the above factors and if they are not triggered, the filter goes to operate on the three pixels. If those conditions are met, the otherwise part kicks in and filters the one pixel which you highlighted (classic if then, else statement for you programmers
). Even when the otherwise part is triggered, it is only for that block. The next block can easily get the reverse treatment and get filtered all the way (which again can mean multiple filtering of the same pixels in a 4x4 block). And the block after that and so on.
Net, net, other than drilling into details of how this algorithm works (showing the complexity behind even seemingly simple things), the assertion I made remains valid. AVC will filter and reduce grain and fine texture as a result of this aggressive filtering as compared to VC-1. It will attack many blocks and pixels within them as it runs into difficulty coding them without artifacts. Not only is this evident from the code/spec, but from many encodings and shoot outs we have participated in. The loop filter without a doubt is a major factor in how AVC softens detail in difficult material.
Talking about real pictures, have you had a chance to encode any content with AVC for these HD formats? If so, have you seen an encoder with a single pixel loop filter? If so, who makes it and what title did you work on?
Thanks again for commenting. As Ken Watenabe said to Tom Cruise's character in The Last Samurai, I enjoy our conversations! (You can tell I am still in Japan, can't you?