Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
79a9aab5
Commit
79a9aab5
authored
Jul 15, 2011
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove unused and non-compiling vestigial g729 decoder
parent
a005174b
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
1 addition
and
661 deletions
+1
-661
acelp_vectors.c
libavcodec/acelp_vectors.c
+0
-20
acelp_vectors.h
libavcodec/acelp_vectors.h
+0
-31
amrnbdec.c
libavcodec/amrnbdec.c
+1
-1
g729data.h
libavcodec/g729data.h
+0
-278
g729dec.c
libavcodec/g729dec.c
+0
-331
No files found.
libavcodec/acelp_vectors.c
View file @
79a9aab5
...
...
@@ -48,26 +48,6 @@ const uint8_t ff_fc_2pulses_9bits_track1_gray[16] =
28
,
26
,
};
const
uint8_t
ff_fc_2pulses_9bits_track2_gray
[
32
]
=
{
0
,
2
,
5
,
4
,
12
,
10
,
7
,
9
,
25
,
24
,
20
,
22
,
14
,
15
,
19
,
17
,
36
,
31
,
21
,
26
,
1
,
6
,
16
,
11
,
27
,
29
,
32
,
30
,
39
,
37
,
34
,
35
,
};
const
uint8_t
ff_fc_4pulses_8bits_tracks_13
[
16
]
=
{
0
,
5
,
10
,
15
,
20
,
25
,
30
,
35
,
40
,
45
,
50
,
55
,
60
,
65
,
70
,
75
,
...
...
libavcodec/acelp_vectors.h
View file @
79a9aab5
...
...
@@ -81,37 +81,6 @@ extern const uint8_t ff_fc_4pulses_8bits_track_4[32];
extern
const
uint8_t
ff_fc_2pulses_9bits_track1
[
16
];
extern
const
uint8_t
ff_fc_2pulses_9bits_track1_gray
[
16
];
/**
* Track|Pulse| Positions
* -----------------------------------------
* 2 | 1 | 0, 7, 14, 20, 27, 34, 1, 21
* | | 2, 9, 15, 22, 29, 35, 6, 26
* | | 4,10, 17, 24, 30, 37, 11, 31
* | | 5,12, 19, 25, 32, 39, 16, 36
* -----------------------------------------
*
* @remark Track in the table should be read top-to-bottom, left-to-right.
*
* @note (EE.1) This table (from the reference code) does not comply with
* the specification.
* The specification contains the following table:
*
* Track|Pulse| Positions
* -----------------------------------------
* 2 | 1 | 0, 5, 10, 15, 20, 25, 30, 35
* | | 1, 6, 11, 16, 21, 26, 31, 36
* | | 2, 7, 12, 17, 22, 27, 32, 37
* | | 4, 9, 14, 19, 24, 29, 34, 39
*
* -----------------------------------------
*
* @note (EE.2) Reference G.729D code also uses gray decoding for each
* pulse index before looking up the value in the table.
*
* Used in G.729 @@6.4k (with gray coding)
*/
extern
const
uint8_t
ff_fc_2pulses_9bits_track2_gray
[
32
];
/**
* b60 hamming windowed sinc function coefficients
*/
...
...
libavcodec/amrnbdec.c
View file @
79a9aab5
...
...
@@ -83,7 +83,7 @@
/** Maximum sharpening factor
*
* The specification says 0.8, which should be 13107, but the reference C code
* uses 13017 instead. (Amusingly the same applies to SHARP_MAX in
g729dec.c
.)
* uses 13017 instead. (Amusingly the same applies to SHARP_MAX in
bitexact G.729
.)
*/
#define SHARP_MAX 0.79449462890625
...
...
libavcodec/g729data.h
deleted
100644 → 0
View file @
a005174b
/*
* data for G.729 decoder
* Copyright (c) 2007 Vladimir Voroshilov
*
* This file is part of Libav.
*
* Libav is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Libav is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef AVCODEC_G729DATA_H
#define AVCODEC_G729DATA_H
#include <stdint.h>
#define MA_NP 4 ///< Moving Average (MA) prediction order
#define VQ_1ST_BITS 7 ///< first stage vector of quantizer (size in bits)
#define VQ_2ND_BITS 5 ///< second stage vector of quantizer (size in bits)
#define GC_1ST_IDX_BITS_8K 3 ///< gain codebook (first stage) index, 8k mode (size in bits)
#define GC_2ND_IDX_BITS_8K 4 ///< gain codebook (second stage) index, 8k mode (size in bits)
#define GC_1ST_IDX_BITS_6K4 3 ///< gain codebook (first stage) index, 6.4k mode (size in bits)
#define GC_2ND_IDX_BITS_6K4 3 ///< gain codebook (second stage) index, 6.4k mode (size in bits)
/**
* first stage LSP codebook
* (10-dimensional, with 128 entries (3.24 of G.729)
*/
static
const
int16_t
cb_lsp_1st
[
1
<<
VQ_1ST_BITS
][
10
]
=
{
/* (2.13) */
{
1486
,
2168
,
3751
,
9074
,
12134
,
13944
,
17983
,
19173
,
21190
,
21820
},
{
1730
,
2640
,
3450
,
4870
,
6126
,
7876
,
15644
,
17817
,
20294
,
21902
},
{
1568
,
2256
,
3088
,
4874
,
11063
,
13393
,
18307
,
19293
,
21109
,
21741
},
{
1733
,
2512
,
3357
,
4708
,
6977
,
10296
,
17024
,
17956
,
19145
,
20350
},
{
1744
,
2436
,
3308
,
8731
,
10432
,
12007
,
15614
,
16639
,
21359
,
21913
},
{
1786
,
2369
,
3372
,
4521
,
6795
,
12963
,
17674
,
18988
,
20855
,
21640
},
{
1631
,
2433
,
3361
,
6328
,
10709
,
12013
,
13277
,
13904
,
19441
,
21088
},
{
1489
,
2364
,
3291
,
6250
,
9227
,
10403
,
13843
,
15278
,
17721
,
21451
},
{
1869
,
2533
,
3475
,
4365
,
9152
,
14513
,
15908
,
17022
,
20611
,
21411
},
{
2070
,
3025
,
4333
,
5854
,
7805
,
9231
,
10597
,
16047
,
20109
,
21834
},
{
1910
,
2673
,
3419
,
4261
,
11168
,
15111
,
16577
,
17591
,
19310
,
20265
},
{
1141
,
1815
,
2624
,
4623
,
6495
,
9588
,
13968
,
16428
,
19351
,
21286
},
{
2192
,
3171
,
4707
,
5808
,
10904
,
12500
,
14162
,
15664
,
21124
,
21789
},
{
1286
,
1907
,
2548
,
3453
,
9574
,
11964
,
15978
,
17344
,
19691
,
22495
},
{
1921
,
2720
,
4604
,
6684
,
11503
,
12992
,
14350
,
15262
,
16997
,
20791
},
{
2052
,
2759
,
3897
,
5246
,
6638
,
10267
,
15834
,
16814
,
18149
,
21675
},
{
1798
,
2497
,
5617
,
11449
,
13189
,
14711
,
17050
,
18195
,
20307
,
21182
},
{
1009
,
1647
,
2889
,
5709
,
9541
,
12354
,
15231
,
18494
,
20966
,
22033
},
{
3016
,
3794
,
5406
,
7469
,
12488
,
13984
,
15328
,
16334
,
19952
,
20791
},
{
2203
,
3040
,
3796
,
5442
,
11987
,
13512
,
14931
,
16370
,
17856
,
18803
},
{
2912
,
4292
,
7988
,
9572
,
11562
,
13244
,
14556
,
16529
,
20004
,
21073
},
{
2861
,
3607
,
5923
,
7034
,
9234
,
12054
,
13729
,
18056
,
20262
,
20974
},
{
3069
,
4311
,
5967
,
7367
,
11482
,
12699
,
14309
,
16233
,
18333
,
19172
},
{
2434
,
3661
,
4866
,
5798
,
10383
,
11722
,
13049
,
15668
,
18862
,
19831
},
{
2020
,
2605
,
3860
,
9241
,
13275
,
14644
,
16010
,
17099
,
19268
,
20251
},
{
1877
,
2809
,
3590
,
4707
,
11056
,
12441
,
15622
,
17168
,
18761
,
19907
},
{
2107
,
2873
,
3673
,
5799
,
13579
,
14687
,
15938
,
17077
,
18890
,
19831
},
{
1612
,
2284
,
2944
,
3572
,
8219
,
13959
,
15924
,
17239
,
18592
,
20117
},
{
2420
,
3156
,
6542
,
10215
,
12061
,
13534
,
15305
,
16452
,
18717
,
19880
},
{
1667
,
2612
,
3534
,
5237
,
10513
,
11696
,
12940
,
16798
,
18058
,
19378
},
{
2388
,
3017
,
4839
,
9333
,
11413
,
12730
,
15024
,
16248
,
17449
,
18677
},
{
1875
,
2786
,
4231
,
6320
,
8694
,
10149
,
11785
,
17013
,
18608
,
19960
},
{
679
,
1411
,
4654
,
8006
,
11446
,
13249
,
15763
,
18127
,
20361
,
21567
},
{
1838
,
2596
,
3578
,
4608
,
5650
,
11274
,
14355
,
15886
,
20579
,
21754
},
{
1303
,
1955
,
2395
,
3322
,
12023
,
13764
,
15883
,
18077
,
20180
,
21232
},
{
1438
,
2102
,
2663
,
3462
,
8328
,
10362
,
13763
,
17248
,
19732
,
22344
},
{
860
,
1904
,
6098
,
7775
,
9815
,
12007
,
14821
,
16709
,
19787
,
21132
},
{
1673
,
2723
,
3704
,
6125
,
7668
,
9447
,
13683
,
14443
,
20538
,
21731
},
{
1246
,
1849
,
2902
,
4508
,
7221
,
12710
,
14835
,
16314
,
19335
,
22720
},
{
1525
,
2260
,
3862
,
5659
,
7342
,
11748
,
13370
,
14442
,
18044
,
21334
},
{
1196
,
1846
,
3104
,
7063
,
10972
,
12905
,
14814
,
17037
,
19922
,
22636
},
{
2147
,
3106
,
4475
,
6511
,
8227
,
9765
,
10984
,
12161
,
18971
,
21300
},
{
1585
,
2405
,
2994
,
4036
,
11481
,
13177
,
14519
,
15431
,
19967
,
21275
},
{
1778
,
2688
,
3614
,
4680
,
9465
,
11064
,
12473
,
16320
,
19742
,
20800
},
{
1862
,
2586
,
3492
,
6719
,
11708
,
13012
,
14364
,
16128
,
19610
,
20425
},
{
1395
,
2156
,
2669
,
3386
,
10607
,
12125
,
13614
,
16705
,
18976
,
21367
},
{
1444
,
2117
,
3286
,
6233
,
9423
,
12981
,
14998
,
15853
,
17188
,
21857
},
{
2004
,
2895
,
3783
,
4897
,
6168
,
7297
,
12609
,
16445
,
19297
,
21465
},
{
1495
,
2863
,
6360
,
8100
,
11399
,
14271
,
15902
,
17711
,
20479
,
22061
},
{
2484
,
3114
,
5718
,
7097
,
8400
,
12616
,
14073
,
14847
,
20535
,
21396
},
{
2424
,
3277
,
5296
,
6284
,
11290
,
12903
,
16022
,
17508
,
19333
,
20283
},
{
2565
,
3778
,
5360
,
6989
,
8782
,
10428
,
14390
,
15742
,
17770
,
21734
},
{
2727
,
3384
,
6613
,
9254
,
10542
,
12236
,
14651
,
15687
,
20074
,
21102
},
{
1916
,
2953
,
6274
,
8088
,
9710
,
10925
,
12392
,
16434
,
20010
,
21183
},
{
3384
,
4366
,
5349
,
7667
,
11180
,
12605
,
13921
,
15324
,
19901
,
20754
},
{
3075
,
4283
,
5951
,
7619
,
9604
,
11010
,
12384
,
14006
,
20658
,
21497
},
{
1751
,
2455
,
5147
,
9966
,
11621
,
13176
,
14739
,
16470
,
20788
,
21756
},
{
1442
,
2188
,
3330
,
6813
,
8929
,
12135
,
14476
,
15306
,
19635
,
20544
},
{
2294
,
2895
,
4070
,
8035
,
12233
,
13416
,
14762
,
17367
,
18952
,
19688
},
{
1937
,
2659
,
4602
,
6697
,
9071
,
12863
,
14197
,
15230
,
16047
,
18877
},
{
2071
,
2663
,
4216
,
9445
,
10887
,
12292
,
13949
,
14909
,
19236
,
20341
},
{
1740
,
2491
,
3488
,
8138
,
9656
,
11153
,
13206
,
14688
,
20896
,
21907
},
{
2199
,
2881
,
4675
,
8527
,
10051
,
11408
,
14435
,
15463
,
17190
,
20597
},
{
1943
,
2988
,
4177
,
6039
,
7478
,
8536
,
14181
,
15551
,
17622
,
21579
},
{
1825
,
3175
,
7062
,
9818
,
12824
,
15450
,
18330
,
19856
,
21830
,
22412
},
{
2464
,
3046
,
4822
,
5977
,
7696
,
15398
,
16730
,
17646
,
20588
,
21320
},
{
2550
,
3393
,
5305
,
6920
,
10235
,
14083
,
18143
,
19195
,
20681
,
21336
},
{
3003
,
3799
,
5321
,
6437
,
7919
,
11643
,
15810
,
16846
,
18119
,
18980
},
{
3455
,
4157
,
6838
,
8199
,
9877
,
12314
,
15905
,
16826
,
19949
,
20892
},
{
3052
,
3769
,
4891
,
5810
,
6977
,
10126
,
14788
,
15990
,
19773
,
20904
},
{
3671
,
4356
,
5827
,
6997
,
8460
,
12084
,
14154
,
14939
,
19247
,
20423
},
{
2716
,
3684
,
5246
,
6686
,
8463
,
10001
,
12394
,
14131
,
16150
,
19776
},
{
1945
,
2638
,
4130
,
7995
,
14338
,
15576
,
17057
,
18206
,
20225
,
20997
},
{
2304
,
2928
,
4122
,
4824
,
5640
,
13139
,
15825
,
16938
,
20108
,
21054
},
{
1800
,
2516
,
3350
,
5219
,
13406
,
15948
,
17618
,
18540
,
20531
,
21252
},
{
1436
,
2224
,
2753
,
4546
,
9657
,
11245
,
15177
,
16317
,
17489
,
19135
},
{
2319
,
2899
,
4980
,
6936
,
8404
,
13489
,
15554
,
16281
,
20270
,
20911
},
{
2187
,
2919
,
4610
,
5875
,
7390
,
12556
,
14033
,
16794
,
20998
,
21769
},
{
2235
,
2923
,
5121
,
6259
,
8099
,
13589
,
15340
,
16340
,
17927
,
20159
},
{
1765
,
2638
,
3751
,
5730
,
7883
,
10108
,
13633
,
15419
,
16808
,
18574
},
{
3460
,
5741
,
9596
,
11742
,
14413
,
16080
,
18173
,
19090
,
20845
,
21601
},
{
3735
,
4426
,
6199
,
7363
,
9250
,
14489
,
16035
,
17026
,
19873
,
20876
},
{
3521
,
4778
,
6887
,
8680
,
12717
,
14322
,
15950
,
18050
,
20166
,
21145
},
{
2141
,
2968
,
6865
,
8051
,
10010
,
13159
,
14813
,
15861
,
17528
,
18655
},
{
4148
,
6128
,
9028
,
10871
,
12686
,
14005
,
15976
,
17208
,
19587
,
20595
},
{
4403
,
5367
,
6634
,
8371
,
10163
,
11599
,
14963
,
16331
,
17982
,
18768
},
{
4091
,
5386
,
6852
,
8770
,
11563
,
13290
,
15728
,
16930
,
19056
,
20102
},
{
2746
,
3625
,
5299
,
7504
,
10262
,
11432
,
13172
,
15490
,
16875
,
17514
},
{
2248
,
3556
,
8539
,
10590
,
12665
,
14696
,
16515
,
17824
,
20268
,
21247
},
{
1279
,
1960
,
3920
,
7793
,
10153
,
14753
,
16646
,
18139
,
20679
,
21466
},
{
2440
,
3475
,
6737
,
8654
,
12190
,
14588
,
17119
,
17925
,
19110
,
19979
},
{
1879
,
2514
,
4497
,
7572
,
10017
,
14948
,
16141
,
16897
,
18397
,
19376
},
{
2804
,
3688
,
7490
,
10086
,
11218
,
12711
,
16307
,
17470
,
20077
,
21126
},
{
2023
,
2682
,
3873
,
8268
,
10255
,
11645
,
15187
,
17102
,
18965
,
19788
},
{
2823
,
3605
,
5815
,
8595
,
10085
,
11469
,
16568
,
17462
,
18754
,
19876
},
{
2851
,
3681
,
5280
,
7648
,
9173
,
10338
,
14961
,
16148
,
17559
,
18474
},
{
1348
,
2645
,
5826
,
8785
,
10620
,
12831
,
16255
,
18319
,
21133
,
22586
},
{
2141
,
3036
,
4293
,
6082
,
7593
,
10629
,
17158
,
18033
,
21466
,
22084
},
{
1608
,
2375
,
3384
,
6878
,
9970
,
11227
,
16928
,
17650
,
20185
,
21120
},
{
2774
,
3616
,
5014
,
6557
,
7788
,
8959
,
17068
,
18302
,
19537
,
20542
},
{
1934
,
4813
,
6204
,
7212
,
8979
,
11665
,
15989
,
17811
,
20426
,
21703
},
{
2288
,
3507
,
5037
,
6841
,
8278
,
9638
,
15066
,
16481
,
21653
,
22214
},
{
2951
,
3771
,
4878
,
7578
,
9016
,
10298
,
14490
,
15242
,
20223
,
20990
},
{
3256
,
4791
,
6601
,
7521
,
8644
,
9707
,
13398
,
16078
,
19102
,
20249
},
{
1827
,
2614
,
3486
,
6039
,
12149
,
13823
,
16191
,
17282
,
21423
,
22041
},
{
1000
,
1704
,
3002
,
6335
,
8471
,
10500
,
14878
,
16979
,
20026
,
22427
},
{
1646
,
2286
,
3109
,
7245
,
11493
,
12791
,
16824
,
17667
,
18981
,
20222
},
{
1708
,
2501
,
3315
,
6737
,
8729
,
9924
,
16089
,
17097
,
18374
,
19917
},
{
2623
,
3510
,
4478
,
5645
,
9862
,
11115
,
15219
,
18067
,
19583
,
20382
},
{
2518
,
3434
,
4728
,
6388
,
8082
,
9285
,
13162
,
18383
,
19819
,
20552
},
{
1726
,
2383
,
4090
,
6303
,
7805
,
12845
,
14612
,
17608
,
19269
,
20181
},
{
2860
,
3735
,
4838
,
6044
,
7254
,
8402
,
14031
,
16381
,
18037
,
19410
},
{
4247
,
5993
,
7952
,
9792
,
12342
,
14653
,
17527
,
18774
,
20831
,
21699
},
{
3502
,
4051
,
5680
,
6805
,
8146
,
11945
,
16649
,
17444
,
20390
,
21564
},
{
3151
,
4893
,
5899
,
7198
,
11418
,
13073
,
15124
,
17673
,
20520
,
21861
},
{
3960
,
4848
,
5926
,
7259
,
8811
,
10529
,
15661
,
16560
,
18196
,
20183
},
{
4499
,
6604
,
8036
,
9251
,
10804
,
12627
,
15880
,
17512
,
20020
,
21046
},
{
4251
,
5541
,
6654
,
8318
,
9900
,
11686
,
15100
,
17093
,
20572
,
21687
},
{
3769
,
5327
,
7865
,
9360
,
10684
,
11818
,
13660
,
15366
,
18733
,
19882
},
{
3083
,
3969
,
6248
,
8121
,
9798
,
10994
,
12393
,
13686
,
17888
,
19105
},
{
2731
,
4670
,
7063
,
9201
,
11346
,
13735
,
16875
,
18797
,
20787
,
22360
},
{
1187
,
2227
,
4737
,
7214
,
9622
,
12633
,
15404
,
17968
,
20262
,
23533
},
{
1911
,
2477
,
3915
,
10098
,
11616
,
12955
,
16223
,
17138
,
19270
,
20729
},
{
1764
,
2519
,
3887
,
6944
,
9150
,
12590
,
16258
,
16984
,
17924
,
18435
},
{
1400
,
3674
,
7131
,
8718
,
10688
,
12508
,
15708
,
17711
,
19720
,
21068
},
{
2322
,
3073
,
4287
,
8108
,
9407
,
10628
,
15862
,
16693
,
19714
,
21474
},
{
2630
,
3339
,
4758
,
8360
,
10274
,
11333
,
12880
,
17374
,
19221
,
19936
},
{
1721
,
2577
,
5553
,
7195
,
8651
,
10686
,
15069
,
16953
,
18703
,
19929
}
};
/**
* second stage LSP codebook, high and low parts
(both 5-dimensional, with 32 entries (3.2.4 of G.729)
*/
static
const
int16_t
cb_lsp_2nd
[
1
<<
VQ_2ND_BITS
][
10
]
=
{
/* (2.13) */
{
-
435
,
-
815
,
-
742
,
1033
,
-
518
,
582
,
-
1201
,
829
,
86
,
385
},
{
-
833
,
-
891
,
463
,
-
8
,
-
1251
,
1450
,
72
,
-
231
,
864
,
661
},
{
-
1021
,
231
,
-
306
,
321
,
-
220
,
-
163
,
-
526
,
-
754
,
-
1633
,
267
},
{
57
,
-
198
,
-
339
,
-
33
,
-
1468
,
573
,
796
,
-
169
,
-
631
,
816
},
{
171
,
-
350
,
294
,
1660
,
453
,
519
,
291
,
159
,
-
640
,
-
1296
},
{
-
701
,
-
842
,
-
58
,
950
,
892
,
1549
,
715
,
527
,
-
714
,
-
193
},
{
584
,
31
,
-
289
,
356
,
-
333
,
-
457
,
612
,
-
283
,
-
1381
,
-
741
},
{
-
109
,
-
808
,
231
,
77
,
-
87
,
-
344
,
1341
,
1087
,
-
654
,
-
569
},
{
-
859
,
1236
,
550
,
854
,
714
,
-
543
,
-
1752
,
-
195
,
-
98
,
-
276
},
{
-
877
,
-
954
,
-
1248
,
-
299
,
212
,
-
235
,
-
728
,
949
,
1517
,
895
},
{
-
77
,
344
,
-
620
,
763
,
413
,
502
,
-
362
,
-
960
,
-
483
,
1386
},
{
-
314
,
-
307
,
-
256
,
-
1260
,
-
429
,
450
,
-
466
,
-
108
,
1010
,
2223
},
{
711
,
693
,
521
,
650
,
1305
,
-
28
,
-
378
,
744
,
-
1005
,
240
},
{
-
112
,
-
271
,
-
500
,
946
,
1733
,
271
,
-
15
,
909
,
-
259
,
1688
},
{
575
,
-
10
,
-
468
,
-
199
,
1101
,
-
1011
,
581
,
-
53
,
-
747
,
878
},
{
145
,
-
285
,
-
1280
,
-
398
,
36
,
-
498
,
-
1377
,
18
,
-
444
,
1483
},
{
-
1133
,
-
835
,
1350
,
1284
,
-
95
,
1015
,
-
222
,
443
,
372
,
-
354
},
{
-
1459
,
-
1237
,
416
,
-
213
,
466
,
669
,
659
,
1640
,
932
,
534
},
{
-
15
,
66
,
468
,
1019
,
-
748
,
1385
,
-
182
,
-
907
,
-
721
,
-
262
},
{
-
338
,
148
,
1445
,
75
,
-
760
,
569
,
1247
,
337
,
416
,
-
121
},
{
389
,
239
,
1568
,
981
,
113
,
369
,
-
1003
,
-
507
,
-
587
,
-
904
},
{
-
312
,
-
98
,
949
,
31
,
1104
,
72
,
-
141
,
1465
,
63
,
-
785
},
{
1127
,
584
,
835
,
277
,
-
1159
,
208
,
301
,
-
882
,
117
,
-
404
},
{
539
,
-
114
,
856
,
-
493
,
223
,
-
912
,
623
,
-
76
,
276
,
-
440
},
{
2197
,
2337
,
1268
,
670
,
304
,
-
267
,
-
525
,
140
,
882
,
-
139
},
{
-
1596
,
550
,
801
,
-
456
,
-
56
,
-
697
,
865
,
1060
,
413
,
446
},
{
1154
,
593
,
-
77
,
1237
,
-
31
,
581
,
-
1037
,
-
895
,
669
,
297
},
{
397
,
558
,
203
,
-
797
,
-
919
,
3
,
692
,
-
292
,
1050
,
782
},
{
334
,
1475
,
632
,
-
80
,
48
,
-
1061
,
-
484
,
362
,
-
597
,
-
852
},
{
-
545
,
-
330
,
-
429
,
-
680
,
1133
,
-
1182
,
-
744
,
1340
,
262
,
63
},
{
1320
,
827
,
-
398
,
-
576
,
341
,
-
774
,
-
483
,
-
1247
,
-
70
,
98
},
{
-
163
,
674
,
-
11
,
-
886
,
531
,
-
1125
,
-
265
,
-
242
,
724
,
934
}
};
/**
* gain codebook (first stage), 8k mode (3.9.2 of G.729)
*/
static
const
int16_t
cb_gain_1st_8k
[
1
<<
GC_1ST_IDX_BITS_8K
][
2
]
=
{
/*(0.14) (2.13) */
{
3242
,
9949
},
{
1551
,
2425
},
{
2678
,
27162
},
{
1921
,
9291
},
{
1831
,
5022
},
{
1
,
1516
},
{
356
,
14756
},
{
57
,
5404
},
};
/**
* gain codebook (second stage), 8k mode (3.9.2 of G.729)
*/
static
const
int16_t
cb_gain_2nd_8k
[
1
<<
GC_2ND_IDX_BITS_8K
][
2
]
=
{
/*(1.14) (1.13) */
{
5142
,
592
},
{
17299
,
1861
},
{
6160
,
2395
},
{
16112
,
3392
},
{
826
,
2005
},
{
18973
,
5935
},
{
1994
,
0
},
{
15434
,
237
},
{
10573
,
2966
},
{
15132
,
4914
},
{
11569
,
1196
},
{
14194
,
1630
},
{
8091
,
4861
},
{
15161
,
14276
},
{
9120
,
525
},
{
13260
,
3256
},
};
/**
* 4th order Moving Average (MA) Predictor codebook (3.2.4 of G.729)
*/
static
const
int16_t
cb_ma_predictor
[
2
][
MA_NP
][
10
]
=
{
/* (0.15) */
{
{
8421
,
9109
,
9175
,
8965
,
9034
,
9057
,
8765
,
8775
,
9106
,
8673
},
{
7018
,
7189
,
7638
,
7307
,
7444
,
7379
,
7038
,
6956
,
6930
,
6868
},
{
5472
,
4990
,
5134
,
5177
,
5246
,
5141
,
5206
,
5095
,
4830
,
5147
},
{
4056
,
3031
,
2614
,
3024
,
2916
,
2713
,
3309
,
3237
,
2857
,
3473
}
},
{
{
7733
,
7880
,
8188
,
8175
,
8247
,
8490
,
8637
,
8601
,
8359
,
7569
},
{
4210
,
3031
,
2552
,
3473
,
3876
,
3853
,
4184
,
4154
,
3909
,
3968
},
{
3214
,
1930
,
1313
,
2143
,
2493
,
2385
,
2755
,
2706
,
2542
,
2919
},
{
3024
,
1592
,
940
,
1631
,
1723
,
1579
,
2034
,
2084
,
1913
,
2601
}
}
};
static
const
int16_t
cb_ma_predictor_sum
[
2
][
10
]
=
{
/* (0.15) */
{
7798
,
8447
,
8205
,
8293
,
8126
,
8477
,
8447
,
8703
,
9043
,
8604
},
{
14585
,
18333
,
19772
,
17344
,
16426
,
16459
,
15155
,
15220
,
16043
,
15708
}
};
/**
* initial LSP coefficients belongs to virtual frame preceding the
* first frame of the stream
*/
static
const
int16_t
lsp_init
[
10
]
=
{
/* (0.15) */
30000
,
26000
,
21000
,
15000
,
8000
,
0
,
-
8000
,
-
15000
,
-
21000
,
-
26000
};
#endif
/* AVCODEC_G729DATA_H */
libavcodec/g729dec.c
deleted
100644 → 0
View file @
a005174b
/*
* G.729 decoder
* Copyright (c) 2008 Vladimir Voroshilov
*
* This file is part of Libav.
*
* Libav is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Libav is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <stdlib.h>
#include <inttypes.h>
#include <limits.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <assert.h>
#include "avcodec.h"
#include "libavutil/avutil.h"
#include "get_bits.h"
#include "lsp.h"
#include "celp_math.h"
#include "acelp_filters.h"
#include "acelp_pitch_delay.h"
#include "acelp_vectors.h"
#include "g729data.h"
/**
* minimum quantized LSF value (3.2.4)
* 0.005 in Q13
*/
#define LSFQ_MIN 40
/**
* maximum quantized LSF value (3.2.4)
* 3.135 in Q13
*/
#define LSFQ_MAX 25681
/**
* minimum LSF distance (3.2.4)
* 0.0391 in Q13
*/
#define LSFQ_DIFF_MIN 321
/**
* minimum gain pitch value (3.8, Equation 47)
* 0.2 in (1.14)
*/
#define SHARP_MIN 3277
/**
* maximum gain pitch value (3.8, Equation 47)
* (EE) This does not comply with the specification.
* Specification says about 0.8, which should be
* 13107 in (1.14), but reference C code uses
* 13017 (equals to 0.7945) instead of it.
*/
#define SHARP_MAX 13017
/**
* subframe size
*/
#define SUBFRAME_SIZE 40
typedef
struct
{
uint8_t
ac_index_bits
[
2
];
///< adaptive codebook index for second subframe (size in bits)
uint8_t
parity_bit
;
///< parity bit for pitch delay
uint8_t
gc_1st_index_bits
;
///< gain codebook (first stage) index (size in bits)
uint8_t
gc_2nd_index_bits
;
///< gain codebook (second stage) index (size in bits)
uint8_t
fc_signs_bits
;
///< number of pulses in fixed-codebook vector
uint8_t
fc_indexes_bits
;
///< size (in bits) of fixed-codebook index entry
}
G729FormatDescription
;
typedef
struct
{
int
pitch_delay_int_prev
;
///< integer part of previous subframe's pitch delay (4.1.3)
/// (2.13) LSP quantizer outputs
int16_t
past_quantizer_output_buf
[
MA_NP
+
1
][
10
];
int16_t
*
past_quantizer_outputs
[
MA_NP
+
1
];
int16_t
lsfq
[
10
];
///< (2.13) quantized LSF coefficients from previous frame
int16_t
lsp_buf
[
2
][
10
];
///< (0.15) LSP coefficients (previous and current frames) (3.2.5)
int16_t
*
lsp
[
2
];
///< pointers to lsp_buf
}
G729Context
;
static
const
G729FormatDescription
format_g729_8k
=
{
.
ac_index_bits
=
{
8
,
5
},
.
parity_bit
=
1
,
.
gc_1st_index_bits
=
GC_1ST_IDX_BITS_8K
,
.
gc_2nd_index_bits
=
GC_2ND_IDX_BITS_8K
,
.
fc_signs_bits
=
4
,
.
fc_indexes_bits
=
13
,
};
static
const
G729FormatDescription
format_g729d_6k4
=
{
.
ac_index_bits
=
{
8
,
4
},
.
parity_bit
=
0
,
.
gc_1st_index_bits
=
GC_1ST_IDX_BITS_6K4
,
.
gc_2nd_index_bits
=
GC_2ND_IDX_BITS_6K4
,
.
fc_signs_bits
=
2
,
.
fc_indexes_bits
=
9
,
};
/**
* @brief pseudo random number generator
*/
static
inline
uint16_t
g729_prng
(
uint16_t
value
)
{
return
31821
*
value
+
13849
;
}
/**
* Get parity bit of bit 2..7
*/
static
inline
int
get_parity
(
uint8_t
value
)
{
return
(
0x6996966996696996ULL
>>
(
value
>>
2
))
&
1
;
}
static
void
lsf_decode
(
int16_t
*
lsfq
,
int16_t
*
past_quantizer_outputs
[
MA_NP
+
1
],
int16_t
ma_predictor
,
int16_t
vq_1st
,
int16_t
vq_2nd_low
,
int16_t
vq_2nd_high
)
{
int
i
,
j
;
static
const
uint8_t
min_distance
[
2
]
=
{
10
,
5
};
//(2.13)
int16_t
*
quantizer_output
=
past_quantizer_outputs
[
MA_NP
];
for
(
i
=
0
;
i
<
5
;
i
++
)
{
quantizer_output
[
i
]
=
cb_lsp_1st
[
vq_1st
][
i
]
+
cb_lsp_2nd
[
vq_2nd_low
][
i
];
quantizer_output
[
i
+
5
]
=
cb_lsp_1st
[
vq_1st
][
i
+
5
]
+
cb_lsp_2nd
[
vq_2nd_high
][
i
+
5
];
}
for
(
j
=
0
;
j
<
2
;
j
++
)
{
for
(
i
=
1
;
i
<
10
;
i
++
)
{
int
diff
=
(
quantizer_output
[
i
-
1
]
-
quantizer_output
[
i
]
+
min_distance
[
j
])
>>
1
;
if
(
diff
>
0
)
{
quantizer_output
[
i
-
1
]
-=
diff
;
quantizer_output
[
i
]
+=
diff
;
}
}
}
for
(
i
=
0
;
i
<
10
;
i
++
)
{
int
sum
=
quantizer_output
[
i
]
*
cb_ma_predictor_sum
[
ma_predictor
][
i
];
for
(
j
=
0
;
j
<
MA_NP
;
j
++
)
sum
+=
past_quantizer_outputs
[
j
][
i
]
*
cb_ma_predictor
[
ma_predictor
][
j
][
i
];
lsfq
[
i
]
=
sum
>>
15
;
}
/* Rotate past_quantizer_outputs. */
memmove
(
past_quantizer_outputs
+
1
,
past_quantizer_outputs
,
MA_NP
*
sizeof
(
int16_t
*
));
past_quantizer_outputs
[
0
]
=
quantizer_output
;
ff_acelp_reorder_lsf
(
lsfq
,
LSFQ_DIFF_MIN
,
LSFQ_MIN
,
LSFQ_MAX
,
10
);
}
static
av_cold
int
decoder_init
(
AVCodecContext
*
avctx
)
{
G729Context
*
ctx
=
avctx
->
priv_data
;
int
i
,
k
;
if
(
avctx
->
channels
!=
1
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Only mono sound is supported (requested channels: %d).
\n
"
,
avctx
->
channels
);
return
AVERROR
(
EINVAL
);
}
/* Both 8kbit/s and 6.4kbit/s modes uses two subframes per frame. */
avctx
->
frame_size
=
SUBFRAME_SIZE
<<
1
;
for
(
k
=
0
;
k
<
MA_NP
+
1
;
k
++
)
{
ctx
->
past_quantizer_outputs
[
k
]
=
ctx
->
past_quantizer_output_buf
[
k
];
for
(
i
=
1
;
i
<
11
;
i
++
)
ctx
->
past_quantizer_outputs
[
k
][
i
-
1
]
=
(
18717
*
i
)
>>
3
;
}
ctx
->
lsp
[
0
]
=
ctx
->
lsp_buf
[
0
];
ctx
->
lsp
[
1
]
=
ctx
->
lsp_buf
[
1
];
memcpy
(
ctx
->
lsp
[
0
],
lsp_init
,
10
*
sizeof
(
int16_t
));
return
0
;
}
static
int
decode_frame
(
AVCodecContext
*
avctx
,
void
*
data
,
int
*
data_size
,
AVPacket
*
avpkt
)
{
const
uint8_t
*
buf
=
avpkt
->
data
;
int
buf_size
=
avpkt
->
size
;
int16_t
*
out_frame
=
data
;
GetBitContext
gb
;
G729FormatDescription
format
;
int
frame_erasure
=
0
;
///< frame erasure detected during decoding
int
bad_pitch
=
0
;
///< parity check failed
int
i
;
G729Context
*
ctx
=
avctx
->
priv_data
;
int16_t
lp
[
2
][
11
];
// (3.12)
uint8_t
ma_predictor
;
///< switched MA predictor of LSP quantizer
uint8_t
quantizer_1st
;
///< first stage vector of quantizer
uint8_t
quantizer_2nd_lo
;
///< second stage lower vector of quantizer (size in bits)
uint8_t
quantizer_2nd_hi
;
///< second stage higher vector of quantizer (size in bits)
int
pitch_delay_int
;
// pitch delay, integer part
int
pitch_delay_3x
;
// pitch delay, multiplied by 3
if
(
*
data_size
<
SUBFRAME_SIZE
<<
2
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Error processing packet: output buffer too small
\n
"
);
return
AVERROR
(
EIO
);
}
if
(
buf_size
==
10
)
{
format
=
format_g729_8k
;
av_log
(
avctx
,
AV_LOG_DEBUG
,
"Packet type: %s
\n
"
,
"G.729 @ 8kbit/s"
);
}
else
if
(
buf_size
==
8
)
{
format
=
format_g729d_6k4
;
av_log
(
avctx
,
AV_LOG_DEBUG
,
"Packet type: %s
\n
"
,
"G.729D @ 6.4kbit/s"
);
}
else
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Packet size %d is unknown.
\n
"
,
buf_size
);
return
AVERROR_INVALIDDATA
;
}
for
(
i
=
0
;
i
<
buf_size
;
i
++
)
frame_erasure
|=
buf
[
i
];
frame_erasure
=
!
frame_erasure
;
init_get_bits
(
&
gb
,
buf
,
buf_size
);
ma_predictor
=
get_bits
(
&
gb
,
1
);
quantizer_1st
=
get_bits
(
&
gb
,
VQ_1ST_BITS
);
quantizer_2nd_lo
=
get_bits
(
&
gb
,
VQ_2ND_BITS
);
quantizer_2nd_hi
=
get_bits
(
&
gb
,
VQ_2ND_BITS
);
lsf_decode
(
ctx
->
lsfq
,
ctx
->
past_quantizer_outputs
,
ma_predictor
,
quantizer_1st
,
quantizer_2nd_lo
,
quantizer_2nd_hi
);
ff_acelp_lsf2lsp
(
ctx
->
lsp
[
1
],
ctx
->
lsfq
,
10
);
ff_acelp_lp_decode
(
&
lp
[
0
][
0
],
&
lp
[
1
][
0
],
ctx
->
lsp
[
1
],
ctx
->
lsp
[
0
],
10
);
FFSWAP
(
int16_t
*
,
ctx
->
lsp
[
1
],
ctx
->
lsp
[
0
]);
for
(
i
=
0
;
i
<
2
;
i
++
)
{
uint8_t
ac_index
;
///< adaptive codebook index
uint8_t
pulses_signs
;
///< fixed-codebook vector pulse signs
int
fc_indexes
;
///< fixed-codebook indexes
uint8_t
gc_1st_index
;
///< gain codebook (first stage) index
uint8_t
gc_2nd_index
;
///< gain codebook (second stage) index
ac_index
=
get_bits
(
&
gb
,
format
.
ac_index_bits
[
i
]);
if
(
!
i
&&
format
.
parity_bit
)
bad_pitch
=
get_parity
(
ac_index
)
==
get_bits1
(
&
gb
);
fc_indexes
=
get_bits
(
&
gb
,
format
.
fc_indexes_bits
);
pulses_signs
=
get_bits
(
&
gb
,
format
.
fc_signs_bits
);
gc_1st_index
=
get_bits
(
&
gb
,
format
.
gc_1st_index_bits
);
gc_2nd_index
=
get_bits
(
&
gb
,
format
.
gc_2nd_index_bits
);
if
(
!
i
)
{
if
(
bad_pitch
)
pitch_delay_3x
=
3
*
ctx
->
pitch_delay_int_prev
;
else
pitch_delay_3x
=
ff_acelp_decode_8bit_to_1st_delay3
(
ac_index
);
}
else
{
int
pitch_delay_min
=
av_clip
(
ctx
->
pitch_delay_int_prev
-
5
,
PITCH_DELAY_MIN
,
PITCH_DELAY_MAX
-
9
);
if
(
packet_type
==
FORMAT_G729D_6K4
)
pitch_delay_3x
=
ff_acelp_decode_4bit_to_2nd_delay3
(
ac_index
,
pitch_delay_min
);
else
pitch_delay_3x
=
ff_acelp_decode_5_6_bit_to_2nd_delay3
(
ac_index
,
pitch_delay_min
);
}
/* Round pitch delay to nearest (used everywhere except ff_acelp_interpolate). */
pitch_delay_int
=
(
pitch_delay_3x
+
1
)
/
3
;
ff_acelp_weighted_vector_sum
(
fc
+
pitch_delay_int
,
fc
+
pitch_delay_int
,
fc
,
1
<<
14
,
av_clip
(
ctx
->
gain_pitch
,
SHARP_MIN
,
SHARP_MAX
),
0
,
14
,
SUBFRAME_SIZE
-
pitch_delay_int
);
if
(
frame_erasure
)
{
ctx
->
gain_pitch
=
(
29491
*
ctx
->
gain_pitch
)
>>
15
;
// 0.90 (0.15)
ctx
->
gain_code
=
(
2007
*
ctx
->
gain_code
)
>>
11
;
// 0.98 (0.11)
gain_corr_factor
=
0
;
}
else
{
ctx
->
gain_pitch
=
cb_gain_1st_8k
[
gc_1st_index
][
0
]
+
cb_gain_2nd_8k
[
gc_2nd_index
][
0
];
gain_corr_factor
=
cb_gain_1st_8k
[
gc_1st_index
][
1
]
+
cb_gain_2nd_8k
[
gc_2nd_index
][
1
];
ff_acelp_weighted_vector_sum
(
ctx
->
exc
+
i
*
SUBFRAME_SIZE
,
ctx
->
exc
+
i
*
SUBFRAME_SIZE
,
fc
,
(
!
voicing
&&
frame_erasure
)
?
0
:
ctx
->
gain_pitch
,
(
voicing
&&
frame_erasure
)
?
0
:
ctx
->
gain_code
,
1
<<
13
,
14
,
SUBFRAME_SIZE
);
ctx
->
pitch_delay_int_prev
=
pitch_delay_int
;
}
*
data_size
=
SUBFRAME_SIZE
<<
2
;
return
buf_size
;
}
AVCodec
ff_g729_decoder
=
{
"g729"
,
AVMEDIA_TYPE_AUDIO
,
CODEC_ID_G729
,
sizeof
(
G729Context
),
decoder_init
,
NULL
,
NULL
,
decode_frame
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"G.729"
),
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment