View Full Version : What is the role of outstanding bits in arithmetic coding engine in CABAC
prokul
20th July 2016, 09:31
Hi. I am working on a project about CABAC. However, I have a hard time understanding the whole binary arithmetic coding thing. Really hard to find any material with detail explanation about it.
In short, my question is: what is the role of outstanding bits in arithmetic coding engine?
Thank you.
FancyMouse
20th July 2016, 23:21
Recall in arithmetic coding, semantically you're just keeping track of a range of two arbitrary-precision numbers, and the bitstream itself is a number in that range. However, in practice, you can't possibly track all the bits for the range. Practically you just track the least significant few bits. But then you'll come across scenario like this, suppose your current range is [Low,Low+Range):
Low=0.0111110
Range=0.0000011
Without knowing how Range is subdivided, you don't know if you should output 01111 or 10000 for your higher bits.
That's what outstanding bit handles - you treat those higher bits as outstanding bits. You just need to know how many outstanding bits are, and then whenever a subdivision clears the ambiguity of higher outstanding bits (either Low gets incremented and reach the 0.1 boundary, or Range is decreased so that Low+Range<=0.1), you can now determine what the higher bits are, output them, and outstanding bits are clear.
Of course, some details might be different. In particular in the fast renormalization in M coder, which both AVC and HEVC use, the theory is still the same, but the implementation procedure might be different.
prokul
21st July 2016, 04:40
You just need to know how many outstanding bits are, and then whenever a subdivision clears the ambiguity of higher outstanding bits (either Low gets incremented and reach the 0.1 boundary, or Range is decreased so that Low+Range<=0.1), you can now determine what the higher bits are, output them, and outstanding bits are clear.
I don't quite get this. How exactly to determine the higher bits basing on the number of outstanding bits?
FancyMouse
22nd July 2016, 00:37
I don't quite get this. How exactly to determine the higher bits basing on the number of outstanding bits?
Number of outstanding bits only determines how many bits are involved. To determine which case between 01111 and 10000, it's in the parenthesis you quoted.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.