diff options
author | Martin Storsjö <martin@martin.st> | 2012-10-25 15:33:15 +0300 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2012-10-29 21:53:16 +0200 |
commit | 8b25a20efbf4ca261bcd3327a385330eca775ec6 (patch) | |
tree | 00136cbafa5a3aae9f70c537d9b1d88e6caf9041 | |
parent | 39ef66f5300c2a42acc29937f5417bc2efe09752 (diff) | |
download | ffmpeg-streaming-8b25a20efbf4ca261bcd3327a385330eca775ec6.zip ffmpeg-streaming-8b25a20efbf4ca261bcd3327a385330eca775ec6.tar.gz |
lpc: Add a function for calculating reflection coefficients from samples
Signed-off-by: Martin Storsjö <martin@martin.st>
-rw-r--r-- | libavcodec/lpc.c | 12 | ||||
-rw-r--r-- | libavcodec/lpc.h | 3 |
2 files changed, 15 insertions, 0 deletions
diff --git a/libavcodec/lpc.c b/libavcodec/lpc.c index 126dbc1..2093e7e 100644 --- a/libavcodec/lpc.c +++ b/libavcodec/lpc.c @@ -148,6 +148,18 @@ static int estimate_best_order(double *ref, int min_order, int max_order) return est; } +int ff_lpc_calc_ref_coefs(LPCContext *s, + const int32_t *samples, int order, double *ref) +{ + double autoc[MAX_LPC_ORDER + 1]; + + s->lpc_apply_welch_window(samples, s->blocksize, s->windowed_samples); + s->lpc_compute_autocorr(s->windowed_samples, s->blocksize, order, autoc); + compute_ref_coefs(autoc, order, ref, NULL); + + return order; +} + /** * Calculate LPC coefficients for multiple orders * diff --git a/libavcodec/lpc.h b/libavcodec/lpc.h index 0e54f0d..6590608 100644 --- a/libavcodec/lpc.h +++ b/libavcodec/lpc.h @@ -92,6 +92,9 @@ int ff_lpc_calc_coefs(LPCContext *s, enum FFLPCType lpc_type, int lpc_passes, int omethod, int max_shift, int zero_shift); +int ff_lpc_calc_ref_coefs(LPCContext *s, + const int32_t *samples, int order, double *ref); + /** * Initialize LPCContext. */ |