#include "celp_math.h"
#include "celp_filters.h"
+#define MAX_BACKWARD_FILTER_ORDER 36
+#define MAX_BACKWARD_FILTER_LEN 40
+#define MAX_BACKWARD_FILTER_NONREC 35
+
typedef struct {
float sp_lpc[36]; ///< LPC coefficients for speech data (spec: A)
float gain_lpc[10]; ///< LPC coefficients for gain (spec: GB)
static av_cold int ra288_decode_init(AVCodecContext *avctx)
{
- avctx->sample_fmt = SAMPLE_FMT_FLT;
+ avctx->sample_fmt = AV_SAMPLE_FMT_FLT;
return 0;
}
gain_block[9] = 10 * log10(sum) - 32;
ff_celp_lp_synthesis_filterf(block, ractx->sp_lpc, buffer, 5, 36);
-
- /* output */
- for (i=0; i < 5; i++)
- block[i] = av_clipf(block[i], -4095./4096., 4095./4096.);
}
/**
float *hist, float *out2, const float *window)
{
int i;
- float buffer1[order + 1];
- float buffer2[order + 1];
- float work[order + n + non_rec];
+ float buffer1[MAX_BACKWARD_FILTER_ORDER + 1];
+ float buffer2[MAX_BACKWARD_FILTER_ORDER + 1];
+ float work[MAX_BACKWARD_FILTER_ORDER + MAX_BACKWARD_FILTER_LEN + MAX_BACKWARD_FILTER_NONREC];
apply_window(work, window, hist, order + n + non_rec);
float *lpc, const float *tab,
int order, int n, int non_rec, int move_size)
{
- float temp[order+1];
+ float temp[MAX_BACKWARD_FILTER_ORDER+1];
do_hybrid_window(order, n, non_rec, temp, hist, rec, window);
return avctx->block_align;
}
-AVCodec ra_288_decoder =
+AVCodec ff_ra_288_decoder =
{
"real_288",
AVMEDIA_TYPE_AUDIO,