⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 if_rom.c

📁 关于AMR-WB+语音压缩编码的实现代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/*
 *===================================================================
 *  3GPP AMR Wideband Floating-point Speech Codec
 *===================================================================
 */
#ifndef IF_H
#define IF_H
#include "typedef.h"
/*
 * definition of constants
 */
#define NUM_OF_SPMODES 9
/* number of parameters */
#define PRMNO_7k 18
#define PRMNO_9k 32
#define PRMNO_12k 36
#define PRMNO_14k 36
#define PRMNO_16k 36
#define PRMNO_18k 52
#define PRMNO_20k 52
#define PRMNO_23k 52
#define PRMNO_24k 56
#define PRMNO_SID 7
#define NB_PARM_MAX PRMNO_24k
/* number of bits */
#ifndef NBBITS_7k
#define NBBITS_7k 132
#define NBBITS_9k 177
#define NBBITS_12k 253
#define NBBITS_14k 285
#define NBBITS_16k 317
#define NBBITS_18k 365
#define NBBITS_20k 397
#define NBBITS_23k 461
#define NBBITS_24k 477
#define NBBITS_SID 35
#endif
/* number of total bits */
#define HEADER_SIZE 6   /* real size + 1 */
#define T_NBBITS_7k (NBBITS_7k + HEADER_SIZE)
#define T_NBBITS_9k (NBBITS_9k + HEADER_SIZE)
#define T_NBBITS_12k (NBBITS_12k + HEADER_SIZE)
#define T_NBBITS_14k (NBBITS_14k + HEADER_SIZE)
#define T_NBBITS_16k (NBBITS_16k + HEADER_SIZE)
#define T_NBBITS_18k (NBBITS_18k + HEADER_SIZE)
#define T_NBBITS_20k (NBBITS_20k + HEADER_SIZE)
#define T_NBBITS_23k (NBBITS_23k + HEADER_SIZE)
#define T_NBBITS_24k (NBBITS_24k + HEADER_SIZE)
#define T_NBBITS_SID (NBBITS_SID + HEADER_SIZE)
#define TX_SPEECH 0
#define TX_SID_FIRST 1
#define TX_SID_UPDATE 2
#define TX_NO_DATA 3
#define RX_SPEECH_GOOD              0
#define RX_SPEECH_PROBABLY_DEGRADED 1
#define RX_SPEECH_LOST              2
#define RX_SPEECH_BAD               3
#define RX_SID_FIRST                4
#define RX_SID_UPDATE               5
#define RX_SID_BAD                  6
#define RX_NO_DATA                  7
/* One encoded frame (bytes) */
/*
 * 6 bytes are used both for mode 9 and 10.
 * Mode 9 is used in encoder and mode 10 in IF2
 */
#ifdef IF2
const UWord8 block_size[16]= {18, 23, 33, 37, 41, 47, 51, 59, 61, 6, 6, 0, 0, 0, 1, 1};
#else
const UWord8 block_size[16]= {18, 24, 33, 37, 41, 47, 51, 59, 61, 6, 6, 0, 0, 0, 1, 1};
#endif
/*
 * tables
 */
const Word16 mode_7k[NBBITS_7k << 1] = {
   0, 0x1, 1, 0x8, 1, 0x4, 1, 0x2,
   8, 0x2, 11, 0x2, 14, 0x2, 17, 0x2,
   8, 0x1, 11, 0x1, 1, 0x1, 1, 0x10,
   6, 0x80, 6, 0x40, 6, 0x20, 6, 0x10,
   8, 0x10, 11, 0x10, 14, 0x10, 17, 0x10,
   8, 0x4, 11, 0x4, 14, 0x4, 17, 0x4,
   14, 0x1, 17, 0x1, 17, 0x8, 6, 0x8,
   6, 0x4, 11, 0x20, 17, 0x20, 1, 0x80,
   1, 0x20, 8, 0x20, 14, 0x20, 11, 0x8,
   14, 0x8, 8, 0x8, 1, 0x40, 9, 0x10,
   15, 0x10, 15, 0x8, 12, 0x10, 3, 0x10,
   3, 0x2, 3, 0x1, 9, 0x8, 12, 0x8,
   3, 0x20, 3, 0x8, 3, 0x4, 3, 0x40,
   2, 0x8, 12, 0x4, 6, 0x2, 12, 0x2,
   9, 0x4, 15, 0x4, 2, 0x4, 4, 0x40,
   4, 0x20, 4, 0x10, 4, 0x8, 4, 0x4,
   2, 0x2, 2, 0x1, 6, 0x1, 12, 0x1,
   9, 0x2, 15, 0x2, 2, 0x80, 2, 0x20,
   2, 0x40, 2, 0x10, 9, 0x1, 15, 0x1,
   4, 0x2, 4, 0x1, 5, 0x20, 5, 0x10,
   5, 0x4, 5, 0x8, 5, 0x2, 5, 0x1,
   7, 0x800, 7, 0x20, 10, 0x800, 10, 0x20,
   13, 0x800, 13, 0x20, 16, 0x800, 16, 0x20,
   7, 0x400, 10, 0x400, 13, 0x400, 16, 0x400,
   7, 0x10, 10, 0x10, 13, 0x10, 16, 0x10,
   7, 0x200, 10, 0x200, 13, 0x200, 16, 0x200,
   7, 0x8, 10, 0x8, 13, 0x8, 16, 0x8,
   7, 0x100, 10, 0x100, 13, 0x100, 16, 0x100,
   7, 0x4, 10, 0x4, 13, 0x4, 16, 0x4,
   7, 0x80, 10, 0x80, 13, 0x80, 16, 0x80,
   7, 0x2, 10, 0x2, 13, 0x2, 16, 0x2,
   7, 0x40, 10, 0x40, 13, 0x40, 16, 0x40,
   7, 0x1, 10, 0x1, 13, 0x1, 16, 0x1
};
const Word16 mode_9k[NBBITS_9k << 1] = {
   0, 0x1, 1, 0x10, 1, 0x4, 1, 0x2,
   1, 0x8, 1, 0x20, 8, 0x80, 8, 0x40,
   8, 0x20, 20, 0x80, 20, 0x40, 20, 0x20,
   13, 0x20, 19, 0x20, 25, 0x20, 31, 0x20,
   13, 0x1, 19, 0x1, 25, 0x1, 31, 0x1,
   13, 0x8, 19, 0x8, 25, 0x8, 31, 0x8,
   13, 0x4, 19, 0x4, 25, 0x4, 31, 0x4,
   13, 0x2, 19, 0x2, 25, 0x2, 31, 0x2,
   13, 0x10, 19, 0x10, 25, 0x10, 31, 0x10,
   8, 0x10, 20, 0x10, 8, 0x8, 1, 0x40,
   1, 0x80, 14, 0x10, 20, 0x8, 26, 0x10,
   3, 0x8, 3, 0x2, 2, 0x10, 3, 0x20,
   3, 0x10, 3, 0x4, 2, 0x1, 4, 0x10,
   2, 0x8, 2, 0x40, 2, 0x4, 4, 0x20,
   4, 0x40, 3, 0x1, 4, 0x8, 1, 0x1,
   2, 0x2, 8, 0x4, 20, 0x4, 5, 0x20,
   14, 0x8, 26, 0x8, 2, 0x80, 5, 0x8,
   2, 0x20, 14, 0x4, 26, 0x4, 8, 0x2,
   20, 0x2, 4, 0x2, 4, 0x4, 14, 0x2,
   26, 0x2, 5, 0x4, 5, 0x2, 4, 0x1,
   7, 0x1, 5, 0x10, 5, 0x40, 8, 0x1,
   20, 0x1, 6, 0x10, 5, 0x1, 6, 0x4,
   6, 0x8, 6, 0x2, 14, 0x1, 26, 0x1,
   6, 0x1, 7, 0x10, 7, 0x8, 7, 0x4,
   7, 0x2, 9, 0x10, 10, 0x10, 11, 0x10,
   12, 0x10, 15, 0x10, 16, 0x10, 17, 0x10,
   18, 0x10, 21, 0x10, 22, 0x10, 23, 0x10,
   24, 0x10, 27, 0x10, 28, 0x10, 29, 0x10,
   30, 0x10, 9, 0x8, 15, 0x8, 21, 0x8,
   27, 0x8, 10, 0x8, 16, 0x8, 22, 0x8,
   28, 0x8, 11, 0x8, 17, 0x8, 23, 0x8,
   29, 0x8, 12, 0x8, 18, 0x8, 24, 0x8,
   30, 0x8, 9, 0x4, 15, 0x4, 21, 0x4,
   27, 0x4, 10, 0x4, 16, 0x4, 22, 0x4,
   28, 0x4, 11, 0x4, 17, 0x4, 23, 0x4,
   29, 0x4, 12, 0x4, 18, 0x4, 24, 0x4,
   30, 0x4, 9, 0x2, 15, 0x2, 21, 0x2,
   27, 0x2, 10, 0x2, 16, 0x2, 22, 0x2,
   28, 0x2, 11, 0x2, 17, 0x2, 23, 0x2,
   29, 0x2, 12, 0x2, 18, 0x2, 24, 0x2,
   30, 0x2, 9, 0x1, 15, 0x1, 21, 0x1,
   27, 0x1, 10, 0x1, 16, 0x1, 22, 0x1,
   28, 0x1, 11, 0x1, 17, 0x1, 23, 0x1,
   29, 0x1, 12, 0x1, 18, 0x1, 24, 0x1,
   30, 0x1
};
const Word16 mode_12k[NBBITS_12k << 1] = {
   0, 0x1, 1, 0x10, 1, 0x4, 14, 0x40,
   21, 0x40, 28, 0x40, 35, 0x40, 1, 0x2,
   1, 0x8, 1, 0x20, 8, 0x100, 8, 0x80,
   8, 0x40, 8, 0x20, 8, 0x10, 22, 0x100,
   22, 0x80, 22, 0x40, 22, 0x20, 22, 0x10,
   14, 0x20, 21, 0x20, 28, 0x20, 35, 0x20,
   14, 0x1, 21, 0x1, 28, 0x1, 35, 0x1,
   14, 0x8, 21, 0x8, 28, 0x8, 35, 0x8,
   14, 0x4, 21, 0x4, 28, 0x4, 35, 0x4,
   15, 0x20, 29, 0x20, 14, 0x2, 21, 0x2,
   28, 0x2, 35, 0x2, 14, 0x10, 21, 0x10,
   28, 0x10, 35, 0x10, 8, 0x8, 1, 0x40,
   1, 0x80, 15, 0x10, 29, 0x10, 22, 0x8,
   3, 0x8, 3, 0x2, 2, 0x10, 3, 0x20,
   3, 0x10, 3, 0x4, 2, 0x1, 4, 0x10,
   2, 0x8, 2, 0x40, 2, 0x4, 4, 0x20,
   4, 0x40, 3, 0x1, 4, 0x8, 1, 0x1,
   2, 0x2, 8, 0x4, 22, 0x4, 5, 0x20,
   15, 0x8, 29, 0x8, 2, 0x80, 5, 0x8,
   2, 0x20, 15, 0x4, 29, 0x4, 8, 0x2,
   22, 0x2, 4, 0x2, 4, 0x4, 15, 0x2,
   29, 0x2, 5, 0x4, 5, 0x2, 4, 0x1,
   7, 0x1, 5, 0x10, 5, 0x40, 8, 0x1,
   22, 0x1, 6, 0x10, 5, 0x1, 6, 0x4,
   6, 0x8, 6, 0x2, 15, 0x1, 29, 0x1,
   6, 0x1, 7, 0x10, 7, 0x8, 7, 0x4,
   7, 0x2, 9, 0x1, 16, 0x1, 23, 0x1,
   30, 0x1, 10, 0x100, 11, 0x100, 12, 0x100,
   13, 0x100, 17, 0x100, 18, 0x100, 19, 0x100,
   20, 0x100, 24, 0x100, 25, 0x100, 26, 0x100,
   27, 0x100, 31, 0x100, 32, 0x100, 33, 0x100,
   34, 0x100, 10, 0x80, 17, 0x80, 24, 0x80,
   31, 0x80, 10, 0x8, 17, 0x8, 24, 0x8,
   31, 0x8, 11, 0x80, 18, 0x80, 25, 0x80,
   32, 0x80, 11, 0x8, 18, 0x8, 25, 0x8,
   32, 0x8, 12, 0x80, 19, 0x80, 26, 0x80,
   33, 0x80, 12, 0x8, 19, 0x8, 26, 0x8,
   33, 0x8, 13, 0x80, 20, 0x80, 27, 0x80,
   34, 0x80, 13, 0x8, 20, 0x8, 27, 0x8,
   34, 0x8, 10, 0x40, 17, 0x40, 24, 0x40,
   31, 0x40, 10, 0x4, 17, 0x4, 24, 0x4,
   31, 0x4, 11, 0x40, 18, 0x40, 25, 0x40,
   32, 0x40, 11, 0x4, 18, 0x4, 25, 0x4,
   32, 0x4, 12, 0x40, 19, 0x40, 26, 0x40,
   33, 0x40, 12, 0x4, 19, 0x4, 26, 0x4,
   33, 0x4, 13, 0x40, 20, 0x40, 27, 0x40,
   34, 0x40, 13, 0x4, 20, 0x4, 27, 0x4,
   34, 0x4, 10, 0x20, 17, 0x20, 24, 0x20,
   31, 0x20, 10, 0x2, 17, 0x2, 24, 0x2,
   31, 0x2, 11, 0x20, 18, 0x20, 25, 0x20,
   32, 0x20, 11, 0x2, 18, 0x2, 25, 0x2,
   32, 0x2, 12, 0x20, 19, 0x20, 26, 0x20,
   33, 0x20, 12, 0x2, 19, 0x2, 26, 0x2,
   33, 0x2, 13, 0x20, 20, 0x20, 27, 0x20,
   34, 0x20, 13, 0x2, 20, 0x2, 27, 0x2,
   34, 0x2, 10, 0x10, 17, 0x10, 24, 0x10,
   31, 0x10, 10, 0x1, 17, 0x1, 24, 0x1,
   31, 0x1, 11, 0x10, 18, 0x10, 25, 0x10,
   32, 0x10, 11, 0x1, 18, 0x1, 25, 0x1,
   32, 0x1, 12, 0x10, 19, 0x10, 26, 0x10,
   33, 0x10, 12, 0x1, 19, 0x1, 26, 0x1,
   33, 0x1, 13, 0x10, 20, 0x10, 27, 0x10,
   34, 0x10, 13, 0x1, 20, 0x1, 27, 0x1,
   34, 0x1
};
const Word16 mode_14k[NBBITS_14k << 1] = {
   0, 0x1, 1, 0x10, 1, 0x4, 14, 0x40,
   21, 0x40, 28, 0x40, 35, 0x40, 1, 0x2,
   1, 0x8, 1, 0x20, 8, 0x100, 8, 0x80,
   8, 0x40, 8, 0x20, 8, 0x10, 22, 0x100,
   22, 0x80, 22, 0x40, 22, 0x20, 22, 0x10,
   14, 0x20, 21, 0x20, 28, 0x20, 35, 0x20,
   14, 0x1, 21, 0x1, 28, 0x1, 35, 0x1,
   14, 0x8, 21, 0x8, 28, 0x8, 35, 0x8,
   14, 0x4, 21, 0x4, 28, 0x4, 35, 0x4,
   15, 0x20, 29, 0x20, 14, 0x2, 21, 0x2,
   28, 0x2, 35, 0x2, 14, 0x10, 21, 0x10,
   28, 0x10, 35, 0x10, 8, 0x8, 1, 0x40,
   1, 0x80, 15, 0x10, 29, 0x10, 22, 0x8,
   3, 0x8, 3, 0x2, 2, 0x10, 3, 0x20,
   3, 0x10, 3, 0x4, 2, 0x1, 4, 0x10,
   2, 0x8, 2, 0x40, 2, 0x4, 4, 0x20,
   4, 0x40, 3, 0x1, 4, 0x8, 1, 0x1,
   2, 0x2, 8, 0x4, 22, 0x4, 5, 0x20,
   15, 0x8, 29, 0x8, 2, 0x80, 5, 0x8,
   2, 0x20, 15, 0x4, 29, 0x4, 8, 0x2,
   22, 0x2, 4, 0x2, 4, 0x4, 15, 0x2,
   29, 0x2, 5, 0x4, 5, 0x2, 4, 0x1,
   7, 0x1, 5, 0x10, 5, 0x40, 8, 0x1,
   22, 0x1, 6, 0x10, 5, 0x1, 6, 0x4,
   6, 0x8, 6, 0x2, 15, 0x1, 29, 0x1,
   6, 0x1, 7, 0x10, 7, 0x8, 7, 0x4,
   7, 0x2, 9, 0x1, 16, 0x1, 23, 0x1,
   30, 0x1, 10, 0x80, 17, 0x80, 24, 0x80,
   31, 0x80, 11, 0x80, 18, 0x80, 25, 0x80,
   32, 0x80, 10, 0x1000, 17, 0x1000, 24, 0x1000,
   31, 0x1000, 10, 0x40, 17, 0x40, 24, 0x40,
   31, 0x40, 11, 0x1000, 18, 0x1000, 25, 0x1000,
   32, 0x1000, 11, 0x40, 18, 0x40, 25, 0x40,
   32, 0x40, 12, 0x100, 19, 0x100, 26, 0x100,
   33, 0x100, 13, 0x100, 20, 0x100, 27, 0x100,
   34, 0x100, 12, 0x80, 19, 0x80, 26, 0x80,
   33, 0x80, 13, 0x80, 20, 0x80, 27, 0x80,
   34, 0x80, 12, 0x40, 19, 0x40, 26, 0x40,
   33, 0x40, 13, 0x40, 20, 0x40, 27, 0x40,
   34, 0x40, 12, 0x20, 19, 0x20, 26, 0x20,
   33, 0x20, 13, 0x20, 20, 0x20, 27, 0x20,
   34, 0x20, 10, 0x20, 17, 0x20, 24, 0x20,
   31, 0x20, 11, 0x20, 18, 0x20, 25, 0x20,
   32, 0x20, 10, 0x10, 17, 0x10, 24, 0x10,
   31, 0x10, 11, 0x10, 18, 0x10, 25, 0x10,
   32, 0x10, 12, 0x10, 19, 0x10, 26, 0x10,
   33, 0x10, 13, 0x10, 20, 0x10, 27, 0x10,
   34, 0x10, 10, 0x800, 17, 0x800, 24, 0x800,
   31, 0x800, 10, 0x8, 17, 0x8, 24, 0x8,
   31, 0x8, 11, 0x800, 18, 0x800, 25, 0x800,
   32, 0x800, 11, 0x8, 18, 0x8, 25, 0x8,
   32, 0x8, 12, 0x8, 19, 0x8, 26, 0x8,
   33, 0x8, 13, 0x8, 20, 0x8, 27, 0x8,
   34, 0x8, 10, 0x400, 17, 0x400, 24, 0x400,
   31, 0x400, 10, 0x4, 17, 0x4, 24, 0x4,
   31, 0x4, 11, 0x400, 18, 0x400, 25, 0x400,
   32, 0x400, 11, 0x4, 18, 0x4, 25, 0x4,
   32, 0x4, 12, 0x4, 19, 0x4, 26, 0x4,
   33, 0x4, 13, 0x4, 20, 0x4, 27, 0x4,
   34, 0x4, 10, 0x200, 17, 0x200, 24, 0x200,
   31, 0x200, 10, 0x2, 17, 0x2, 24, 0x2,
   31, 0x2, 11, 0x200, 18, 0x200, 25, 0x200,
   32, 0x200, 11, 0x2, 18, 0x2, 25, 0x2,
   32, 0x2, 12, 0x2, 19, 0x2, 26, 0x2,
   33, 0x2, 13, 0x2, 20, 0x2, 27, 0x2,
   34, 0x2, 10, 0x100, 17, 0x100, 24, 0x100,
   31, 0x100, 10, 0x1, 17, 0x1, 24, 0x1,
   31, 0x1, 11, 0x100, 18, 0x100, 25, 0x100,
   32, 0x100, 11, 0x1, 18, 0x1, 25, 0x1,
   32, 0x1, 12, 0x1, 19, 0x1, 26, 0x1,
   33, 0x1, 13, 0x1, 20, 0x1, 27, 0x1,
   34, 0x1
};
const Word16 mode_16k[NBBITS_16k << 1] = {
   0, 0x1, 1, 0x10, 1, 0x4, 14, 0x40,
   21, 0x40, 28, 0x40, 35, 0x40, 1, 0x2,
   1, 0x8, 1, 0x20, 8, 0x100, 8, 0x80,
   8, 0x40, 8, 0x20, 8, 0x10, 22, 0x100,
   22, 0x80, 22, 0x40, 22, 0x20, 22, 0x10,
   14, 0x20, 21, 0x20, 28, 0x20, 35, 0x20,
   14, 0x1, 21, 0x1, 28, 0x1, 35, 0x1,
   14, 0x8, 21, 0x8, 28, 0x8, 35, 0x8,
   14, 0x4, 21, 0x4, 28, 0x4, 35, 0x4,
   15, 0x20, 29, 0x20, 14, 0x2, 21, 0x2,
   28, 0x2, 35, 0x2, 14, 0x10, 21, 0x10,
   28, 0x10, 35, 0x10, 8, 0x8, 1, 0x40,
   1, 0x80, 15, 0x10, 29, 0x10, 22, 0x8,
   3, 0x8, 3, 0x2, 2, 0x10, 3, 0x20,
   3, 0x10, 3, 0x4, 2, 0x1, 4, 0x10,
   2, 0x8, 2, 0x40, 2, 0x4, 4, 0x20,
   4, 0x40, 3, 0x1, 4, 0x8, 1, 0x1,
   2, 0x2, 8, 0x4, 22, 0x4, 5, 0x20,
   15, 0x8, 29, 0x8, 2, 0x80, 5, 0x8,
   2, 0x20, 15, 0x4, 29, 0x4, 8, 0x2,
   22, 0x2, 4, 0x2, 4, 0x4, 15, 0x2,
   29, 0x2, 5, 0x4, 5, 0x2, 4, 0x1,
   7, 0x1, 5, 0x10, 5, 0x40, 8, 0x1,
   22, 0x1, 6, 0x10, 5, 0x1, 6, 0x4,
   6, 0x8, 6, 0x2, 15, 0x1, 29, 0x1,
   6, 0x1, 7, 0x10, 7, 0x8, 7, 0x4,
   7, 0x2, 9, 0x1, 16, 0x1, 23, 0x1,
   30, 0x1, 10, 0x40, 17, 0x40, 24, 0x40,
   31, 0x40, 11, 0x40, 18, 0x40, 25, 0x40,
   32, 0x40, 12, 0x40, 19, 0x40, 26, 0x40,
   33, 0x40, 13, 0x40, 20, 0x40, 27, 0x40,
   34, 0x40, 10, 0x1000, 17, 0x1000, 24, 0x1000,
   31, 0x1000, 11, 0x1000, 18, 0x1000, 25, 0x1000,
   32, 0x1000, 12, 0x1000, 19, 0x1000, 26, 0x1000,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -