Vp8 entropy coding engine

356 views
Skip to first unread message

Subbu

unread,
Aug 5, 2011, 5:44:03 AM8/5/11
to WebM Discussion
Dear All,

Can some one explain how entropy coding in VP8 is working. In the case
of H.264, When the range is less than
256 depending upon the value of the base of the interval codIlow,MSB
bit is shifted out. There is also a case of outsatnding bits in H.264
but not in VP8

Where as in the case of VP8, as observed from the code there is no
such scenario. Plese help in understanding the VP8 entropy coding
endine.

Thanks in advance .

Regards,
Subbu

Rajesh Pamula

unread,
Aug 5, 2011, 6:52:36 AM8/5/11
to webm-d...@webmproject.org
Dear Subbu,

The implementation of entropy coder in VP8 is very much similar to the implementation of any binary arithmetic coding scheme. The core kernel of arithmetic coder is similar to that of what is implemented in H.264/AVC.

The best way to understand is to check bit at a time output code than what is implemented in the reference encoder. A link to previous discussion is below
http://groups.google.com/a/webmproject.org/group/webm-discuss/browse_thread/thread/8f10290ad0a85a0d?pli=1

Yes, VP8 encoder (and as matter of fact any arithmetic coding scheme which does not use stuffing zeros) suffers from the carry propagation problem. The reference implementation of H.264/AVC resolves this by having OutStandingOneBit (remember that it is non-normative or informative section of standard). VP8 reference implementation solves this by manipulating the data already written into bitstream by adding 1 successively till carry is resolved. Of course, this can be implemented by using OutStandingOneBit concept as well.

Thanks and regards,

Rajesh


--
You received this message because you are subscribed to the Google Groups "WebM Discussion" group.
To post to this group, send email to webm-d...@webmproject.org.
To unsubscribe from this group, send email to webm-discuss...@webmproject.org.
For more options, visit this group at http://groups.google.com/a/webmproject.org/group/webm-discuss/?hl=en.




--
Rajesh Pamula
Post Graduate Student
Analogue and Digital Integrated Circuit Design
Imperial College London.
Residence Phone: +44-20-78522056

Darren Shen

unread,
Aug 10, 2011, 9:54:05 AM8/10/11
to WebM Discussion
Dear Subbu,

I guess you are looking for "renormalization process" in the
arithmetic encoding.
The major difference between two specs is the bit-width of "range".

As Rajesh said, the renormalization process shown in H.264 spec.
document is just one of the implementation solutions. However, if you
are familiar with the process in H.264, it can also easily mapped into
VP8 case.

The case in H.264 has range and low to be 9-bit and 10-bit. Some
decisions in the flow chart are used to manage OutstandingBit. (range
< 0x100, low < 0x100 , etc)
In VP8, you can map them to 8-bit and 9-bit respectively, dividing all
the constant in equation by 2. (range < 0x80, low < 0x80, etc)
Of course you still have to discard the first putted bit since it is
not valid.

BR,
Darren

chaitanya reddy

unread,
Aug 10, 2011, 11:54:31 PM8/10/11
to webm-d...@webmproject.org
Rajesh / Darren,
 
Thanks for both of your replies.
 
Darren,
 
I am not getting the statement "Of course you still have to discard the first putted bit since it is not valid ". What does this mean?.
 
One more question, In the case of H264 Decoder before starting the arithmetic decoding process, we will read 9 bits from the bitstream and start comparison with codIrange, for decoding the bin. where as in the case of VP8 we will read 8 bits. It seems there is a relation between the numebr of bits that has to be read while start of decoding and number of bits used to represent
Range. Can any one explain what is this realtion. If any one explain with example that will be good.
 
Thanks in advance.
 
Regards,
Subbu
 
Darren


--

Darren Shen

unread,
Aug 13, 2011, 3:58:23 AM8/13/11
to WebM Discussion
Dear Subbu,

Because the 9-bit low works as a FIFO buffer which push its MSB
(low[8]) while range is less than 0x80.
So, when the very first time this process invokes, the exactly bit
should be outputted is still hold in low[7];
meanwhile, the outputted bit (low[8]) is a "bubble" and is not valid.
It should be note that, mathematically, low is within 0~255 and the
extend bits are used as output buffer.

About the another question, I am afraid I am not familiar with decoder
part.

BR
Darren

chaitanya reddy

unread,
Aug 16, 2011, 11:30:29 PM8/16/11
to webm-d...@webmproject.org
Thanks Darren...
 
Regards,
Chaitanya Reddy


BR
Darren

Reply all
Reply to author
Forward
0 new messages