diff options
author | Kostya Shishkov <kostya.shishkov@gmail.com> | 2013-09-07 21:06:22 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2013-11-26 08:31:10 +0100 |
commit | a16577d9857206089fd8bce6a342b31dbd7fb9b0 (patch) | |
tree | 45a4d07e2dddcd076bd0bf04ed2b4c65ed8e5d44 /libavcodec/gsmdec_data.c | |
parent | 56d061ce9da954560892e3551513d5ecc0439846 (diff) | |
download | ffmpeg-a16577d9857206089fd8bce6a342b31dbd7fb9b0.tar.gz |
MSN Audio support
This is essentially a MS GSM decoder extension that supports more
sampling rates and lower bitrates.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Diffstat (limited to 'libavcodec/gsmdec_data.c')
-rw-r--r-- | libavcodec/gsmdec_data.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/libavcodec/gsmdec_data.c b/libavcodec/gsmdec_data.c index 8b75bb6a67..c9b3183a55 100644 --- a/libavcodec/gsmdec_data.c +++ b/libavcodec/gsmdec_data.c @@ -92,3 +92,29 @@ const int16_t ff_gsm_dequant_tab[64][8] = { {-26879, -19199, -11520, -3840, 3840, 11520, 19199, 26879}, {-28671, -20479, -12288, -4096, 4096, 12288, 20479, 28671} }; + +static const int apcm_bits[11][13] = { + { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, + { 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, + { 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, + { 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 } +}; + +const int* const ff_gsm_apcm_bits[][4] = { + { apcm_bits[10], apcm_bits[10], apcm_bits[10], apcm_bits[10] }, // 13000 + { apcm_bits[10], apcm_bits[10], apcm_bits[10], apcm_bits[ 6] }, // 12400 + { apcm_bits[10], apcm_bits[10], apcm_bits[ 7], apcm_bits[ 5] }, // 11800 + { apcm_bits[10], apcm_bits[ 8], apcm_bits[ 5], apcm_bits[ 5] }, // 11200 + { apcm_bits[ 9], apcm_bits[ 5], apcm_bits[ 5], apcm_bits[ 5] }, // 10600 + { apcm_bits[ 5], apcm_bits[ 5], apcm_bits[ 5], apcm_bits[ 1] }, // 10000 + { apcm_bits[ 5], apcm_bits[ 5], apcm_bits[ 2], apcm_bits[ 0] }, // 9400 + { apcm_bits[ 5], apcm_bits[ 3], apcm_bits[ 0], apcm_bits[ 0] }, // 8800 + { apcm_bits[ 4], apcm_bits[ 0], apcm_bits[ 0], apcm_bits[ 0] }, // 8200 +}; |