// The factor to scale from cost in bits to cost in av1_prob_cost units. #define AV1_PROB_COST_SHIFT 9
// Cost of coding an n bit literal, using 128 (i.e. 50%) probability // for each bit. #define av1_cost_literal(n) ((n) * (1 << AV1_PROB_COST_SHIFT))
// Calculate the cost of a symbol with probability p15 / 2^15 static inline int av1_cost_symbol(aom_cdf_prob p15) { // p15 can be out of range [1, CDF_PROB_TOP - 1]. Clamping it, so that the // following cost calculation works correctly. Otherwise, if p15 = // CDF_PROB_TOP, shift would be -1, and "p15 << shift" would be wrong.
p15 = (aom_cdf_prob)clamp(p15, 1, CDF_PROB_TOP - 1);
assert(0 < p15 && p15 < CDF_PROB_TOP); const int shift = CDF_PROB_BITS - 1 - get_msb(p15); const int prob = get_prob(p15 << shift, CDF_PROB_TOP);
assert(prob >= 128); return av1_prob_cost[prob - 128] + av1_cost_literal(shift);
}
void av1_cost_tokens_from_cdf(int *costs, const aom_cdf_prob *cdf, const int *inv_map);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.