summaryrefslogtreecommitdiff
Diffstat
-rw-r--r--Android.mk1
-rwxr-xr-xamadec/Android.mk282
-rw-r--r--amadec/acodec_lib_50/libstagefright_soft_dcvdec.so80
-rw-r--r--amadec/acodec_lib_50/libstagefright_soft_dtshd.so85
-rw-r--r--amadec/acodec_lib_50/libstagefright_soft_truehddec.so41
-rw-r--r--amadec/acodec_lib_android_n/libstagefright_soft_dcvdec.so109
-rw-r--r--amadec/acodec_lib_android_n/libstagefright_soft_dtshd.so272
-rw-r--r--amadec/acodec_lib_android_n/libstagefright_soft_truehddec.so87
-rwxr-xr-xamadec/acodec_lib_mx/libstagefright_soft_ddpdec.so113
-rwxr-xr-xamadec/acodec_lib_mx/libstagefright_soft_dtshd.so121
-rw-r--r--amadec/adec-armdec-mgt.h57
-rw-r--r--amadec/adec-external-ctrl.c899
-rw-r--r--amadec/adec-ffmpeg-mgt.c1550
-rw-r--r--amadec/adec-internal-mgt.c772
-rw-r--r--amadec/adec-message.c156
-rw-r--r--amadec/adec-message.h61
-rwxr-xr-xamadec/adec-pts-mgt.c1107
-rw-r--r--amadec/adec-pts-mgt.h82
-rw-r--r--amadec/adec-wfd-out.cpp361
-rw-r--r--amadec/adec-wfd.c811
-rw-r--r--amadec/adec_omx_brige.c284
-rw-r--r--amadec/adec_omx_brige.h56
-rw-r--r--amadec/adec_read.c200
-rw-r--r--amadec/adec_reg.h76
-rw-r--r--amadec/adec_write.c189
-rw-r--r--amadec/adec_write.h42
-rw-r--r--amadec/audio-dec.h314
-rw-r--r--amadec/audio_out/alsa-out.c1082
-rw-r--r--amadec/audio_out/aml_resample.c708
-rw-r--r--amadec/audio_out/aml_resample.h86
-rwxr-xr-xamadec/audio_out/android-out.cpp1640
-rw-r--r--amadec/audiodsp_update_format.c188
-rw-r--r--amadec/dsp/audiodsp-ctl.c471
-rw-r--r--amadec/dts_enc.c209
-rw-r--r--amadec/dts_enc.h11
-rw-r--r--amadec/dts_transenc_api.c143
-rw-r--r--amadec/dts_transenc_api.h19
-rw-r--r--amadec/feeder.c231
-rw-r--r--amadec/feeder.h26
-rw-r--r--amadec/include/adec-external-ctrl.h63
-rwxr-xr-xamadec/include/adec-macros.h41
-rw-r--r--amadec/include/adec-types.h53
-rwxr-xr-xamadec/include/alsa-out.h26
-rw-r--r--amadec/include/audio-out.h41
-rw-r--r--amadec/include/audiodsp.h142
-rw-r--r--amadec/include/audiodsp_update_format.h25
-rw-r--r--amadec/include/log-print.h26
-rwxr-xr-xamadec/omx_audio/ALAC_mediasource.cpp205
-rw-r--r--amadec/omx_audio/ALAC_mediasource.h62
-rwxr-xr-xamadec/omx_audio/ASF_mediasource.cpp184
-rw-r--r--amadec/omx_audio/ASF_mediasource.h127
-rwxr-xr-xamadec/omx_audio/Android.mk34
-rwxr-xr-xamadec/omx_audio/DDP_mediasource.cpp528
-rw-r--r--amadec/omx_audio/DDP_mediasource.h141
-rw-r--r--amadec/omx_audio/DTSHD_mediasource.cpp316
-rw-r--r--amadec/omx_audio/DTSHD_mediasource.h74
-rwxr-xr-xamadec/omx_audio/MP3_mediasource.cpp579
-rw-r--r--amadec/omx_audio/MP3_mediasource.h80
-rw-r--r--amadec/omx_audio/THD_mediasource.cpp229
-rw-r--r--amadec/omx_audio/THD_mediasource.h74
-rwxr-xr-xamadec/omx_audio/Vorbis_mediasource.cpp245
-rw-r--r--amadec/omx_audio/Vorbis_mediasource.h58
-rw-r--r--amadec/omx_audio/adec_omx.cpp421
-rw-r--r--amadec/omx_audio/adec_omx.h71
-rwxr-xr-xamadec/omx_audio/audio_mediasource.cpp37
-rw-r--r--amadec/omx_audio/audio_mediasource.h46
-rw-r--r--amadec/omx_audio/audio_medissource.h137
-rw-r--r--amadec/pcmenc_api.c147
-rw-r--r--amadec/pcmenc_api.h25
-rw-r--r--amadec/spdif_api.c306
-rw-r--r--amadec/spdif_api.h26
-rwxr-xr-xaudio_codec/Android.mk1
-rw-r--r--audio_codec/config.mk10
-rwxr-xr-xaudio_codec/libadpcm/Android.mk12
-rw-r--r--audio_codec/libadpcm/adpcm.h346
-rw-r--r--audio_codec/libadpcm/adpcm_decode.c841
-rwxr-xr-xaudio_codec/libamr/Android.mk25
-rwxr-xr-xaudio_codec/libamr/Makefile5
-rw-r--r--audio_codec/libamr/amr_decode.c186
-rw-r--r--audio_codec/libamr/amr_decode.h8
-rwxr-xr-xaudio_codec/libamr/dec.h18
-rw-r--r--audio_codec/libamr/dec_acelp.c620
-rwxr-xr-xaudio_codec/libamr/dec_acelp.h17
-rw-r--r--audio_codec/libamr/dec_dtx.c683
-rw-r--r--audio_codec/libamr/dec_dtx.h49
-rw-r--r--audio_codec/libamr/dec_gain.c853
-rw-r--r--audio_codec/libamr/dec_gain.h28
-rw-r--r--audio_codec/libamr/dec_if.c834
-rwxr-xr-xaudio_codec/libamr/dec_if.h23
-rw-r--r--audio_codec/libamr/dec_lpc.c789
-rw-r--r--audio_codec/libamr/dec_lpc.h25
-rw-r--r--audio_codec/libamr/dec_main.c842
-rw-r--r--audio_codec/libamr/dec_main.h57
-rw-r--r--audio_codec/libamr/dec_rom.c2114
-rw-r--r--audio_codec/libamr/dec_util.c1304
-rw-r--r--audio_codec/libamr/dec_util.h33
-rw-r--r--audio_codec/libamr/if_rom.c1030
-rwxr-xr-xaudio_codec/libamr/if_rom.h70
-rw-r--r--audio_codec/libamr/interf_dec.c906
-rw-r--r--audio_codec/libamr/interf_dec.h56
-rw-r--r--audio_codec/libamr/interf_rom.h1788
-rw-r--r--audio_codec/libamr/rom_dec.h13274
-rw-r--r--audio_codec/libamr/sp_dec.c6078
-rw-r--r--audio_codec/libamr/sp_dec.h83
-rwxr-xr-xaudio_codec/libamr/typedef.h17
-rwxr-xr-xaudio_codec/libape/Android.mk28
-rw-r--r--audio_codec/libape/Ape_decoder.h216
-rw-r--r--audio_codec/libape/amlogic_r30813_audio_ape_lib.c1
-rw-r--r--audio_codec/libape/apedec.c1120
-rw-r--r--audio_codec/libcook/Android.mk28
-rw-r--r--audio_codec/libcook/aac_bitstream.h133
-rw-r--r--audio_codec/libcook/aac_decode.h148
-rw-r--r--audio_codec/libcook/aac_reorder.h53
-rw-r--r--audio_codec/libcook/assembly.h119
-rw-r--r--audio_codec/libcook/challenge.h132
-rw-r--r--audio_codec/libcook/codec_defines.h93
-rw-r--r--audio_codec/libcook/coder.h287
-rw-r--r--audio_codec/libcook/cook_codec.h30
-rw-r--r--audio_codec/libcook/cook_decode.c624
-rw-r--r--audio_codec/libcook/cook_decode.h35
-rw-r--r--audio_codec/libcook/ga_config.h86
-rw-r--r--audio_codec/libcook/gecko2codec.c833
-rw-r--r--audio_codec/libcook/gecko2codec.h60
-rw-r--r--audio_codec/libcook/helix_config.h92
-rw-r--r--audio_codec/libcook/helix_mime_types.h56
-rw-r--r--audio_codec/libcook/helix_result.h107
-rw-r--r--audio_codec/libcook/helix_types.h305
-rw-r--r--audio_codec/libcook/helix_utils.h106
-rw-r--r--audio_codec/libcook/md5.h113
-rw-r--r--audio_codec/libcook/memory_utils.c100
-rw-r--r--audio_codec/libcook/memory_utils.h58
-rw-r--r--audio_codec/libcook/pack_utils.c306
-rw-r--r--audio_codec/libcook/pack_utils.h93
-rw-r--r--audio_codec/libcook/packet_defines.h48
-rw-r--r--audio_codec/libcook/ra8lbr_decode.c378
-rw-r--r--audio_codec/libcook/ra8lbr_decode.h161
-rw-r--r--audio_codec/libcook/ra_backend.h94
-rw-r--r--audio_codec/libcook/ra_bitpack.c197
-rw-r--r--audio_codec/libcook/ra_buffers.c127
-rw-r--r--audio_codec/libcook/ra_category.c298
-rw-r--r--audio_codec/libcook/ra_couple.c224
-rw-r--r--audio_codec/libcook/ra_decode.c321
-rw-r--r--audio_codec/libcook/ra_decode.h183
-rw-r--r--audio_codec/libcook/ra_depack.c230
-rw-r--r--audio_codec/libcook/ra_depack.h177
-rw-r--r--audio_codec/libcook/ra_depack_internal.c1710
-rw-r--r--audio_codec/libcook/ra_depack_internal.h232
-rw-r--r--audio_codec/libcook/ra_envelope.c123
-rw-r--r--audio_codec/libcook/ra_fft.c368
-rw-r--r--audio_codec/libcook/ra_format_info.h60
-rw-r--r--audio_codec/libcook/ra_gainctrl.c584
-rw-r--r--audio_codec/libcook/ra_huffman.c86
-rw-r--r--audio_codec/libcook/ra_hufftabs.c244
-rw-r--r--audio_codec/libcook/ra_mlt.c357
-rw-r--r--audio_codec/libcook/ra_sqvh.c431
-rw-r--r--audio_codec/libcook/ra_trigtabs.c932
-rw-r--r--audio_codec/libcook/rasl.c376
-rw-r--r--audio_codec/libcook/rasl.h71
-rw-r--r--audio_codec/libcook/rdtpck.h153
-rw-r--r--audio_codec/libcook/rm_error.h54
-rw-r--r--audio_codec/libcook/rm_error_default.c58
-rw-r--r--audio_codec/libcook/rm_error_default.h53
-rw-r--r--audio_codec/libcook/rm_io_default.c101
-rw-r--r--audio_codec/libcook/rm_io_default.h49
-rw-r--r--audio_codec/libcook/rm_memory.h54
-rw-r--r--audio_codec/libcook/rm_memory_default.c54
-rw-r--r--audio_codec/libcook/rm_memory_default.h46
-rw-r--r--audio_codec/libcook/rm_packet.c117
-rw-r--r--audio_codec/libcook/rm_packet.h80
-rw-r--r--audio_codec/libcook/rm_parse.h302
-rw-r--r--audio_codec/libcook/rm_parser.c649
-rw-r--r--audio_codec/libcook/rm_parser_internal.c3342
-rw-r--r--audio_codec/libcook/rm_parser_internal.h420
-rw-r--r--audio_codec/libcook/rm_property.c105
-rw-r--r--audio_codec/libcook/rm_property.h107
-rw-r--r--audio_codec/libcook/rm_stream.c356
-rw-r--r--audio_codec/libcook/rm_stream.h115
-rw-r--r--audio_codec/libcook/rm_stream_internal.h77
-rw-r--r--audio_codec/libcook/rv20backend.h69
-rw-r--r--audio_codec/libcook/rv30backend.h68
-rw-r--r--audio_codec/libcook/rv_backend.h84
-rw-r--r--audio_codec/libcook/rv_backend_types.h198
-rw-r--r--audio_codec/libcook/rv_decode.h208
-rw-r--r--audio_codec/libcook/rv_decode_message.h492
-rw-r--r--audio_codec/libcook/rv_depack.c271
-rw-r--r--audio_codec/libcook/rv_depack.h162
-rw-r--r--audio_codec/libcook/rv_depack_internal.c1071
-rw-r--r--audio_codec/libcook/rv_depack_internal.h171
-rw-r--r--audio_codec/libcook/rv_format_info.h91
-rw-r--r--audio_codec/libcook/statname.h118
-rw-r--r--audio_codec/libcook/stream_hdr_structs.h66
-rw-r--r--audio_codec/libcook/stream_hdr_utils.c136
-rw-r--r--audio_codec/libcook/stream_hdr_utils.h77
-rw-r--r--audio_codec/libcook/string_utils.c87
-rw-r--r--audio_codec/libcook/string_utils.h62
-rw-r--r--audio_codec/libcook/tngpkt.h400
-rwxr-xr-xaudio_codec/libfaad/Android.mk101
-rwxr-xr-xaudio_codec/libfaad/Makefile130
-rw-r--r--audio_codec/libfaad/analysis.h52
-rwxr-xr-xaudio_codec/libfaad/audio.d3
-rw-r--r--audio_codec/libfaad/bits.c261
-rwxr-xr-xaudio_codec/libfaad/bits.d18
-rw-r--r--audio_codec/libfaad/bits.h446
-rw-r--r--audio_codec/libfaad/cfft.c988
-rw-r--r--audio_codec/libfaad/cfft.h55
-rw-r--r--audio_codec/libfaad/cfft_tab.h1816
-rw-r--r--audio_codec/libfaad/codebook/hcb.h140
-rw-r--r--audio_codec/libfaad/codebook/hcb_1.h186
-rw-r--r--audio_codec/libfaad/codebook/hcb_10.h312
-rw-r--r--audio_codec/libfaad/codebook/hcb_11.h415
-rw-r--r--audio_codec/libfaad/codebook/hcb_2.h185
-rw-r--r--audio_codec/libfaad/codebook/hcb_3.h196
-rw-r--r--audio_codec/libfaad/codebook/hcb_4.h199
-rw-r--r--audio_codec/libfaad/codebook/hcb_5.h196
-rw-r--r--audio_codec/libfaad/codebook/hcb_6.h182
-rw-r--r--audio_codec/libfaad/codebook/hcb_7.h162
-rw-r--r--audio_codec/libfaad/codebook/hcb_8.h173
-rw-r--r--audio_codec/libfaad/codebook/hcb_9.h372
-rw-r--r--audio_codec/libfaad/codebook/hcb_sf.h276
-rw-r--r--audio_codec/libfaad/common.c558
-rw-r--r--audio_codec/libfaad/common.h453
-rw-r--r--audio_codec/libfaad/decoder.c2266
-rw-r--r--audio_codec/libfaad/drc.c173
-rw-r--r--audio_codec/libfaad/drc.h49
-rw-r--r--audio_codec/libfaad/drm_dec.c912
-rw-r--r--audio_codec/libfaad/drm_dec.h99
-rw-r--r--audio_codec/libfaad/error.c72
-rw-r--r--audio_codec/libfaad/error.h44
-rw-r--r--audio_codec/libfaad/filtbank.c408
-rw-r--r--audio_codec/libfaad/filtbank.h61
-rw-r--r--audio_codec/libfaad/fixed.h287
-rw-r--r--audio_codec/libfaad/hcr.c422
-rw-r--r--audio_codec/libfaad/helixaac/aaccommon.h210
-rw-r--r--audio_codec/libfaad/helixaac/aacdec.c508
-rw-r--r--audio_codec/libfaad/helixaac/aacdec.h206
-rw-r--r--audio_codec/libfaad/helixaac/aactabs.c157
-rw-r--r--audio_codec/libfaad/helixaac/assembly.h631
-rw-r--r--audio_codec/libfaad/helixaac/assembly_mw.h743
-rw-r--r--audio_codec/libfaad/helixaac/bitstream.c261
-rw-r--r--audio_codec/libfaad/helixaac/bitstream.h74
-rw-r--r--audio_codec/libfaad/helixaac/buffers.c140
-rw-r--r--audio_codec/libfaad/helixaac/coder.h369
-rw-r--r--audio_codec/libfaad/helixaac/dct4.c337
-rw-r--r--audio_codec/libfaad/helixaac/decelmnt.c445
-rw-r--r--audio_codec/libfaad/helixaac/dequant.c379
-rw-r--r--audio_codec/libfaad/helixaac/fft.c391
-rw-r--r--audio_codec/libfaad/helixaac/filefmt.c539
-rw-r--r--audio_codec/libfaad/helixaac/huffman_helix.c450
-rw-r--r--audio_codec/libfaad/helixaac/hufftabs.c177
-rw-r--r--audio_codec/libfaad/helixaac/imdct.c596
-rw-r--r--audio_codec/libfaad/helixaac/noiseless.c513
-rw-r--r--audio_codec/libfaad/helixaac/pns_helix.c371
-rw-r--r--audio_codec/libfaad/helixaac/sbr.c433
-rw-r--r--audio_codec/libfaad/helixaac/sbr.h380
-rw-r--r--audio_codec/libfaad/helixaac/sbrfft.c368
-rw-r--r--audio_codec/libfaad/helixaac/sbrfreq.c673
-rw-r--r--audio_codec/libfaad/helixaac/sbrhfadj.c882
-rw-r--r--audio_codec/libfaad/helixaac/sbrhfgen.c655
-rw-r--r--audio_codec/libfaad/helixaac/sbrhuff.c494
-rw-r--r--audio_codec/libfaad/helixaac/sbrimdct.c447
-rw-r--r--audio_codec/libfaad/helixaac/sbrmath.c198
-rw-r--r--audio_codec/libfaad/helixaac/sbrqmf.c648
-rw-r--r--audio_codec/libfaad/helixaac/sbrside.c634
-rw-r--r--audio_codec/libfaad/helixaac/sbrtabs.c400
-rw-r--r--audio_codec/libfaad/helixaac/statname.h115
-rw-r--r--audio_codec/libfaad/helixaac/stproc.c251
-rw-r--r--audio_codec/libfaad/helixaac/tns_helix.c307
-rw-r--r--audio_codec/libfaad/helixaac/trigtabs.c1000
-rw-r--r--audio_codec/libfaad/helixaac/trigtabs_fltgen.c357
-rw-r--r--audio_codec/libfaad/huffman.c582
-rw-r--r--audio_codec/libfaad/huffman.h47
-rw-r--r--audio_codec/libfaad/ic_predict.c258
-rw-r--r--audio_codec/libfaad/ic_predict.h252
-rw-r--r--audio_codec/libfaad/iq_table.h16456
-rw-r--r--audio_codec/libfaad/is.c106
-rw-r--r--audio_codec/libfaad/is.h67
-rw-r--r--audio_codec/libfaad/kbd_win.h2294
-rw-r--r--audio_codec/libfaad/libaacdec.c544
-rw-r--r--audio_codec/libfaad/libaacdec.h64
-rwxr-xr-xaudio_codec/libfaad/libfaad2.def14
-rw-r--r--audio_codec/libfaad/lt_predict.c205
-rw-r--r--audio_codec/libfaad/lt_predict.h66
-rw-r--r--audio_codec/libfaad/mdct.c307
-rw-r--r--audio_codec/libfaad/mdct.h48
-rw-r--r--audio_codec/libfaad/mdct_tab.h3639
-rw-r--r--audio_codec/libfaad/mp4.c307
-rw-r--r--audio_codec/libfaad/mp4.h52
-rw-r--r--audio_codec/libfaad/ms.c71
-rw-r--r--audio_codec/libfaad/ms.h44
-rw-r--r--audio_codec/libfaad/neaacdec.h257
-rw-r--r--audio_codec/libfaad/output.c583
-rw-r--r--audio_codec/libfaad/output.h48
-rw-r--r--audio_codec/libfaad/pns.c273
-rw-r--r--audio_codec/libfaad/pns.h58
-rw-r--r--audio_codec/libfaad/ps_dec.c1905
-rw-r--r--audio_codec/libfaad/ps_dec.h151
-rw-r--r--audio_codec/libfaad/ps_syntax.c532
-rw-r--r--audio_codec/libfaad/ps_tables.h547
-rw-r--r--audio_codec/libfaad/pulse.c59
-rw-r--r--audio_codec/libfaad/pulse.h43
-rw-r--r--audio_codec/libfaad/rvlc.c524
-rw-r--r--audio_codec/libfaad/rvlc.h55
-rw-r--r--audio_codec/libfaad/sbr_dct.c2267
-rw-r--r--audio_codec/libfaad/sbr_dct.h52
-rw-r--r--audio_codec/libfaad/sbr_dec.c679
-rw-r--r--audio_codec/libfaad/sbr_dec.h253
-rw-r--r--audio_codec/libfaad/sbr_e_nf.c475
-rw-r--r--audio_codec/libfaad/sbr_e_nf.h50
-rw-r--r--audio_codec/libfaad/sbr_fbt.c737
-rw-r--r--audio_codec/libfaad/sbr_fbt.h55
-rw-r--r--audio_codec/libfaad/sbr_hfadj.c1644
-rw-r--r--audio_codec/libfaad/sbr_hfadj.h56
-rw-r--r--audio_codec/libfaad/sbr_hfgen.c647
-rw-r--r--audio_codec/libfaad/sbr_hfgen.h49
-rw-r--r--audio_codec/libfaad/sbr_huff.c344
-rw-r--r--audio_codec/libfaad/sbr_huff.h46
-rw-r--r--audio_codec/libfaad/sbr_noise.h564
-rw-r--r--audio_codec/libfaad/sbr_qmf.c614
-rw-r--r--audio_codec/libfaad/sbr_qmf.h55
-rw-r--r--audio_codec/libfaad/sbr_qmf_c.h368
-rw-r--r--audio_codec/libfaad/sbr_syntax.c893
-rw-r--r--audio_codec/libfaad/sbr_syntax.h68
-rw-r--r--audio_codec/libfaad/sbr_tf_grid.c247
-rw-r--r--audio_codec/libfaad/sbr_tf_grid.h47
-rw-r--r--audio_codec/libfaad/sine_win.h4296
-rw-r--r--audio_codec/libfaad/specrec.c1249
-rw-r--r--audio_codec/libfaad/specrec.h49
-rw-r--r--audio_codec/libfaad/ssr.c170
-rw-r--r--audio_codec/libfaad/ssr.h59
-rw-r--r--audio_codec/libfaad/ssr_fb.c191
-rw-r--r--audio_codec/libfaad/ssr_fb.h53
-rw-r--r--audio_codec/libfaad/ssr_ipqf.c171
-rw-r--r--audio_codec/libfaad/ssr_ipqf.h46
-rw-r--r--audio_codec/libfaad/ssr_win.h635
-rw-r--r--audio_codec/libfaad/structs.h513
-rw-r--r--audio_codec/libfaad/syntax.c2539
-rw-r--r--audio_codec/libfaad/syntax.h129
-rw-r--r--audio_codec/libfaad/tns.c304
-rw-r--r--audio_codec/libfaad/tns.h51
-rwxr-xr-xaudio_codec/libflac/Android.mk22
-rw-r--r--audio_codec/libflac/avcodec.h337
-rw-r--r--audio_codec/libflac/bswap.h94
-rw-r--r--audio_codec/libflac/codec.h36
-rw-r--r--audio_codec/libflac/codec_message.h109
-rw-r--r--audio_codec/libflac/common.h356
-rw-r--r--audio_codec/libflac/crc.c146
-rw-r--r--audio_codec/libflac/crc.h46
-rw-r--r--audio_codec/libflac/flac.c43
-rw-r--r--audio_codec/libflac/flac.h124
-rw-r--r--audio_codec/libflac/flac_decode.c943
-rw-r--r--audio_codec/libflac/flacdata.c38
-rw-r--r--audio_codec/libflac/flacdata.h29
-rw-r--r--audio_codec/libflac/get_bits.h564
-rw-r--r--audio_codec/libflac/golomb.h585
-rw-r--r--audio_codec/libflac/internal.h195
-rw-r--r--audio_codec/libflac/intreadwrite.h390
-rw-r--r--audio_codec/libflac/mathops.h78
-rw-r--r--audio_codec/libflac/types.h49
-rwxr-xr-xaudio_codec/liblpcm/Android.mk13
-rw-r--r--audio_codec/liblpcm/lpcm_decode.c437
-rwxr-xr-xaudio_codec/libmad/Android.mk13
-rwxr-xr-xaudio_codec/libmad/D.dat607
-rw-r--r--audio_codec/libmad/bit.c244
-rw-r--r--audio_codec/libmad/bit.h47
-rw-r--r--audio_codec/libmad/config.h133
-rw-r--r--audio_codec/libmad/decoder.c1102
-rw-r--r--audio_codec/libmad/decoder.h91
-rw-r--r--audio_codec/libmad/fixed.c85
-rw-r--r--audio_codec/libmad/fixed.h499
-rw-r--r--audio_codec/libmad/frame.c525
-rw-r--r--audio_codec/libmad/frame.h118
-rw-r--r--audio_codec/libmad/global.h58
-rw-r--r--audio_codec/libmad/huffman.c3109
-rw-r--r--audio_codec/libmad/huffman.h66
-rwxr-xr-xaudio_codec/libmad/imdct_l_arm.S1000
-rwxr-xr-xaudio_codec/libmad/imdct_s.dat62
-rw-r--r--audio_codec/libmad/layer12.c552
-rwxr-xr-xaudio_codec/libmad/layer12.h31
-rw-r--r--audio_codec/libmad/layer3.c2742
-rwxr-xr-xaudio_codec/libmad/layer3.h30
-rw-r--r--audio_codec/libmad/mad.h966
-rwxr-xr-xaudio_codec/libmad/qc_table.dat77
-rwxr-xr-xaudio_codec/libmad/rq_table.dat8747
-rwxr-xr-xaudio_codec/libmad/sf_table.dat106
-rw-r--r--audio_codec/libmad/stream.c185
-rw-r--r--audio_codec/libmad/stream.h111
-rw-r--r--audio_codec/libmad/synth.c921
-rw-r--r--audio_codec/libmad/synth.h69
-rw-r--r--audio_codec/libmad/timer.c493
-rw-r--r--audio_codec/libmad/timer.h100
-rw-r--r--audio_codec/libmad/version.c91
-rw-r--r--audio_codec/libmad/version.h47
-rwxr-xr-xaudio_codec/libpcm/Android.mk11
-rw-r--r--audio_codec/libpcm/intreadwrite.h390
-rw-r--r--audio_codec/libpcm/pcm_decode.c780
-rw-r--r--audio_codec/libraac/Android.mk51
-rw-r--r--audio_codec/libraac/aac_bitstream.c200
-rw-r--r--audio_codec/libraac/aac_bitstream.h133
-rw-r--r--audio_codec/libraac/aac_decode.h148
-rw-r--r--audio_codec/libraac/aac_decode_main.c396
-rw-r--r--audio_codec/libraac/aac_reorder.c85
-rw-r--r--audio_codec/libraac/aac_reorder.h53
-rw-r--r--audio_codec/libraac/aaccommon.h200
-rw-r--r--audio_codec/libraac/aacdec.c607
-rw-r--r--audio_codec/libraac/aacdec.h200
-rw-r--r--audio_codec/libraac/aactabs.c157
-rw-r--r--audio_codec/libraac/assembly.h147
-rw-r--r--audio_codec/libraac/bitstream.c451
-rw-r--r--audio_codec/libraac/bitstream.h76
-rw-r--r--audio_codec/libraac/buffers.c132
-rw-r--r--audio_codec/libraac/coder.h370
-rw-r--r--audio_codec/libraac/dct4.c339
-rw-r--r--audio_codec/libraac/decelmnt.c451
-rw-r--r--audio_codec/libraac/dequant.c382
-rw-r--r--audio_codec/libraac/fft.c393
-rw-r--r--audio_codec/libraac/filefmt.c531
-rw-r--r--audio_codec/libraac/ga_config.c209
-rw-r--r--audio_codec/libraac/ga_config.h86
-rw-r--r--audio_codec/libraac/huffman.c449
-rw-r--r--audio_codec/libraac/hufftabs.c177
-rw-r--r--audio_codec/libraac/imdct.c598
-rw-r--r--audio_codec/libraac/include/challenge.h132
-rw-r--r--audio_codec/libraac/include/codec_defines.h93
-rw-r--r--audio_codec/libraac/include/gecko2codec.h60
-rw-r--r--audio_codec/libraac/include/helix_config.h92
-rw-r--r--audio_codec/libraac/include/helix_mime_types.h56
-rw-r--r--audio_codec/libraac/include/helix_result.h107
-rw-r--r--audio_codec/libraac/include/helix_types.h305
-rw-r--r--audio_codec/libraac/include/helix_utils.h106
-rw-r--r--audio_codec/libraac/include/md5.h113
-rw-r--r--audio_codec/libraac/include/memory_utils.h58
-rw-r--r--audio_codec/libraac/include/pack_utils.h93
-rw-r--r--audio_codec/libraac/include/packet_defines.h48
-rw-r--r--audio_codec/libraac/include/ra8lbr_decode.h161
-rw-r--r--audio_codec/libraac/include/ra_backend.h94
-rw-r--r--audio_codec/libraac/include/ra_decode.h183
-rw-r--r--audio_codec/libraac/include/ra_depack.h177
-rw-r--r--audio_codec/libraac/include/ra_format_info.h60
-rw-r--r--audio_codec/libraac/include/rasl.h71
-rw-r--r--audio_codec/libraac/include/rdtpck.h153
-rw-r--r--audio_codec/libraac/include/rm_error.h54
-rw-r--r--audio_codec/libraac/include/rm_error_default.h53
-rw-r--r--audio_codec/libraac/include/rm_io_default.h49
-rw-r--r--audio_codec/libraac/include/rm_memory.h54
-rw-r--r--audio_codec/libraac/include/rm_memory_default.h46
-rw-r--r--audio_codec/libraac/include/rm_packet.h80
-rw-r--r--audio_codec/libraac/include/rm_parse.h302
-rw-r--r--audio_codec/libraac/include/rm_property.h107
-rw-r--r--audio_codec/libraac/include/rm_stream.h115
-rw-r--r--audio_codec/libraac/include/rm_stream_internal.h77
-rw-r--r--audio_codec/libraac/include/rv20backend.h69
-rw-r--r--audio_codec/libraac/include/rv30backend.h68
-rw-r--r--audio_codec/libraac/include/rv_backend.h84
-rw-r--r--audio_codec/libraac/include/rv_backend_types.h198
-rw-r--r--audio_codec/libraac/include/rv_decode.h208
-rw-r--r--audio_codec/libraac/include/rv_decode_message.h492
-rw-r--r--audio_codec/libraac/include/rv_depack.h162
-rw-r--r--audio_codec/libraac/include/rv_format_info.h91
-rw-r--r--audio_codec/libraac/include/statname.h118
-rw-r--r--audio_codec/libraac/include/stream_hdr_structs.h66
-rw-r--r--audio_codec/libraac/include/stream_hdr_utils.h77
-rw-r--r--audio_codec/libraac/include/string_utils.h62
-rw-r--r--audio_codec/libraac/include/tngpkt.h400
-rw-r--r--audio_codec/libraac/memory_utils.c100
-rw-r--r--audio_codec/libraac/noiseless.c503
-rw-r--r--audio_codec/libraac/pack_utils.c306
-rw-r--r--audio_codec/libraac/pns.c369
-rw-r--r--audio_codec/libraac/ra_depack.c230
-rw-r--r--audio_codec/libraac/ra_depack_internal.c1713
-rw-r--r--audio_codec/libraac/ra_depack_internal.h232
-rw-r--r--audio_codec/libraac/raac_decode.c854
-rw-r--r--audio_codec/libraac/raac_decode.h37
-rw-r--r--audio_codec/libraac/rm_error_default.c60
-rw-r--r--audio_codec/libraac/rm_io_default.c101
-rw-r--r--audio_codec/libraac/rm_memory_default.c54
-rw-r--r--audio_codec/libraac/rm_packet.c117
-rw-r--r--audio_codec/libraac/rm_parser.c649
-rw-r--r--audio_codec/libraac/rm_parser_internal.c3342
-rw-r--r--audio_codec/libraac/rm_parser_internal.h420
-rw-r--r--audio_codec/libraac/rm_property.c105
-rw-r--r--audio_codec/libraac/rm_stream.c356
-rw-r--r--audio_codec/libraac/rv_depack.c271
-rw-r--r--audio_codec/libraac/rv_depack_internal.c1071
-rw-r--r--audio_codec/libraac/rv_depack_internal.h171
-rw-r--r--audio_codec/libraac/sbr.c431
-rw-r--r--audio_codec/libraac/sbr.h381
-rwxr-xr-xaudio_codec/libraac/sbrcov.s164
-rw-r--r--audio_codec/libraac/sbrfft.c368
-rw-r--r--audio_codec/libraac/sbrfreq.c667
-rw-r--r--audio_codec/libraac/sbrhfadj.c877
-rw-r--r--audio_codec/libraac/sbrhfgen.c646
-rw-r--r--audio_codec/libraac/sbrhuff.c492
-rw-r--r--audio_codec/libraac/sbrimdct.c447
-rw-r--r--audio_codec/libraac/sbrmath.c198
-rw-r--r--audio_codec/libraac/sbrqmf.c643
-rwxr-xr-xaudio_codec/libraac/sbrqmfak.s182
-rwxr-xr-xaudio_codec/libraac/sbrqmfsk.s130
-rw-r--r--audio_codec/libraac/sbrside.c615
-rw-r--r--audio_codec/libraac/sbrtabs.c400
-rw-r--r--audio_codec/libraac/statname.h115
-rw-r--r--audio_codec/libraac/stproc.c252
-rw-r--r--audio_codec/libraac/stream_hdr_utils.c136
-rw-r--r--audio_codec/libraac/string_utils.c87
-rw-r--r--audio_codec/libraac/tns.c307
-rw-r--r--audio_codec/libraac/trigtabs.c1000
-rw-r--r--audio_codec/libraac/trigtabs_fltgen.c357
-rwxr-xr-xaudio_codec/wfd_aac_decoder/Android.mk23
-rw-r--r--audio_codec/wfd_aac_decoder/aaccommon.h210
-rw-r--r--audio_codec/wfd_aac_decoder/aacdec.c508
-rw-r--r--audio_codec/wfd_aac_decoder/aacdec.h206
-rw-r--r--audio_codec/wfd_aac_decoder/aactabs.c157
-rw-r--r--audio_codec/wfd_aac_decoder/assembly.h640
-rw-r--r--audio_codec/wfd_aac_decoder/assembly_mw.h743
-rw-r--r--audio_codec/wfd_aac_decoder/bitstream.c261
-rw-r--r--audio_codec/wfd_aac_decoder/bitstream.h74
-rw-r--r--audio_codec/wfd_aac_decoder/buffers.c140
-rw-r--r--audio_codec/wfd_aac_decoder/coder.h369
-rw-r--r--audio_codec/wfd_aac_decoder/dct4.c337
-rw-r--r--audio_codec/wfd_aac_decoder/decelmnt.c445
-rw-r--r--audio_codec/wfd_aac_decoder/dequant.c379
-rw-r--r--audio_codec/wfd_aac_decoder/fft.c391
-rw-r--r--audio_codec/wfd_aac_decoder/filefmt.c539
-rw-r--r--audio_codec/wfd_aac_decoder/helix_aac_decode.c548
-rw-r--r--audio_codec/wfd_aac_decoder/huffman.c450
-rw-r--r--audio_codec/wfd_aac_decoder/hufftabs.c177
-rw-r--r--audio_codec/wfd_aac_decoder/imdct.c596
-rw-r--r--audio_codec/wfd_aac_decoder/noiseless.c513
-rw-r--r--audio_codec/wfd_aac_decoder/pns.c371
-rw-r--r--audio_codec/wfd_aac_decoder/sbr.c434
-rw-r--r--audio_codec/wfd_aac_decoder/sbr.h380
-rw-r--r--audio_codec/wfd_aac_decoder/sbrfft.c368
-rw-r--r--audio_codec/wfd_aac_decoder/sbrfreq.c673
-rw-r--r--audio_codec/wfd_aac_decoder/sbrhfadj.c882
-rw-r--r--audio_codec/wfd_aac_decoder/sbrhfgen.c655
-rw-r--r--audio_codec/wfd_aac_decoder/sbrhuff.c494
-rw-r--r--audio_codec/wfd_aac_decoder/sbrimdct.c447
-rw-r--r--audio_codec/wfd_aac_decoder/sbrmath.c198
-rw-r--r--audio_codec/wfd_aac_decoder/sbrqmf.c648
-rw-r--r--audio_codec/wfd_aac_decoder/sbrside.c634
-rw-r--r--audio_codec/wfd_aac_decoder/sbrtabs.c400
-rw-r--r--audio_codec/wfd_aac_decoder/statname.h115
-rw-r--r--audio_codec/wfd_aac_decoder/stproc.c251
-rw-r--r--audio_codec/wfd_aac_decoder/tns.c307
-rw-r--r--audio_codec/wfd_aac_decoder/trigtabs.c1000
-rw-r--r--audio_codec/wfd_aac_decoder/trigtabs_fltgen.c357
545 files changed, 230976 insertions, 0 deletions
diff --git a/audio_codec/libamr/dec_main.c b/audio_codec/libamr/dec_main.c
new file mode 100644
index 0000000..ad67186
--- a/dev/null
+++ b/audio_codec/libamr/dec_main.c
@@ -0,0 +1,842 @@
+/*
+ *===================================================================
+ * 3GPP AMR Wideband Floating-point Speech Codec
+ *===================================================================
+ */
+#include <stdlib.h>
+#include <math.h>
+#include <memory.h>
+#include <string.h>
+#include "typedef.h"
+#include "dec_main.h"
+#include "dec_dtx.h"
+#include "dec_acelp.h"
+#include "dec_gain.h"
+#include "dec_lpc.h"
+#include "dec_util.h"
+
+
+#define MAX_16 (Word16)0x7fff
+#define MIN_16 (Word16)0x8000
+
+#define L_FRAME 256 /* Frame size */
+#define NB_SUBFR 4 /* Number of subframe per frame */
+#define L_SUBFR 64 /* Subframe size */
+#define MODE_7k 0 /* modes */
+#define MODE_9k 1
+#define MODE_12k 2
+#define MODE_14k 3
+#define MODE_16k 4
+#define MODE_18k 5
+#define MODE_20k 6
+#define MODE_23k 7
+#define MODE_24k 8
+#define RX_SPEECH_PROBABLY_DEGRADED 1 /* rx types */
+#define RX_SPEECH_LOST 2
+#define RX_SPEECH_BAD 3
+#define RX_NO_DATA 7
+#define Q_MAX 8 /* scaling max for signal */
+#define PIT_SHARP 27853 /* pitch sharpening factor = 0.85 Q15 */
+#define PIT_MIN 34 /* Minimum pitch lag with resolution 1/4 */
+#define PIT_FR2 128 /* Minimum pitch lag with resolution 1/2 */
+#define PIT_FR1_9b 160 /* Minimum pitch lag with resolution 1 */
+#define PIT_FR1_8b 92 /* Minimum pitch lag with resolution 1 */
+
+extern const Word16 D_ROM_isp[];
+extern const Word16 D_ROM_isf[];
+extern const Word16 D_ROM_interpol_frac[];
+
+#ifdef WIN32
+#pragma warning( disable : 4310)
+#endif
+
+/*
+ * Decoder_reset
+ *
+ * Parameters:
+ * st I/O: pointer to state structure
+ * reset_all I: perform full reset
+ *
+ * Function:
+ * Initialisation of variables for the decoder section.
+ *
+ *
+ * Returns:
+ * void
+ */
+void D_MAIN_reset(void *st, Word16 reset_all)
+{
+ Word32 i;
+
+ Decoder_State *dec_state;
+
+ dec_state = (Decoder_State*)st;
+ memset(dec_state->mem_exc, 0, (PIT_MAX + L_INTERPOL) * sizeof(Word16));
+ memset(dec_state->mem_isf_q, 0, M * sizeof(Word16));
+ dec_state->mem_T0_frac = 0; /* old pitch value = 64.0 */
+ dec_state->mem_T0 = 64;
+ dec_state->mem_first_frame = 1;
+ dec_state->mem_gc_thres = 0;
+ dec_state->mem_tilt_code = 0;
+ memset(dec_state->mem_ph_disp, 0, 8 * sizeof(Word16));
+
+ /* scaling memories for excitation */
+ dec_state->mem_q = Q_MAX;
+ dec_state->mem_subfr_q[3] = Q_MAX;
+ dec_state->mem_subfr_q[2] = Q_MAX;
+ dec_state->mem_subfr_q[1] = Q_MAX;
+ dec_state->mem_subfr_q[0] = Q_MAX;
+
+ if (reset_all != 0) {
+ /* routines initialization */
+ D_GAIN_init(dec_state->mem_gain);
+ memset(dec_state->mem_oversamp, 0, (2 * 12) * sizeof(Word16));
+ memset(dec_state->mem_sig_out, 0, 6 * sizeof(Word16));
+ memset(dec_state->mem_hf, 0, (31 - 1) * sizeof(Word16));
+ memset(dec_state->mem_hf3, 0, (31 - 1) * sizeof(Word16));
+ memset(dec_state->mem_hp400, 0, 6 * sizeof(Word16));
+ D_GAIN_lag_concealment_init(dec_state->mem_lag);
+
+ /* isp initialization */
+ memcpy(dec_state->mem_isp, D_ROM_isp, M * sizeof(Word16));
+ memcpy(dec_state->mem_isf, D_ROM_isf, M * sizeof(Word16));
+
+ for (i = 0; i < L_MEANBUF; i++) {
+ memcpy(&dec_state->mem_isf_buf[i * M], D_ROM_isf, M * sizeof(Word16));
+ }
+
+ /* variable initialization */
+ dec_state->mem_deemph = 0;
+ dec_state->mem_seed = 21845; /* init random with 21845 */
+ dec_state->mem_seed2 = 21845;
+ dec_state->mem_seed3 = 21845;
+ dec_state->mem_state = 0;
+ dec_state->mem_bfi = 0;
+
+ /* Static vectors to zero */
+ memset(dec_state->mem_syn_hf, 0, M16k * sizeof(Word16));
+ memset(dec_state->mem_syn_hi, 0, M * sizeof(Word16));
+ memset(dec_state->mem_syn_lo, 0, M * sizeof(Word16));
+ D_DTX_reset(dec_state->dtx_decSt, D_ROM_isf);
+ dec_state->mem_vad_hist = 0;
+ }
+
+ return;
+}
+
+
+/*
+ * Decoder_init
+ *
+ * Parameters:
+ * spd_state O: pointer to state structure
+ *
+ * Function:
+ * Initialization of variables for the decoder section.
+ * Memory allocation.
+ *
+ * Returns:
+ * return zero if succesful
+ */
+Word32 D_MAIN_init(void **spd_state)
+{
+ /* Decoder states */
+ Decoder_State *st;
+
+ *spd_state = NULL;
+
+ /*
+ * Memory allocation for coder state.
+ */
+ if ((st = (Decoder_State*)malloc(sizeof(Decoder_State))) == NULL) {
+ return(-1);
+ }
+
+ st->dtx_decSt = NULL;
+ D_DTX_init(&st->dtx_decSt, D_ROM_isf);
+ D_MAIN_reset((void *)st, 1);
+ *spd_state = (void *)st;
+
+ return(0);
+}
+
+
+/*
+ * Decoder_close
+ *
+ * Parameters:
+ * spd_state I: pointer to state structure
+ *
+ * Function:
+ * Free coder memory.
+ *
+ * Returns:
+ * void
+ */
+void D_MAIN_close(void **spd_state)
+{
+ D_DTX_exit(&(((Decoder_State *)(*spd_state))->dtx_decSt));
+ free(*spd_state);
+
+ return;
+}
+
+
+/*
+ * Decoder_exe
+ *
+ * Parameters:
+ * mode I: used mode
+ * prms I: parameter vector
+ * synth_out O: synthesis speech
+ * spe_state B: state structure
+ * frame_type I: received frame type
+ *
+ * Function:
+ * Main decoder routine.
+ *
+ * Returns:
+ * 0 if successful
+ */
+Word32 D_MAIN_decode(Word16 mode, Word16 prms[], Word16 synth16k[],
+ void *spd_state, UWord8 frame_type)
+{
+
+ Word32 code2[L_SUBFR]; /* algebraic codevector */
+ Word32 L_tmp, L_tmp2, L_gain_code, L_stab_fac;
+ Word32 i, j, i_subfr, pit_flag;
+ Word32 T0, T0_frac, T0_max, select, T0_min = 0;
+
+ Word16 exc2[L_FRAME]; /* excitation vector */
+ Word16 Aq[NB_SUBFR * (M + 1)]; /* A(z) quantized for the 4 subframes */
+ Word16 code[L_SUBFR]; /* algebraic codevector */
+ Word16 excp[L_SUBFR]; /* excitation vector */
+ Word16 HfIsf[M16k];
+ Word16 ispnew[M]; /* immittance spectral pairs at 4nd sfr*/
+ Word16 isf[M]; /* ISF (frequency domain) at 4nd sfr */
+ Word16 isf_tmp[M]; /* ISF tmp */
+ Word16 ind[8]; /* quantization indices */
+
+ Word16 index, fac, voice_fac, max, Q_new = 0;
+ Word16 gain_pit, gain_code, gain_code_lo, tmp;
+ Word16 corr_gain = 0;
+ UWord16 pit_sharp = 0;
+
+ Word16 *exc; /* Excitation vector */
+ Word16 *p_Aq; /* ptr to A(z) for the 4 subframes */
+ Word16 *p_isf; /* prt to isf */
+
+ Decoder_State *st; /* Decoder states */
+ UWord8 newDTXState, bfi, unusable_frame;
+ UWord8 vad_flag;
+
+ st = (Decoder_State*)spd_state;
+
+ /* find the new DTX state SPEECH OR DTX */
+ newDTXState = D_DTX_rx_handler(st->dtx_decSt, frame_type);
+
+ if (newDTXState != SPEECH) {
+ D_DTX_exe(st->dtx_decSt, exc2, newDTXState, isf, &prms);
+ }
+
+ /* SPEECH action state machine */
+ if ((frame_type == RX_SPEECH_BAD) |
+ (frame_type == RX_SPEECH_PROBABLY_DEGRADED)) {
+ /* bfi for all index, bits are not usable */
+ bfi = 1;
+ unusable_frame = 0;
+ } else if ((frame_type == RX_NO_DATA) | (frame_type == RX_SPEECH_LOST)) {
+ /* bfi only for lsf, gains and pitch period */
+ bfi = 1;
+ unusable_frame = 1;
+ } else {
+ bfi = 0;
+ unusable_frame = 0;
+ }
+
+ if (bfi != 0) {
+ st->mem_state = (UWord8)(st->mem_state + 1);
+
+ if (st->mem_state > 6) {
+ st->mem_state = 6;
+ }
+ } else {
+ st->mem_state = (UWord8)(st->mem_state >> 1);
+ }
+
+ /*
+ * If this frame is the first speech frame after CNI period,
+ * set the BFH state machine to an appropriate state depending
+ * on whether there was DTX muting before start of speech or not
+ * If there was DTX muting, the first speech frame is muted.
+ * If there was no DTX muting, the first speech frame is not
+ * muted. The BFH state machine starts from state 5, however, to
+ * keep the audible noise resulting from a SID frame which is
+ * erroneously interpreted as a good speech frame as small as
+ * possible (the decoder output in this case is quickly muted)
+ */
+
+ if (st->dtx_decSt->mem_dtx_global_state == DTX) {
+ st->mem_state = 5;
+ st->mem_bfi = 0;
+ } else if (st->dtx_decSt->mem_dtx_global_state == D_DTX_MUTE) {
+ st->mem_state = 5;
+ st->mem_bfi = 1;
+ }
+
+ if (newDTXState == SPEECH) {
+ vad_flag = (UWord8)(*prms++);
+
+ if (bfi == 0) {
+ if (vad_flag == 0) {
+ st->mem_vad_hist = (Word16)(st->mem_vad_hist + 1);
+
+ if (st->mem_vad_hist > 32767) {
+ st->mem_vad_hist = 32767;
+ }
+ } else {
+ st->mem_vad_hist = 0;
+ }
+ }
+ }
+
+ /*
+ * DTX-CNG
+ */
+ if (newDTXState != SPEECH) { /* CNG mode */
+ /*
+ * increase slightly energy of noise below 200 Hz
+ * Convert ISFs to the cosine domain
+ */
+ D_LPC_isf_isp_conversion(isf, ispnew, M);
+ D_LPC_isp_a_conversion(ispnew, Aq, 1, M);
+ memcpy(isf_tmp, st->mem_isf, M * sizeof(Word16));
+
+ for (i_subfr = 0; i_subfr < L_FRAME; i_subfr += L_SUBFR) {
+ j = (i_subfr >> 6);
+
+ for (i = 0; i < M; i++) {
+ L_tmp = (isf_tmp[i] * (32767 - D_ROM_interpol_frac[j])) << 1;
+ L_tmp = L_tmp + ((isf[i] * D_ROM_interpol_frac[j]) << 1);
+ HfIsf[i] = (Word16)((L_tmp + 0x8000) >> 16);
+ }
+
+ D_UTIL_dec_synthesis(Aq, &exc2[i_subfr], 0, &synth16k[i_subfr * 5 / 4],
+ (Word16) 1, HfIsf, mode, newDTXState, bfi, st);
+ }
+
+ /* reset speech coder memories */
+ D_MAIN_reset(st, 0);
+ memcpy(st->mem_isf, isf, M * sizeof(Word16));
+ st->mem_bfi = bfi;
+ st->dtx_decSt->mem_dtx_global_state = (UWord8)newDTXState;
+
+ return(0);
+ }
+
+ /*
+ * ACELP
+ */
+
+ exc = st->mem_exc + PIT_MAX + L_INTERPOL;
+
+ /* Decode the ISFs */
+ if (mode <= MODE_7k) {
+ ind[0] = *prms++;
+ ind[1] = *prms++;
+ ind[2] = *prms++;
+ ind[3] = *prms++;
+ ind[4] = *prms++;
+ D_LPC_isf_2s3s_decode(ind, isf, st->mem_isf_q, st->mem_isf,
+ st->mem_isf_buf, bfi);
+ } else {
+ ind[0] = *prms++;
+ ind[1] = *prms++;
+ ind[2] = *prms++;
+ ind[3] = *prms++;
+ ind[4] = *prms++;
+ ind[5] = *prms++;
+ ind[6] = *prms++;
+ D_LPC_isf_2s5s_decode(ind, isf, st->mem_isf_q, st->mem_isf,
+ st->mem_isf_buf, bfi);
+ }
+
+ /* Convert ISFs to the cosine domain */
+ D_LPC_isf_isp_conversion(isf, ispnew, M);
+
+ if (st->mem_first_frame != 0) {
+ st->mem_first_frame = 0;
+ memcpy(st->mem_isp, ispnew, M * sizeof(Word16));
+ }
+
+ /* Find the interpolated ISPs and convert to a[] for all subframes */
+ D_LPC_int_isp_find(st->mem_isp, ispnew, D_ROM_interpol_frac, Aq);
+
+ /* update isp memory for the next frame */
+ memcpy(st->mem_isp, ispnew, M * sizeof(Word16));
+
+ /* Check stability on isf : distance between old isf and current isf */
+ L_tmp = 0;
+ p_isf = st->mem_isf;
+
+ for (i = 0; i < M - 1; i++) {
+ tmp = (Word16)((isf[i] - p_isf[i]));
+ L_tmp = L_tmp + (tmp * tmp);
+ }
+
+ if (L_tmp < 3276928) {
+ L_tmp = L_tmp >> 7;
+ L_tmp = (L_tmp * 26214) >> 15; /* tmp = L_tmp*0.8/256 */
+ L_tmp = 20480 - L_tmp; /* 1.25 - tmp */
+ L_stab_fac = L_tmp << 1; /* Q14 -> Q15 with saturation */
+
+ if (L_stab_fac > 0x7FFF) {
+ L_stab_fac = 0x7FFF;
+ }
+ } else {
+ L_stab_fac = 0x0;
+ }
+
+ memcpy(isf_tmp, st->mem_isf, M * sizeof(Word16));
+ memcpy(st->mem_isf, isf, M * sizeof(Word16));
+
+ /*
+ * Loop for every subframe in the analysis frame
+ *
+ * The subframe size is L_SUBFR and the loop is repeated L_FRAME/L_SUBFR
+ * times
+ * - decode the pitch delay and filter mode
+ * - decode algebraic code
+ * - decode pitch and codebook gains
+ * - find voicing factor and tilt of code for next subframe
+ * - find the excitation and compute synthesis speech
+ */
+
+ p_Aq = Aq; /* pointer to interpolated LPC parameters */
+
+ for (i_subfr = 0; i_subfr < L_FRAME; i_subfr += L_SUBFR) {
+ pit_flag = i_subfr;
+
+ if ((i_subfr == (2 * L_SUBFR)) & (mode > MODE_7k)) {
+ pit_flag = 0;
+ }
+
+ /*
+ * - Decode pitch lag
+ * Lag indeces received also in case of BFI,
+ * so that the parameter pointer stays in sync.
+ */
+
+ if (pit_flag == 0) {
+ if (mode <= MODE_9k) {
+ index = *prms++;
+
+ if (index < ((PIT_FR1_8b - PIT_MIN) * 2)) {
+ T0 = (PIT_MIN + (index >> 1));
+ T0_frac = (index - ((T0 - PIT_MIN) << 1));
+ T0_frac = (T0_frac << 1);
+ } else {
+ T0 = index + (PIT_FR1_8b - ((PIT_FR1_8b - PIT_MIN) * 2));
+ T0_frac = 0;
+ }
+ } else {
+ index = *prms++;
+
+ if (index < ((PIT_FR2 - PIT_MIN) * 4)) {
+ T0 = PIT_MIN + (index >> 2);
+ T0_frac = index - ((T0 - PIT_MIN) << 2);
+ } else if (index <
+ ((((PIT_FR2 - PIT_MIN) * 4) + ((PIT_FR1_9b - PIT_FR2) * 2)))) {
+ index = (Word16)((index - ((PIT_FR2 - PIT_MIN) * 4)));
+ T0 = PIT_FR2 + (index >> 1);
+ T0_frac = index - ((T0 - PIT_FR2) << 1);
+ T0_frac = T0_frac << 1;
+ } else {
+ T0 = index + (PIT_FR1_9b - ((PIT_FR2 - PIT_MIN) * 4) -
+ ((PIT_FR1_9b - PIT_FR2) * 2));
+ T0_frac = 0;
+ }
+ }
+
+ /* find T0_min and T0_max for subframe 2 and 4 */
+ T0_min = T0 - 8;
+
+ if (T0_min < PIT_MIN) {
+ T0_min = PIT_MIN;
+ }
+
+ T0_max = T0_min + 15;
+
+ if (T0_max > PIT_MAX) {
+ T0_max = PIT_MAX;
+ T0_min = T0_max - 15;
+ }
+ } else {
+ /* if subframe 2 or 4 */
+
+ if (mode <= MODE_9k) {
+ index = *prms++;
+ T0 = T0_min + (index >> 1);
+ T0_frac = index - ((T0 - T0_min) << 1);
+ T0_frac = T0_frac << 1;
+ } else {
+ index = *prms++;
+ T0 = T0_min + (index >> 2);
+ T0_frac = index - ((T0 - T0_min) << 2);
+ }
+ }
+
+ /* check BFI after pitch lag decoding */
+ if (bfi != 0) { /* if frame erasure */
+ D_GAIN_lag_concealment(&(st->mem_gain[17]), st->mem_lag, &T0,
+ &(st->mem_T0), &(st->mem_seed3), unusable_frame);
+ T0_frac = 0;
+ }
+
+ /*
+ * Find the pitch gain, the interpolation filter
+ * and the adaptive codebook vector.
+ */
+
+ D_GAIN_adaptive_codebook_excitation(&exc[i_subfr], T0, T0_frac);
+
+ if (unusable_frame) {
+ select = 1;
+ } else {
+ if (mode <= MODE_9k) {
+ select = 0;
+ } else {
+ select = *prms++;
+ }
+ }
+
+ if (select == 0) {
+ /* find pitch excitation with lp filter */
+ for (i = 0; i < L_SUBFR; i++) {
+ L_tmp = 2949 * exc[i - 1 + i_subfr];
+ L_tmp = L_tmp + (10486 * exc[i + i_subfr]);
+ L_tmp = L_tmp + (2949 * exc[i + 1 + i_subfr]);
+ code[i] = (Word16)((L_tmp + 0x2000) >> 14);
+ }
+
+ memcpy(&exc[i_subfr], code, L_SUBFR * sizeof(Word16));
+ }
+
+ /*
+ * Decode innovative codebook.
+ * Add the fixed-gain pitch contribution to code[].
+ */
+
+ if (unusable_frame != 0) {
+ /* the innovative code doesn't need to be scaled (see Q_gain2) */
+ for (i = 0; i < L_SUBFR; i++) {
+ code[i] = (Word16)(D_UTIL_random(&(st->mem_seed)) >> 3);
+ }
+ } else if (mode <= MODE_7k) {
+ ind[0] = *prms++;
+ D_ACELP_decode_2t(ind[0], code);
+ } else if (mode <= MODE_9k) {
+ memcpy(ind, prms, 4 * sizeof(Word16));
+ prms += 4;
+ D_ACELP_decode_4t(ind, 20, code);
+ } else if (mode <= MODE_12k) {
+ memcpy(ind, prms, 4 * sizeof(Word16));
+ prms += 4;
+ D_ACELP_decode_4t(ind, 36, code);
+ } else if (mode <= MODE_14k) {
+ memcpy(ind, prms, 4 * sizeof(Word16));
+ prms += 4;
+ D_ACELP_decode_4t(ind, 44, code);
+ } else if (mode <= MODE_16k) {
+ memcpy(ind, prms, 4 * sizeof(Word16));
+ prms += 4;
+ D_ACELP_decode_4t(ind, 52, code);
+ } else if (mode <= MODE_18k) {
+ memcpy(ind, prms, 8 * sizeof(Word16));
+ prms += 8;
+ D_ACELP_decode_4t(ind, 64, code);
+ } else if (mode <= MODE_20k) {
+ memcpy(ind, prms, 8 * sizeof(Word16));
+ prms += 8;
+ D_ACELP_decode_4t(ind, 72, code);
+ } else {
+ memcpy(ind, prms, 8 * sizeof(Word16));
+ prms += 8;
+ D_ACELP_decode_4t(ind, 88, code);
+ }
+
+ tmp = 0;
+ D_UTIL_preemph(code, st->mem_tilt_code, L_SUBFR, &tmp);
+
+ L_tmp = T0;
+
+ if (T0_frac > 2) {
+ L_tmp = L_tmp + 1;
+ }
+
+ D_GAIN_pitch_sharpening(code, L_tmp, PIT_SHARP);
+
+ /*
+ * Decode codebooks gains.
+ */
+ index = *prms++; /* codebook gain index */
+
+ if (mode <= MODE_9k) {
+ D_GAIN_decode(index, 6, code, &gain_pit, &L_gain_code, bfi,
+ st->mem_bfi, st->mem_state, unusable_frame, st->mem_vad_hist,
+ st->mem_gain);
+ } else {
+ D_GAIN_decode(index, 7, code, &gain_pit, &L_gain_code, bfi,
+ st->mem_bfi, st->mem_state, unusable_frame, st->mem_vad_hist,
+ st->mem_gain);
+ }
+
+ /* find best scaling to perform on excitation (Q_new) */
+ tmp = st->mem_subfr_q[0];
+
+ for (i = 1; i < 4; i++) {
+ if (st->mem_subfr_q[i] < tmp) {
+ tmp = st->mem_subfr_q[i];
+ }
+ }
+
+ /* limit scaling (Q_new) to Q_MAX */
+ if (tmp > Q_MAX) {
+ tmp = Q_MAX;
+ }
+
+ Q_new = 0;
+ L_tmp = L_gain_code; /* L_gain_code in Q16 */
+
+ while ((L_tmp < 0x08000000L) && (Q_new < tmp)) {
+ L_tmp = (L_tmp << 1);
+ Q_new = (Word16)((Q_new + 1));
+ }
+
+ if (L_tmp < 0x7FFF7FFF) {
+ gain_code = (Word16)((L_tmp + 0x8000) >> 16);
+ /* scaled gain_code with Qnew */
+ } else {
+ gain_code = 32767;
+ }
+
+ if (Q_new > st->mem_q) {
+ D_UTIL_signal_up_scale(exc + i_subfr - (PIT_MAX + L_INTERPOL),
+ PIT_MAX + L_INTERPOL + L_SUBFR, (Word16)(Q_new - st->mem_q));
+ } else {
+ D_UTIL_signal_down_scale(exc + i_subfr - (PIT_MAX + L_INTERPOL),
+ PIT_MAX + L_INTERPOL + L_SUBFR, (Word16)(st->mem_q - Q_new));
+ }
+
+ st->mem_q = Q_new;
+
+ /*
+ * Update parameters for the next subframe.
+ * - tilt of code: 0.0 (unvoiced) to 0.5 (voiced)
+ */
+ if (bfi == 0) {
+ /* LTP-Lag history update */
+ for (i = 4; i > 0; i--) {
+ st->mem_lag[i] = st->mem_lag[i - 1];
+ }
+ st->mem_lag[0] = (Word16)T0;
+ st->mem_T0 = (Word16)T0;
+ st->mem_T0_frac = 0; /* Remove fraction in case of BFI */
+ }
+
+ /* find voice factor in Q15 (1=voiced, -1=unvoiced) */
+ memcpy(exc2, &exc[i_subfr], L_SUBFR * sizeof(Word16));
+ D_UTIL_signal_down_scale(exc2, L_SUBFR, 3);
+
+ /* post processing of excitation elements */
+ if (mode <= MODE_9k) {
+ pit_sharp = (Word16)(gain_pit << 1);
+
+ if (pit_sharp > 16384) {
+ if (pit_sharp > 32767) {
+ pit_sharp = 32767;
+ }
+
+ for (i = 0; i < L_SUBFR; i++) {
+ L_tmp = (exc2[i] * pit_sharp) >> 15;
+ L_tmp = L_tmp * gain_pit;
+ excp[i] = (Word16)((L_tmp + 0x8000) >> 16);
+ }
+ }
+ }
+
+ voice_fac = D_GAIN_find_voice_factor(exc2, -3, gain_pit, code, gain_code,
+ L_SUBFR);
+
+ /* tilt of code for next subframe: 0.5=voiced, 0=unvoiced */
+ st->mem_tilt_code = (Word16)((voice_fac >> 2) + 8192);
+
+ /*
+ * Find the total excitation.
+ * Find synthesis speech corresponding to exc[].
+ * Find maximum value of excitation for next scaling
+ */
+ memcpy(exc2, &exc[i_subfr], L_SUBFR * sizeof(Word16));
+ max = 1;
+
+ for (i = 0; i < L_SUBFR; i++) {
+ L_tmp = (code[i] * gain_code) << 5;
+ L_tmp = L_tmp + (exc[i + i_subfr] * gain_pit);
+ L_tmp = (L_tmp + 0x2000) >> 14;
+
+ if ((L_tmp > MIN_16) & (L_tmp < 32768)) {
+ exc[i + i_subfr] = (Word16)L_tmp;
+ tmp = (Word16)(abs(L_tmp));
+
+ if (tmp > max) {
+ max = tmp;
+ }
+ } else if (L_tmp > MAX_16) {
+ exc[i + i_subfr] = MAX_16;
+ max = MAX_16;
+ } else {
+ exc[i + i_subfr] = MIN_16;
+ max = MAX_16;
+ }
+ }
+
+ /* tmp = scaling possible according to max value of excitation */
+ tmp = (Word16)((D_UTIL_norm_s(max) + Q_new) - 1);
+ st->mem_subfr_q[3] = st->mem_subfr_q[2];
+ st->mem_subfr_q[2] = st->mem_subfr_q[1];
+ st->mem_subfr_q[1] = st->mem_subfr_q[0];
+ st->mem_subfr_q[0] = tmp;
+
+ /*
+ * phase dispersion to enhance noise in low bit rate
+ */
+
+ /* L_gain_code in Q16 */
+ D_UTIL_l_extract(L_gain_code, &gain_code, &gain_code_lo);
+
+ if (mode <= MODE_7k) {
+ j = 0; /* high dispersion for rate <= 7.5 kbit/s */
+ } else if (mode <= MODE_9k) {
+ j = 1; /* low dispersion for rate <= 9.6 kbit/s */
+ } else {
+ j = 2; /* no dispersion for rate > 9.6 kbit/s */
+ }
+
+ D_ACELP_phase_dispersion(gain_code, gain_pit, code, (Word16)j,
+ st->mem_ph_disp);
+
+ /*
+ * noise enhancer
+ * - Enhance excitation on noise. (modify gain of code)
+ * If signal is noisy and LPC filter is stable, move gain
+ * of code 1.5 dB toward gain of code threshold.
+ * This decrease by 3 dB noise energy variation.
+ */
+ L_tmp = 16384 - (voice_fac >> 1); /* 1=unvoiced, 0=voiced */
+ fac = (Word16)((L_stab_fac * L_tmp) >> 15);
+ L_tmp = L_gain_code;
+
+ if (L_tmp < st->mem_gc_thres) {
+ L_tmp = (L_tmp + D_UTIL_mpy_32_16(gain_code, gain_code_lo, 6226));
+
+ if (L_tmp > st->mem_gc_thres) {
+ L_tmp = st->mem_gc_thres;
+ }
+ } else {
+ L_tmp = D_UTIL_mpy_32_16(gain_code, gain_code_lo, 27536);
+
+ if (L_tmp < st->mem_gc_thres) {
+ L_tmp = st->mem_gc_thres;
+ }
+ }
+ st->mem_gc_thres = L_tmp;
+ L_gain_code =
+ D_UTIL_mpy_32_16(gain_code, gain_code_lo, (Word16)(32767 - fac));
+ D_UTIL_l_extract(L_tmp, &gain_code, &gain_code_lo);
+ L_gain_code =
+ L_gain_code + D_UTIL_mpy_32_16(gain_code, gain_code_lo, fac);
+
+ /*
+ * pitch enhancer
+ * - Enhance excitation on voice. (HP filtering of code)
+ * On voiced signal, filtering of code by a smooth fir HP
+ * filter to decrease energy of code in low frequency.
+ */
+
+ L_tmp2 = (voice_fac >> 3) + 4096; /* 0.25=voiced, 0=unvoiced */
+ L_tmp = (code[0] << 15) - (code[1] * L_tmp2);
+ code2[0] = (L_tmp + 0x4000) >> 15;
+
+ for (i = 1; i < L_SUBFR - 1; i++) {
+ L_tmp = code[i] << 15;
+ L_tmp = L_tmp - (code[i + 1] * L_tmp2);
+ L_tmp = L_tmp - (code[i - 1] * L_tmp2);
+ code2[i] = (L_tmp + 0x4000) >> 15;
+ }
+
+ L_tmp = code[L_SUBFR - 1] << 15;
+ L_tmp = L_tmp - (code[L_SUBFR - 2] * L_tmp2);
+ code2[L_SUBFR - 1] = (L_tmp + 0x4000) >> 15;
+
+ /* build excitation */
+ gain_code = (Word16)(((L_gain_code << Q_new) + 0x8000) >> 16);
+
+ for (i = 0; i < L_SUBFR; i++) {
+ L_tmp = (code2[i] * gain_code) << 5;
+ L_tmp = L_tmp + (exc2[i] * gain_pit);
+ L_tmp = (L_tmp + 0x2000) >> 14;
+
+ exc2[i] = D_UTIL_saturate(L_tmp);
+ }
+
+ if (mode <= MODE_9k) {
+ if (pit_sharp > 16384) {
+ for (i = 0; i < L_SUBFR; i++) {
+ L_tmp = (excp[i] + exc2[i]);
+ excp[i] = D_UTIL_saturate(L_tmp);
+ }
+
+ D_GAIN_adaptive_control(exc2, excp, L_SUBFR);
+ memcpy(exc2, excp, L_SUBFR * sizeof(Word16));
+ }
+ }
+
+ if (mode <= MODE_7k) {
+ j = (i_subfr >> 6);
+
+ for (i = 0; i < M; i++) {
+ L_tmp = isf_tmp[i] * (32767 - D_ROM_interpol_frac[j]);
+ L_tmp = L_tmp + (isf[i] * D_ROM_interpol_frac[j]);
+ HfIsf[i] = (Word16)((L_tmp + 0x4000) >> 15);
+ }
+ } else {
+ memset(st->mem_syn_hf, 0, (M16k - M) * sizeof(Word16));
+ }
+
+ if (mode >= MODE_24k) {
+ corr_gain = *prms++;
+ D_UTIL_dec_synthesis(p_Aq, exc2, Q_new, &synth16k[i_subfr * 5 / 4],
+ corr_gain, HfIsf, mode, newDTXState, bfi, st);
+ } else {
+ D_UTIL_dec_synthesis(p_Aq, exc2, Q_new, &synth16k[i_subfr * 5 / 4], 0,
+ HfIsf, mode, newDTXState, bfi, st);
+ }
+
+ p_Aq += (M + 1); /* interpolated LPC parameters for next subframe */
+ }
+
+ /*
+ * Update signal for next frame
+ * -> save past of exc[]
+ * -> save pitch parameters.
+ */
+
+ //memmove(st->mem_exc, &st->mem_exc[L_FRAME], (PIT_MAX + L_INTERPOL) * sizeof(Word16));
+ memcpy(st->mem_exc, &st->mem_exc[L_FRAME], (PIT_MAX + L_INTERPOL) * sizeof(Word16));
+ D_UTIL_signal_down_scale(exc, L_FRAME, Q_new);
+ D_DTX_activity_update(st->dtx_decSt, isf, exc);
+ st->dtx_decSt->mem_dtx_global_state = (UWord8)newDTXState;
+ st->mem_bfi = bfi;
+
+ return(0);
+}