40 #define BITSTREAM_WRITER_LE
47 2621, 2631, 2659, 2705, 2770, 2853, 2955, 3074, 3212, 3367,
48 3541, 3731, 3939, 4164, 4405, 4663, 4937, 5226, 5531, 5851,
49 6186, 6534, 6897, 7273, 7661, 8062, 8475, 8899, 9334, 9780,
50 10235, 10699, 11172, 11653, 12141, 12636, 13138, 13645, 14157, 14673,
51 15193, 15716, 16242, 16769, 17298, 17827, 18356, 18884, 19411, 19935,
52 20457, 20975, 21489, 21999, 22503, 23002, 23494, 23978, 24455, 24924,
53 25384, 25834, 26274, 26704, 27122, 27529, 27924, 28306, 28675, 29031,
54 29373, 29700, 30012, 30310, 30592, 30857, 31107, 31340, 31557, 31756,
55 31938, 32102, 32249, 32377, 32488, 32580, 32654, 32710, 32747, 32766,
56 32766, 32747, 32710, 32654, 32580, 32488, 32377, 32249, 32102, 31938,
57 31756, 31557, 31340, 31107, 30857, 30592, 30310, 30012, 29700, 29373,
58 29031, 28675, 28306, 27924, 27529, 27122, 26704, 26274, 25834, 25384,
59 24924, 24455, 23978, 23494, 23002, 22503, 21999, 21489, 20975, 20457,
60 19935, 19411, 18884, 18356, 17827, 17298, 16769, 16242, 15716, 15193,
61 14673, 14157, 13645, 13138, 12636, 12141, 11653, 11172, 10699, 10235,
62 9780, 9334, 8899, 8475, 8062, 7661, 7273, 6897, 6534, 6186,
63 5851, 5531, 5226, 4937, 4663, 4405, 4164, 3939, 3731, 3541,
64 3367, 3212, 3074, 2955, 2853, 2770, 2705, 2659, 2631, 2621
71 32749, 32695, 32604, 32477, 32315, 32118, 31887, 31622, 31324, 30995
78 32571, 32376, 32182, 31989, 31797, 31606, 31416, 31228, 31040, 30854
86 {29491, 26542, 23888, 21499, 19349, 17414, 15673, 14106, 12695, 11425},
88 {16384, 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32}
108 }
else if (avctx->
bit_rate == 5300) {
133 *iir = (buf[
i] << 15) + ((-*fir) << 15) +
MULL2(*iir, 0x7f00);
169 memset(autocorr + 1, 0,
LPC_ORDER *
sizeof(int16_t));
190 int16_t partial_corr;
193 memset(lpc, 0,
LPC_ORDER *
sizeof(int16_t));
198 for (j = 0; j <
i; j++)
199 temp -= lpc[j] * autocorr[
i - j - 1];
200 temp = ((autocorr[
i] << 13) +
temp) << 3;
215 memcpy(vector, lpc,
i *
sizeof(int16_t));
216 for (j = 0; j <
i; j++) {
217 temp = partial_corr * vector[
i - j - 1] << 1;
234 int16_t *autocorr_ptr = autocorr;
235 int16_t *lpc_ptr = lpc;
247 static void lpc2lsp(int16_t *lpc, int16_t *prev_lsp, int16_t *lsp)
253 int max,
shift, cur_val, prev_val, count, p;
262 f[0] =
f[1] = 1 << 25;
269 f[2 *
i + 3] =
f[2 *
i + 1] - ((lsp[
i] - lsp[
LPC_ORDER - 1 -
i]) << 12);
304 if ((cur_val ^ prev_val) < 0) {
305 int abs_cur =
FFABS(cur_val);
306 int abs_prev =
FFABS(prev_val);
307 int sum = abs_cur + abs_prev;
311 abs_prev = abs_prev << shift >> 8;
312 lsp[count++] = ((
i - 1) << 7) + (abs_prev >> 1) / (sum >> 16);
331 memcpy(lsp, prev_lsp,
LPC_ORDER *
sizeof(int16_t));
341 #define get_index(num, offset, size) \
343 int error, max = -1; \
347 for (i = 0; i < LSP_CB_SIZE; i++) { \
348 for (j = 0; j < size; j++){ \
349 temp[j] = (weight[j + (offset)] * ff_g723_1_lsp_band##num[i][j] + \
352 error = ff_g723_1_dot_product(lsp + (offset), temp, size) << 1; \
353 error -= ff_g723_1_dot_product(ff_g723_1_lsp_band##num[i], temp, size); \
356 lsp_index[num] = i; \
374 weight[0] = (1 << 20) / (lsp[1] - lsp[0]);
399 (((prev_lsp[
i] -
dc_lsp[
i]) * 12288 + (1 << 14)) >> 15);
416 int16_t *
src, int16_t *dest)
424 iir_coef[n - 1] * dest[m - n];
439 int16_t *unq_lpc, int16_t *buf)
452 flt_coef[k + 2 * l +
LPC_ORDER] = (unq_lpc[k + l] *
457 vector +
i, buf +
i);
473 int max_ccr = 0x4000;
474 int max_eng = 0x7fff;
478 int ccr, eng, orig_eng, ccr_eng,
exp;
501 ccr = ccr << temp >> 16;
515 if (
exp + 1 < max_exp)
519 if (
exp + 1 == max_exp)
523 ccr_eng = ccr * max_eng;
525 if (
diff > 0 && (
i - index < PITCH_MIN || diff > ccr_eng >> 2)) {
545 int ccr, eng, max_ccr, max_eng;
550 for (
i = 0, j = pitch_lag - 3; j <= pitch_lag + 3;
i++, j++) {
562 for (
i = 0;
i < 15;
i++)
566 for (
i = 0;
i < 15;
i++) {
576 for (
i = 0;
i <= 6;
i++) {
577 eng = energy[
i << 1];
578 ccr = energy[(
i << 1) + 1];
583 ccr = (ccr * ccr + (1 << 14)) >> 15;
584 diff = ccr * max_eng - eng * max_ccr;
592 if (hf->
index == -1) {
593 hf->
index = pitch_lag;
597 eng = energy[14] * max_eng;
598 eng = (eng >> 2) + (eng >> 3);
599 ccr = energy[(hf->
index << 1) + 1] * energy[(hf->
index << 1) + 1];
601 eng = energy[(hf->
index << 1) + 1];
606 hf->
gain = ((eng << 15) / max_eng * 0x2800 + (1 << 14)) >> 15;
608 hf->
index += pitch_lag - 3;
646 int16_t *perf_fir, int16_t *perf_iir,
647 const int16_t *
src, int16_t *dest,
int scale)
655 memcpy(buf_16, perf_fir,
sizeof(int16_t) *
LPC_ORDER);
661 temp -= qnt_lpc[j - 1] * bptr_16[
i - j];
668 int64_t fir = 0, iir = 0;
670 fir -= perf_lpc[j - 1] * bptr_16[
i - j];
671 iir += perf_lpc[j +
LPC_ORDER - 1] * dest[
i - j];
688 int16_t *impulse_resp,
const int16_t *buf,
700 int odd_frame =
index & 1;
701 int iter = 3 + odd_frame;
715 for (
i = 0;
i < iter;
i++) {
720 for (k = 0; k <= j; k++)
727 flt_buf[j][0] = ((residual[j] << 13) + (1 << 14)) >> 15;
729 temp = (flt_buf[j + 1][k - 1] << 15) +
730 residual[j] * impulse_resp[k];
748 for (k = 0; k < j; k++) {
757 for (
i = 0;
i < 20 * iter;
i++)
762 for (
i = 0;
i < 20 * iter;
i++)
767 for (
i = 0;
i < iter;
i++) {
775 for (j = 0, k = 0; j < tbl_size; j++, k += 20) {
777 for (l = 0; l < 20; l++)
778 temp += ccr_buf[20 *
i + l] * cb_tbl[k + l];
790 pitch_lag += acb_lag - 1;
811 int64_t
temp = buf[
i] << 14;
812 for (j = 0; j <=
i; j++)
813 temp -= residual[j] * impulse_resp[
i - j];
826 int16_t *buf,
int pulse_cnt,
int pitch_lag)
835 int amp, err,
max, max_amp_index,
min, scale,
i, j, k, l;
840 memcpy(impulse_r, impulse_resp,
sizeof(int16_t) *
SUBFRAME_LEN);
848 temp_corr[
i] = impulse_r[
i] >> 1;
867 ccr1[
i] =
temp >> -scale;
888 for (j = max_amp_index; j >= 2; j--) {
890 impulse_corr[0] << 1);
900 for (j = 1; j < 5; j++) {
911 for (k = 1; k < pulse_cnt; k++) {
935 for (k = 0; k < pulse_cnt; k++)
940 for (l = 0; l <= k; l++) {
942 impulse_r[k - l] << 1);
945 temp_corr[k] = temp << 2 >> 16;
959 if (err < optim->min_err) {
965 for (k = 0; k < pulse_cnt; k++) {
981 int16_t *buf,
int pulse_cnt)
990 for (
i = 0; i < SUBFRAME_LEN >> 1;
i++) {
1016 int16_t *buf,
int index)
1032 for (
i = 0;
i < pulse_cnt;
i++)
1116 int16_t *
in, *start;
1123 memcpy(
in,
frame->data[0],
frame->nb_samples *
sizeof(int16_t));
1181 memset(vector, 0,
sizeof(int16_t) *
PITCH_MAX);
1184 flt_in[0] = 1 << 13;
1195 fir, iir, flt_in, vector +
PITCH_MAX, 0);
1237 *got_packet_ptr = 1;