[FFmpeg-cvslog] r24624 - trunk/libavcodec/flacenc.c
jbr
subversion
Sat Jul 31 19:06:10 CEST 2010
Author: jbr
Date: Sat Jul 31 19:06:10 2010
New Revision: 24624
Log:
Combine calc_rice_params_fixed() and calc_rice_params_lpc() into a single
function.
Modified:
trunk/libavcodec/flacenc.c
Modified: trunk/libavcodec/flacenc.c
==============================================================================
--- trunk/libavcodec/flacenc.c Sat Jul 31 18:53:09 2010 (r24623)
+++ trunk/libavcodec/flacenc.c Sat Jul 31 19:06:10 2010 (r24624)
@@ -606,27 +606,16 @@ static int get_max_p_order(int max_porde
}
-static uint32_t calc_rice_params_fixed(RiceContext *rc, int pmin, int pmax,
- int32_t *data, int n, int pred_order,
- int bps)
+static uint32_t find_subblock_rice_params(RiceContext *rc, int pmin, int pmax,
+ int32_t *data, int n, int pred_order,
+ int bps, int precision)
{
uint32_t bits;
pmin = get_max_p_order(pmin, n, pred_order);
pmax = get_max_p_order(pmax, n, pred_order);
bits = pred_order * bps + 6;
- bits += calc_rice_params(rc, pmin, pmax, data, n, pred_order);
- return bits;
-}
-
-
-static uint32_t calc_rice_params_lpc(RiceContext *rc, int pmin, int pmax,
- int32_t *data, int n, int pred_order,
- int bps, int precision)
-{
- uint32_t bits;
- pmin = get_max_p_order(pmin, n, pred_order);
- pmax = get_max_p_order(pmax, n, pred_order);
- bits = pred_order*bps + 4 + 5 + pred_order*precision + 6;
+ if (precision > 0)
+ bits += 4 + 5 + pred_order * precision;
bits += calc_rice_params(rc, pmin, pmax, data, n, pred_order);
return bits;
}
@@ -838,8 +827,9 @@ static int encode_residual_ch(FlacEncode
bits[0] = UINT32_MAX;
for (i = min_order; i <= max_order; i++) {
encode_residual_fixed(res, smp, n, i);
- bits[i] = calc_rice_params_fixed(&sub->rc, min_porder, max_porder, res,
- n, i, sub->obits);
+ bits[i] = find_subblock_rice_params(&sub->rc, min_porder,
+ max_porder, res, n, i,
+ sub->obits, 0);
if (bits[i] < bits[opt_order])
opt_order = i;
}
@@ -848,8 +838,8 @@ static int encode_residual_ch(FlacEncode
sub->type_code = sub->type | sub->order;
if (sub->order != max_order) {
encode_residual_fixed(res, smp, n, sub->order);
- return calc_rice_params_fixed(&sub->rc, min_porder, max_porder, res, n,
- sub->order, sub->obits);
+ return find_subblock_rice_params(&sub->rc, min_porder, max_porder,
+ res, n, sub->order, sub->obits, 0);
}
return bits[sub->order];
}
@@ -874,7 +864,7 @@ static int encode_residual_ch(FlacEncode
if (order < 0)
order = 0;
encode_residual_lpc(res, smp, n, order+1, coefs[order], shift[order]);
- bits[i] = calc_rice_params_lpc(&sub->rc, min_porder, max_porder,
+ bits[i] = find_subblock_rice_params(&sub->rc, min_porder, max_porder,
res, n, order+1, sub->obits, precision);
if (bits[i] < bits[opt_index]) {
opt_index = i;
@@ -889,7 +879,7 @@ static int encode_residual_ch(FlacEncode
bits[0] = UINT32_MAX;
for (i = min_order-1; i < max_order; i++) {
encode_residual_lpc(res, smp, n, i+1, coefs[i], shift[i]);
- bits[i] = calc_rice_params_lpc(&sub->rc, min_porder, max_porder,
+ bits[i] = find_subblock_rice_params(&sub->rc, min_porder, max_porder,
res, n, i+1, sub->obits, precision);
if (bits[i] < bits[opt_order])
opt_order = i;
@@ -908,7 +898,7 @@ static int encode_residual_ch(FlacEncode
if (i < min_order-1 || i >= max_order || bits[i] < UINT32_MAX)
continue;
encode_residual_lpc(res, smp, n, i+1, coefs[i], shift[i]);
- bits[i] = calc_rice_params_lpc(&sub->rc, min_porder, max_porder,
+ bits[i] = find_subblock_rice_params(&sub->rc, min_porder, max_porder,
res, n, i+1, sub->obits,
precision);
if (bits[i] < bits[opt_order])
@@ -927,7 +917,7 @@ static int encode_residual_ch(FlacEncode
encode_residual_lpc(res, smp, n, sub->order, sub->coefs, sub->shift);
- return calc_rice_params_lpc(&sub->rc, min_porder, max_porder, res, n,
+ return find_subblock_rice_params(&sub->rc, min_porder, max_porder, res, n,
sub->order, sub->obits, precision);
}
More information about the ffmpeg-cvslog
mailing list