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_lpc.c b/audio_codec/libamr/dec_lpc.c
new file mode 100644
index 0000000..2bcf8c4
--- a/dev/null
+++ b/audio_codec/libamr/dec_lpc.c
@@ -0,0 +1,789 @@
+/*
+ *===================================================================
+ * 3GPP AMR Wideband Floating-point Speech Codec
+ *===================================================================
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <math.h>
+//#include <stdlib.h>
+#include "typedef.h"
+#include "dec_util.h"
+
+#define M 16 /* Order of LP filter */
+#define MP1 (M + 1)
+#define M16k 20
+#define NC16k (M16k / 2)
+#define MU 10923 /* Prediction factor (1.0/3.0) in Q15 */
+#define L_MEANBUF 3
+#define ALPHA 29491 /* 0. 9 in Q15 */
+#define ONE_ALPHA (32768-ALPHA) /* (1.0 - ALPHA) in Q15 */
+#define ORDER 16 /* order of linear prediction filter */
+#define ISF_GAP 128 /* 50 Hz */
+#define INV_LENGTH 2731 /* 1/12 */
+
+extern const Word16 D_ROM_dico1_isf[];
+extern const Word16 D_ROM_dico2_isf[];
+extern const Word16 D_ROM_dico21_isf_36b[];
+extern const Word16 D_ROM_dico22_isf_36b[];
+extern const Word16 D_ROM_dico23_isf_36b[];
+extern const Word16 D_ROM_dico21_isf[];
+extern const Word16 D_ROM_dico22_isf[];
+extern const Word16 D_ROM_dico23_isf[];
+extern const Word16 D_ROM_dico24_isf[];
+extern const Word16 D_ROM_dico25_isf[];
+extern const Word16 D_ROM_dico1_isf_noise[];
+extern const Word16 D_ROM_dico2_isf_noise[];
+extern const Word16 D_ROM_dico3_isf_noise[];
+extern const Word16 D_ROM_dico4_isf_noise[];
+extern const Word16 D_ROM_dico5_isf_noise[];
+extern const Word16 D_ROM_mean_isf[];
+extern const Word16 D_ROM_mean_isf_noise[];
+extern const Word16 D_ROM_cos[];
+
+
+/*
+ * D_LPC_isf_reorder
+ *
+ * Parameters:
+ * isf I/O: vector of isfs
+ * min_dist I: quantized ISFs (in frequency domain)
+ * n I: LPC order
+ *
+ * Function:
+ * To make sure that the isfs are properly order and to keep a certain
+ * minimum distance between consecutive isfs.
+ *
+ * Returns:
+ * void
+ */
+static void D_LPC_isf_reorder(Word16 *isf, Word16 min_dist, Word16 n)
+{
+ Word32 i, isf_min;
+
+ isf_min = min_dist;
+
+ for (i = 0; i < n - 1; i++) {
+ if (isf[i] < isf_min) {
+ isf[i] = (Word16)isf_min;
+ }
+ isf_min = isf[i] + min_dist;
+ }
+
+ return;
+}
+
+
+/*
+ * D_LPC_isf_noise_d
+ *
+ * Parameters:
+ * indice I: indices of the selected codebook entries
+ * isf_q O: quantized ISFs (in frequency domain)
+ *
+ * Function:
+ * Decoding of ISF parameters
+ *
+ * Returns:
+ * void
+ */
+void D_LPC_isf_noise_d(Word16 *indice, Word16 *isf_q)
+{
+ Word32 i;
+
+ for (i = 0; i < 2; i++) {
+ isf_q[i] = D_ROM_dico1_isf_noise[indice[0] * 2 + i];
+ }
+
+ for (i = 0; i < 3; i++) {
+ isf_q[i + 2] = D_ROM_dico2_isf_noise[indice[1] * 3 + i];
+ }
+
+ for (i = 0; i < 3; i++) {
+ isf_q[i + 5] = D_ROM_dico3_isf_noise[indice[2] * 3 + i];
+ }
+
+ for (i = 0; i < 4; i++) {
+ isf_q[i + 8] = D_ROM_dico4_isf_noise[indice[3] * 4 + i];
+ }
+
+ for (i = 0; i < 4; i++) {
+ isf_q[i + 12] = D_ROM_dico5_isf_noise[indice[4] * 4 + i];
+ }
+
+ for (i = 0; i < ORDER; i++) {
+ isf_q[i] = (Word16)(isf_q[i] + D_ROM_mean_isf_noise[i]);
+ }
+
+ D_LPC_isf_reorder(isf_q, ISF_GAP, ORDER);
+
+ return;
+}
+
+
+/*
+ * D_LPC_isf_isp_conversion
+ *
+ * Parameters:
+ * isp O: (Q15) isp[m] (range: -1<=val<1)
+ * isf I: (Q15) isf[m] normalized (range: 0.0 <= val <= 0.5)
+ * m I: LPC order
+ *
+ * Function:
+ * Transformation isf to isp
+ *
+ * ISP are immitance spectral pair in cosine domain (-1 to 1).
+ * ISF are immitance spectral pair in frequency domain (0 to 6400).
+ * Returns:
+ * void
+ */
+void D_LPC_isf_isp_conversion(Word16 isf[], Word16 isp[], Word16 m)
+{
+ Word32 i, ind, offset, tmp;
+
+ for (i = 0; i < m - 1; i++) {
+ isp[i] = isf[i];
+ }
+ isp[m - 1] = (Word16)(isf[m - 1] << 1);
+
+ for (i = 0; i < m; i++) {
+ ind = isp[i] >> 7; /* ind = b7-b15 of isf[i] */
+ offset = isp[i] & 0x007f; /* offset = b0-b6 of isf[i] */
+
+ /* isp[i] = table[ind]+ ((table[ind+1]-table[ind])*offset) / 128 */
+ tmp = (D_ROM_cos[ind + 1] - D_ROM_cos[ind]) * offset;
+ isp[i] = (Word16)(D_ROM_cos[ind] + (tmp >> 7));
+ }
+ return;
+}
+
+
+/*
+ * D_LPC_isp_pol_get
+ *
+ * Parameters:
+ * isp I: Immitance spectral pairs (cosine domaine)
+ * f O: the coefficients of F1 or F2
+ * n I: no of coefficients (m/2)
+ * k16 I: 16k flag
+ *
+ * Function:
+ * Find the polynomial F1(z) or F2(z) from the ISPs.
+ * This is performed by expanding the product polynomials:
+ *
+ * F1(z) = product ( 1 - 2 isp_i z^-1 + z^-2 )
+ * i=0,2,4,6,8
+ * F2(z) = product ( 1 - 2 isp_i z^-1 + z^-2 )
+ * i=1,3,5,7
+ *
+ * where isp_i are the ISPs in the cosine domain.
+ *
+ * Returns:
+ * void
+ */
+static void D_LPC_isp_pol_get(Word16 *isp, Word32 *f, Word32 n, Word16 k16)
+{
+ Word32 i, j, t0, s1, s2;
+ Word16 hi, lo;
+
+ s1 = 8388608;
+ s2 = 512;
+
+ if (k16) {
+ s1 >>= 2;
+ s2 >>= 2;
+ }
+
+ /* All computation in Q23 */
+ f[0] = s1; /* f[0] = 1.0; in Q23 */
+ f[1] = isp[0] * (-s2); /* f[1] = -2.0*isp[0] in Q23 */
+ f += 2; /* Advance f pointer */
+ isp += 2; /* Advance isp pointer */
+
+ for (i = 2; i <= n; i++) {
+ *f = f[ - 2];
+
+ for (j = 1; j < i; j++, f--) {
+ D_UTIL_l_extract(f[- 1], &hi, &lo);
+ t0 = D_UTIL_mpy_32_16(hi, lo, *isp); /* t0 = f[-1] * isp */
+ t0 = (t0 << 1);
+ *f = (*f - t0); /* *f -= t0 */
+ *f = (*f + f[ - 2]); /* *f += f[-2] */
+ }
+
+ *f = *f - (*isp * s2); /* *f -= isp << 8 */
+ f += i; /* Advance f pointer */
+ isp += 2; /* Advance isp pointer */
+ }
+
+ return;
+}
+
+
+/*
+ * D_LPC_isp_a_conversion
+ *
+ * Parameters:
+ * isp I: (Q15) Immittance spectral pairs
+ * a O: (Q12) Predictor coefficients (order = M)
+ * m I: order of LP filter
+ *
+ * Function:
+ * Convert ISPs to predictor coefficients a[]
+ *
+ * Returns:
+ * void
+ */
+void D_LPC_isp_a_conversion(Word16 isp[], Word16 a[], Word32 adaptive_scaling,
+ Word16 m)
+{
+ Word32 j, i, nc, tmax, q, q_sug, r;
+ Word32 f1[NC16k + 1], f2[NC16k];
+ Word32 t0;
+ Word16 hi, lo;
+
+ nc = m >> 1;
+
+ if (nc > 8) {
+ D_LPC_isp_pol_get(&isp[0], f1, nc, 1);
+
+ for (i = 0; i <= nc; i++) {
+ f1[i] = (f1[i] << 2);
+ }
+ } else {
+ D_LPC_isp_pol_get(&isp[0], f1, nc, 0);
+ }
+
+ if (nc > 8) {
+ D_LPC_isp_pol_get(&isp[1], f2, nc - 1, 1);
+
+ for (i = 0; i <= nc - 1; i++) {
+ f2[i] = (f2[i] << 2);
+ }
+ } else {
+ D_LPC_isp_pol_get(&isp[1], f2, nc - 1, 0);
+ }
+
+ /*
+ * Multiply F2(z) by (1 - z^-2)
+ */
+ for (i = nc - 1; i > 1; i--) {
+ f2[i] = f2[i] - f2[i - 2]; /* f2[i] -= f2[i-2]; */
+ }
+
+ /*
+ * Scale F1(z) by (1+isp[m-1]) and F2(z) by (1-isp[m-1])
+ */
+ for (i = 0; i < nc; i++) {
+ /* f1[i] *= (1.0 + isp[M-1]); */
+ D_UTIL_l_extract(f1[i], &hi, &lo);
+ t0 = D_UTIL_mpy_32_16(hi, lo, isp[m - 1]);
+ f1[i] = f1[i] + t0;
+
+ /* f2[i] *= (1.0 - isp[M-1]); */
+ D_UTIL_l_extract(f2[i], &hi, &lo);
+ t0 = D_UTIL_mpy_32_16(hi, lo, isp[m - 1]);
+ f2[i] = f2[i] - t0;
+ }
+
+ /*
+ * A(z) = (F1(z)+F2(z))/2
+ * F1(z) is symmetric and F2(z) is antisymmetric
+ */
+
+ /* a[0] = 1.0; */
+ a[0] = 4096;
+ tmax = 1;
+
+ for (i = 1, j = m - 1; i < nc; i++, j--) {
+ /* a[i] = 0.5*(f1[i] + f2[i]); */
+ t0 = f1[i] + f2[i]; /* f1[i] + f2[i] */
+ tmax |= labs(t0);
+ a[i] = (Word16)((t0 + 0x800) >> 12); /* from Q23 to Q12 and * 0.5 */
+
+ /* a[j] = 0.5*(f1[i] - f2[i]); */
+ t0 = (f1[i] - f2[i]); /* f1[i] - f2[i] */
+ tmax |= labs(t0);
+ a[j] = (Word16)((t0 + 0x800) >> 12); /* from Q23 to Q12 and * 0.5 */
+ }
+
+ /* rescale data if overflow has occured and reprocess the loop */
+
+ if (adaptive_scaling) {
+ q = 4 - D_UTIL_norm_l(tmax); /* adaptive scaling enabled */
+ } else {
+ q = 0; /* adaptive scaling disabled */
+ }
+
+ if (q > 0) {
+ q_sug = 12 + q;
+ r = 1 << (q_sug - 1);
+
+ for (i = 1, j = m - 1; i < nc; i++, j--) {
+ /* a[i] = 0.5*(f1[i] + f2[i]); */
+ t0 = f1[i] + f2[i]; /* f1[i] + f2[i] */
+ a[i] = (Word16)((t0 + r) >> q_sug); /* from Q23 to Q12 and * 0.5 */
+
+ /* a[j] = 0.5*(f1[i] - f2[i]); */
+ t0 = f1[i] - f2[i]; /* f1[i] - f2[i] */
+ a[j] = (Word16)((t0 + r) >> q_sug); /* from Q23 to Q12 and * 0.5 */
+ }
+ a[0] = (Word16)(a[0] >> q);
+ } else {
+ q_sug = 12;
+ r = 1 << (q_sug - 1);
+ q = 0;
+ }
+
+ /* a[NC] = 0.5*f1[NC]*(1.0 + isp[M-1]); */
+ D_UTIL_l_extract(f1[nc], &hi, &lo);
+ t0 = D_UTIL_mpy_32_16(hi, lo, isp[m - 1]);
+ t0 = f1[nc] + t0;
+ a[nc] = (Word16)((t0 + r) >> q_sug); /* from Q23 to Q12 and * 0.5 */
+
+ /* a[m] = isp[m-1]; */
+ a[m] = (Word16)((isp[m - 1] >> (2 + q)) + 1); /* from Q15 to Q12 */
+ a[m] = (Word16)(a[m] >> 1);
+
+ return;
+}
+
+
+/*
+ * D_LPC_a_weight
+ *
+ * Parameters:
+ * a I: LP filter coefficients
+ * ap O: weighted LP filter coefficients
+ * gamma I: weighting factor
+ * m I: order of LP filter
+ *
+ * Function:
+ * Weighting of LP filter coefficients, ap[i] = a[i] * (gamma^i).
+ *
+ * Returns:
+ * void
+ */
+void D_LPC_a_weight(Word16 a[], Word16 ap[], Word16 gamma, Word16 m)
+{
+ Word32 i, fac;
+
+ ap[0] = a[0];
+ fac = gamma;
+
+ for (i = 1; i < m; i++) {
+ ap[i] = (Word16)(((a[i] * fac) + 0x4000) >> 15);
+ fac = ((fac * gamma) + 0x4000) >> 15;
+ }
+
+ ap[m] = (Word16)(((a[m] * fac) + 0x4000) >> 15);
+
+ return;
+}
+
+
+/*
+ * D_LPC_isf_2s3s_decode
+ *
+ * Parameters:
+ * indice I: quantisation indices
+ * isf_q O: quantised ISFs in the cosine domain
+ * past_isfq I/O: past ISF quantizer
+ * isfold I: past quantised ISF
+ * isf_buf O: isf buffer
+ * bfi I: Bad frame indicator
+ *
+ * Function:
+ * Decoding of ISF parameters.
+ *
+ * Returns:
+ * void
+ */
+void D_LPC_isf_2s3s_decode(Word16 *indice, Word16 *isf_q, Word16 *past_isfq,
+ Word16 *isfold, Word16 *isf_buf, Word16 bfi)
+{
+
+ Word32 ref_isf[M];
+ Word32 L_tmp, i, j;
+ Word16 tmp;
+
+ if (bfi == 0) { /* Good frame */
+ for (i = 0; i < 9; i++) {
+ isf_q[i] = D_ROM_dico1_isf[indice[0] * 9 + i];
+ }
+
+ for (i = 0; i < 7; i++) {
+ isf_q[i + 9] = D_ROM_dico2_isf[indice[1] * 7 + i];
+ }
+
+ for (i = 0; i < 5; i++) {
+ isf_q[i] =
+ (Word16)(isf_q[i] + D_ROM_dico21_isf_36b[indice[2] * 5 + i]);
+ }
+
+ for (i = 0; i < 4; i++) {
+ isf_q[i + 5] =
+ (Word16)(isf_q[i + 5] + D_ROM_dico22_isf_36b[indice[3] * 4 + i]);
+ }
+
+ for (i = 0; i < 7; i++) {
+ isf_q[i + 9] =
+ (Word16)(isf_q[i + 9] + D_ROM_dico23_isf_36b[indice[4] * 7 + i]);
+ }
+
+ for (i = 0; i < ORDER; i++) {
+ tmp = isf_q[i];
+ isf_q[i] =
+ (Word16)((tmp + D_ROM_mean_isf[i]) + ((MU * past_isfq[i]) >> 15));
+ past_isfq[i] = tmp;
+ }
+
+ for (i = 0; i < M; i++) {
+ for (j = (L_MEANBUF - 1); j > 0; j--) {
+ isf_buf[j * M + i] = isf_buf[(j - 1) * M + i];
+ }
+ isf_buf[i] = isf_q[i];
+ }
+
+ } else {
+ /* bad frame */
+
+ for (i = 0; i < M; i++) {
+ L_tmp = D_ROM_mean_isf[i];
+
+ for (j = 0; j < L_MEANBUF; j++) {
+ L_tmp = L_tmp + isf_buf[j * M + i];
+ }
+ ref_isf[i] = (L_tmp + 0x1) >> 2;
+ }
+
+ /* use the past ISFs slightly shifted towards their mean */
+ for (i = 0; i < ORDER; i++) {
+ isf_q[i] = (Word16)((((ALPHA * isfold[i]) >> 15) +
+ ((ONE_ALPHA * ref_isf[i]) >> 15)));
+ }
+
+ /* estimate past quantized residual to be used in next frame */
+ for (i = 0; i < ORDER; i++) {
+ /* predicted ISF */
+ L_tmp = ref_isf[i] + ((past_isfq[i] * MU) >> 15);
+ /* past_isfq[i] *= 0.5 */
+ past_isfq[i] = (Word16)((isf_q[i] - L_tmp) >> 1);
+ }
+ }
+
+ D_LPC_isf_reorder(isf_q, ISF_GAP, ORDER);
+
+ return;
+}
+
+
+/*
+ * D_LPC_isf_2s5s_decode
+ *
+ * Parameters:
+ * indice I: quantization indices
+ * isf_q O: quantized ISFs in the cosine domain
+ * past_isfq I/O: past ISF quantizer
+ * isfold I: past quantized ISF
+ * isf_buf O: isf buffer
+ * bfi I: Bad frame indicator
+ *
+ * Function:
+ * Decoding of ISF parameters.
+ *
+ * Returns:
+ * void
+ */
+void D_LPC_isf_2s5s_decode(Word16 *indice, Word16 *isf_q, Word16 *past_isfq,
+ Word16 *isfold, Word16 *isf_buf, Word16 bfi)
+{
+ Word32 ref_isf[M];
+ Word32 i, j, L_tmp;
+ Word16 tmp;
+
+ if (bfi == 0) { /* Good frame */
+ for (i = 0; i < 9; i++) {
+ isf_q[i] = D_ROM_dico1_isf[indice[0] * 9 + i];
+ }
+
+ for (i = 0; i < 7; i++) {
+ isf_q[i + 9] = D_ROM_dico2_isf[indice[1] * 7 + i];
+ }
+
+ for (i = 0; i < 3; i++) {
+ isf_q[i] = (Word16)(isf_q[i] + D_ROM_dico21_isf[indice[2] * 3 + i]);
+ }
+
+ for (i = 0; i < 3; i++) {
+ isf_q[i + 3] =
+ (Word16)(isf_q[i + 3] + D_ROM_dico22_isf[indice[3] * 3 + i]);
+ }
+
+ for (i = 0; i < 3; i++) {
+ isf_q[i + 6] =
+ (Word16)(isf_q[i + 6] + D_ROM_dico23_isf[indice[4] * 3 + i]);
+ }
+
+ for (i = 0; i < 3; i++) {
+ isf_q[i + 9] =
+ (Word16)(isf_q[i + 9] + D_ROM_dico24_isf[indice[5] * 3 + i]);
+ }
+
+ for (i = 0; i < 4; i++) {
+ isf_q[i + 12] =
+ (Word16)(isf_q[i + 12] + D_ROM_dico25_isf[indice[6] * 4 + i]);
+ }
+
+ for (i = 0; i < ORDER; i++) {
+ tmp = isf_q[i];
+ isf_q[i] =
+ (Word16)((tmp + D_ROM_mean_isf[i]) + ((MU * past_isfq[i]) >> 15));
+ past_isfq[i] = tmp;
+ }
+
+
+ for (i = 0; i < M; i++) {
+ for (j = (L_MEANBUF - 1); j > 0; j--) {
+ isf_buf[j * M + i] = isf_buf[(j - 1) * M + i];
+ }
+ isf_buf[i] = isf_q[i];
+ }
+
+ } else {
+ /* bad frame */
+
+ for (i = 0; i < M; i++) {
+ L_tmp = D_ROM_mean_isf[i];
+
+ for (j = 0; j < L_MEANBUF; j++) {
+ L_tmp = L_tmp + isf_buf[j * M + i];
+ }
+
+ ref_isf[i] = (L_tmp + 0x1) >> 2;
+ }
+
+ /* use the past ISFs slightly shifted towards their mean */
+ for (i = 0; i < ORDER; i++) {
+ isf_q[i] = (Word16)(((ALPHA * isfold[i]) >> 15) +
+ ((ONE_ALPHA * ref_isf[i]) >> 15));
+ }
+
+ /* estimate past quantized residual to be used in next frame */
+ for (i = 0; i < ORDER; i++) {
+ /* predicted ISF */
+ L_tmp = ref_isf[i] + ((past_isfq[i] * MU) >> 15);
+ /* past_isfq[i] *= 0.5 */
+ past_isfq[i] = (Word16)((isf_q[i] - L_tmp) >> 1);
+ }
+ }
+
+ D_LPC_isf_reorder(isf_q, ISF_GAP, ORDER);
+
+ return;
+}
+
+
+/*
+ * D_LPC_int_isp_find
+ *
+ * Parameters:
+ * isp_old I: isps from past frame
+ * isp_new I: isps from present frame
+ * frac I: (Q15) fraction for 3 first subfr
+ * Az O: LP coefficients in 4 subframes
+ *
+ * Function:
+ * Find the interpolated ISP parameters for all subframes.
+ *
+ * Returns:
+ * void
+ */
+void D_LPC_int_isp_find(Word16 isp_old[], Word16 isp_new[],
+ const Word16 frac[], Word16 Az[])
+{
+ Word32 tmp, i, k, fac_old, fac_new;
+ Word16 isp[M];
+
+ for (k = 0; k < 3; k++) {
+ fac_new = frac[k];
+ fac_old = (32767 - fac_new) + 1; /* 1.0 - fac_new */
+
+ for (i = 0; i < M; i++) {
+ tmp = isp_old[i] * fac_old;
+ tmp += isp_new[i] * fac_new;
+ isp[i] = (Word16)((tmp + 0x4000) >> 15);
+ }
+
+ D_LPC_isp_a_conversion(isp, Az, 0, M);
+ Az += MP1;
+ }
+
+ /* 4th subframe: isp_new (frac=1.0) */
+ D_LPC_isp_a_conversion(isp_new, Az, 0, M);
+
+ return;
+}
+
+
+/*
+ * D_LPC_isf_extrapolation
+ *
+ * Parameters:
+ * HfIsf I/O: ISF vector
+ *
+ * Function:
+ * Conversion of 16th-order 12.8kHz ISF vector
+ * into 20th-order 16kHz ISF vector
+ *
+ * Returns:
+ * void
+ */
+void D_LPC_isf_extrapolation(Word16 HfIsf[])
+{
+ Word32 IsfDiff[M - 2];
+ Word32 IsfCorr[3];
+ Word32 tmp, tmp2, tmp3, mean, i;
+ Word32 MaxCorr, exp, exp2, coeff;
+ Word16 hi, lo;
+
+ HfIsf[M16k - 1] = HfIsf[M - 1];
+
+ /* Difference vector */
+ for (i = 1; i < M - 1; i++) {
+ IsfDiff[i - 1] = HfIsf[i] - HfIsf[i - 1];
+ }
+
+ tmp = 0;
+
+ /* Mean of difference vector */
+ for (i = 3; i < (M - 1); i++) {
+ tmp = tmp + (IsfDiff[i - 1] * INV_LENGTH);
+ }
+
+ mean = (tmp + 0x4000) >> 15;
+ IsfCorr[0] = 0;
+ IsfCorr[1] = 0;
+ IsfCorr[2] = 0;
+ tmp = 0;
+
+ for (i = 0; i < M - 2; i++) {
+ if (IsfDiff[i] > tmp) {
+ tmp = IsfDiff[i];
+ }
+ }
+
+ exp = D_UTIL_norm_s((Word16)tmp);
+
+ for (i = 0; i < M - 2; i++) {
+ IsfDiff[i] = IsfDiff[i] << exp;
+ }
+
+ mean = mean << exp;
+
+ for (i = 7; i < M - 2; i++) {
+ tmp2 = IsfDiff[i] - mean;
+ tmp3 = IsfDiff[i - 2] - mean;
+ tmp = (tmp2 * tmp3) << 1;
+ D_UTIL_l_extract(tmp, &hi, &lo);
+ tmp = D_UTIL_mpy_32(hi, lo, hi, lo);
+ IsfCorr[0] = (IsfCorr[0] + tmp);
+ }
+
+ for (i = 7; i < M - 2; i++) {
+ tmp2 = IsfDiff[i] - mean;
+ tmp3 = IsfDiff[i - 3] - mean;
+ tmp = (tmp2 * tmp3) << 1;
+ D_UTIL_l_extract(tmp, &hi, &lo);
+ tmp = D_UTIL_mpy_32(hi, lo, hi, lo);
+ IsfCorr[1] = (IsfCorr[1] + tmp);
+ }
+
+ for (i = 7; i < M - 2; i++) {
+ tmp2 = IsfDiff[i] - mean;
+ tmp3 = IsfDiff[i - 4] - mean;
+ tmp = (tmp2 * tmp3) << 1;
+ D_UTIL_l_extract(tmp, &hi, &lo);
+ tmp = D_UTIL_mpy_32(hi, lo, hi, lo);
+ IsfCorr[2] = (IsfCorr[2] + tmp);
+ }
+
+ if (IsfCorr[0] > IsfCorr[1]) {
+ MaxCorr = 0;
+ } else {
+ MaxCorr = 1;
+ }
+
+ if (IsfCorr[2] > IsfCorr[MaxCorr]) {
+ MaxCorr = 2;
+ }
+
+ MaxCorr = MaxCorr + 1; /* Maximum correlation of difference vector */
+
+ for (i = M - 1; i < (M16k - 1); i++) {
+ tmp = (HfIsf[i - 1 - MaxCorr] - HfIsf[i - 2 - MaxCorr]);
+ HfIsf[i] = (Word16)(HfIsf[i - 1] + tmp);
+ }
+
+ /* tmp=7965+(HfIsf[2]-HfIsf[3]-HfIsf[4])/6; */
+ tmp = HfIsf[4] + HfIsf[3];
+ tmp = HfIsf[2] - tmp;
+ tmp = (tmp * 5461) >> 15;
+ tmp = tmp + 20390;
+
+ if (tmp > 19456) {
+ /* Maximum value of ISF should be at most 7600 Hz */
+ tmp = 19456;
+ }
+
+ tmp = tmp - HfIsf[M - 2];
+ tmp2 = HfIsf[M16k - 2] - HfIsf[M - 2];
+ exp2 = D_UTIL_norm_s((Word16)tmp2);
+ exp = D_UTIL_norm_s((Word16)tmp);
+ exp = exp - 1;
+ tmp = tmp << exp;
+ tmp2 = tmp2 << exp2;
+ coeff = (tmp << 15) / tmp2; /* Coefficient for stretching the ISF vector */
+ exp = exp2 - exp;
+
+ if (exp >= 0) {
+ for (i = M - 1; i < M16k - 1; i++) {
+ tmp = ((HfIsf[i] - HfIsf[i - 1]) * coeff) >> 15;
+ IsfDiff[i - (M - 1)] = tmp << exp;
+ }
+ } else {
+ exp = 15 - exp;
+
+ for (i = M - 1; i < M16k - 1; i++) {
+ IsfDiff[i - (M - 1)] = ((HfIsf[i] - HfIsf[i - 1]) * coeff) >> exp;
+ }
+ }
+
+ for (i = M; i < (M16k - 1); i++) {
+ /* The difference between ISF(n) and ISF(n-2) should be at least 500 Hz */
+ tmp = ((IsfDiff[i - (M - 1)] + IsfDiff[i - M]) - 1280);
+
+ if (tmp < 0) {
+ if (IsfDiff[i - (M - 1)] > IsfDiff[i - M]) {
+ IsfDiff[i - M] = (1280 - IsfDiff[i - (M - 1)]);
+ } else {
+ IsfDiff[i - (M - 1)] = (1280 - IsfDiff[i - M]);
+ }
+ }
+ }
+
+ for (i = M - 1; i < M16k - 1; i++) {
+ HfIsf[i] = (Word16)(HfIsf[i - 1] + IsfDiff[i - (M - 1)]);
+ }
+
+ for (i = 0; i < M16k - 1; i++) {
+ HfIsf[i] = (Word16)((HfIsf[i] * 13107) >> 14);
+ /* Scale the ISF vector correctly for 16000 kHz */
+ }
+
+ D_LPC_isf_isp_conversion(HfIsf, HfIsf, M16k);
+
+ return;
+}