Further changes to coefficient contexts.
This patch alters the balance of context between the coefficient bands (reflecting the position of coefficients within a transform blocks) and the energy of the previous token (or tokens) within a block. In this case the number of coefficient bands is reduced but more previous token energy bands are supported. Some initial rebalancing of the default tables has been by running multiple derf clips at multiple data rates using the ENTOPY_STATS macro. Further balancing needs to be done using larger image formatsd especially in regard to the bigger transform sizes which are not as well represented in encodings of smaller image formats. Change-Id: If9736e95c391e711b04aef6393d26f60f36e1f8a
This commit is contained in:

committed by
Ronald S. Bultje

parent
bf0570a7e6
commit
c17672a33d
@@ -58,9 +58,18 @@ static INLINE vp9_prob clip_prob(int p) {
|
||||
return (p > 255) ? 255u : (p < 1) ? 1u : p;
|
||||
}
|
||||
|
||||
// int64 is not needed for normal frame level calculations.
|
||||
// However when outputing entropy stats accumulated over many frames
|
||||
// or even clips we can overflow int math.
|
||||
#ifdef ENTROPY_STATS
|
||||
static INLINE vp9_prob get_prob(int num, int den) {
|
||||
return (den == 0) ? 128u : clip_prob(((int64_t)num * 256 + (den >> 1)) / den);
|
||||
}
|
||||
#else
|
||||
static INLINE vp9_prob get_prob(int num, int den) {
|
||||
return (den == 0) ? 128u : clip_prob((num * 256 + (den >> 1)) / den);
|
||||
}
|
||||
#endif
|
||||
|
||||
static INLINE vp9_prob get_binary_prob(int n0, int n1) {
|
||||
return get_prob(n0, n0 + n1);
|
||||
|
Reference in New Issue
Block a user