Fixed-point HE-AAC decoder
Developed by RealNetworks, 2005
===============================
Overview
--------
This module contains a high-performance HE-AAC decoder for 32-bit fixed-point
processors. The following is a summary of what is and is not supported:
Supported:
- MPEG2, MPEG4 low complexity decoding (intensity stereo, M-S, TNS, PNS)
- spectral band replication (SBR), high-quality mode
- mono, stereo, and multichannel modes
- ADTS, ADIF, and raw data block file formats
Not currently supported:
- main or SSR profile, LTP
- coupling channel elements (CCE)
- 960/1920-sample frame size
- low-power mode SBR
- downsampled (single-rate) SBR
- parametric stereo
Highlights
----------
- highly optimized for ARM processors (details in docs/ subdirectory)
- reference x86 implementation
- C and assembly code only (C++ not required for codec library)
- reentrant, statically linkable
- low memory (details in docs/ subdirectory)
- option to use Intel Integrated Performance Primitives (details below)
Supported platforms and toolchains
----------------------------------
This codec should run on any 32-bit fixed-point processor which can perform a full 32x32-bit
multiply (providing a 64-bit result). The following processors and toolchains are supported:
- x86, Microsoft Visual C++
- x86, GNU toolchain (gcc)
- ARM, ARM Developer Suite (ADS)
- ARM, Microsoft Embedded Visual C++
- ARM, GNU toolchain (gcc)
ARM refers to any processor supporting ARM architecture v.4 or above. Thumb is not required.
Generally ADS produces the fastest code. EVC 3 does not support inline assembly code for
ARM targets, so calls to MULSHIFT32 (smull on ARM) are left as function calls. This incurs
a significant performance penalty. For the fastest code on targets which do not normally use
ADS consider compiling with ADS, using the -S option to output assembly code, and
feeding this assembly code to the assembler of your choice. This might require some
syntax changes in the .S file.
Adding support for a new processor is fairly simple. Simply add a new block to the file
real/assembly.h which implements the required inline assembly functions for your processor.
Something like
...
#elif defined NEW_PROCESSOR
/* you implement MULSHIFT32() and so forth */
#else
#error Unsupported platform in assembly.h
#endif
Optionally you can rewrite or add assembly language files optimized for your platform. Note
that many of the algorithms are designed for an ARM-type processor, so performance of the
unmodified C code might be noticeably worse on other architectures.
Adding support for a new toolchain is straightforward. Use the sample projects or the
Helix makefiles as a template for which source files to include.
Multichannel
------------
For multichannel, just set AAC_MAX_NCHANS in pub/aacdec.h to the desired max number
of channels (default = 2) and recompile. This increases RAM usage since more memory
is required to save state for multiple channels. See docs/memory.xls for details.
Directory structure
-------------------
fixpt/ platform-independent code and tables, public API
fixpt/docs memory and CPU usage figures, callgraphs
fixpt/hxwrap Helix wrapper code and makefiles
fixpt/ipp source code which uses IPP for decoding (see the "IPP" section below)
fixpt/pub public header files
fixpt/real source code for RealNetworks' AAC decoder
fixpt/testwrap sample code to build a command-line test application
Code organization
-----------------
fixpt/
aacdec.c main decode functions, exports C-only API
aactabs.c common tables used by all implementations
fixpt/pub/
aaccommon.h low-level codec API which aacdec.c calls
aacdec.h high-level codec API which applications call
statname.h symbols which get name-mangled by C preprocessor to allow static linking
fixpt/ipp source code for wrapper files which link in IPP libraries
fixpt/real full source code for RealNetworks AAC decoder, including SBR
fixpt/real/asm optimized assembly code files for certain platforms
To build an AAC decoder library, you'll need to compile the top-level files and EITHER
real/*.c OR ipp/*.c and the appropriate IPP library.
Decoder using Real code: aacdec.c + aactabs.c + real/*.c + real/asm/[platform]/*.s (if necessary)
Decoder using IPP code: aacdec.c + aactabs.c + ipp/*.c + ippac*.lib
IPP
---
For certain platforms Intel� has created highly-optimized object code libraries of DSP
routines. These are called the Intel� Integrated Performance Primitives (IPP). If IPP
libraries are available for a platform, this AAC decoder can link them in and use them
instead of the RealNetworks source code. To use IPP, you still need to build the top-level
files (aacdec.c, aactabs.c). You also build the files in ipp/*.c. These are just thin
wrappers which provide the glue logic between the top-level decode functions in
aacdec.c and the optimized DSP primitives in the IPP libraries. IPP libraries are not
included in this module. You must obtain them WITH A LICENSE directly from Intel.
Further info on the latest versions of IPP (as of the date of this readme) is available
from the URL below:
http://www.intel.com/software/products/ipp/
This site explains how to obtain IPP and the terms under which IPP libraries may be used.
The code in this module is merely wrapper code which calls IPP functions. You are fully
responsible for adhering to the license agreement under which you obtain the IPP
libraries from Intel.
readme.txt last updated 02/25/05
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Helix AAC Decoder源码及官方文档 (100个子文件)
trigtabs.c 73KB
sbrtabs.c 33KB
sbrhfadj.c 32KB
sbrhfgen.c 22KB
sbrside.c 20KB
imdct.c 20KB
sbrfreq.c 20KB
sbrqmf.c 19KB
sbrhuff.c 18KB
filefmt.c 17KB
noiseless.c 16KB
filefmt.c 15KB
hufftabs.c 14KB
huffman.c 14KB
aacdec.c 14KB
decelmnt.c 14KB
sbr.c 14KB
decelmnt.c 14KB
sbrimdct.c 13KB
pns.c 12KB
dequant.c 12KB
fft.c 11KB
main.c 11KB
dct4.c 11KB
trigtabs_fltgen.c 10KB
tns.c 10KB
sbrfft.c 10KB
bitstream.c 9KB
stproc.c 8KB
aactabs.c 7KB
sbrmath.c 6KB
noiseless.c 5KB
timing.c 5KB
buffers.c 4KB
buffers.c 4KB
dequant.c 4KB
imdct.c 4KB
debug.c 4KB
stproc.c 3KB
pns.c 3KB
tns.c 3KB
userint.c 2KB
nodefaultlibs.c 103B
aacdecdll.cpp 16KB
raacentrydrm.cpp 4KB
aacdecdrm.cpp 3KB
initguid.cpp 2KB
Menu.doc 31KB
readme.doc 31KB
callgraph_aac.doc 25KB
callgraph_sbr.doc 23KB
aacdec.dsp 8KB
aacdec.dsp 5KB
testwrap.dsp 5KB
testwrap.dsp 4KB
aacdec.dsw 813B
aacdec.dsw 813B
coder.h 17KB
assembly.h 14KB
sbr.h 14KB
aaccommon.h 7KB
aacdec.h 6KB
statname.h 5KB
aacdecdll.h 4KB
coder.h 4KB
bitstream.h 3KB
wrapper.h 3KB
aacdecdrm.h 2KB
testwrap.mcp 187KB
aacdec.mcp 186KB
raac.rc 4KB
sbrqmfak.s 7KB
sbrcov.s 6KB
sbrqmfak.s 6KB
sbrqmfak.s 5KB
sbrqmfak.s 5KB
sbrcov.s 5KB
sbrcov.s 5KB
sbrqmfsk.s 5KB
sbrcov.s 5KB
sbrqmfsk.s 4KB
sbrqmfsk.s 4KB
sbrqmfsk.s 4KB
asmfunc.s 3KB
readme.txt 6KB
umake_lib.4.txt 6KB
umake_dll.2.txt 5KB
umake_lib_symbian.pcf.txt 2KB
umake_dll_symbian.pcf.txt 2KB
umake_test.1.txt 2KB
win32.pcf.txt 2KB
Umakefil.1.txt 2KB
Umakefil.1.txt 2KB
symbian.pcf.txt 2KB
raac.ver.txt 488B
aacdec.vcp 12KB
testwrap.vcp 6KB
aacdec.vcw 818B
cpuusage.xls 17KB
memory.xls 17KB
共 100 条
- 1
资源评论
- 疯狂de攻城狮2021-02-22不错 可以用 谢谢分享
- pennypf2016-08-09非常有用,感谢分享,谢谢!
- mylinbao2019-08-31非常有用,感谢分享,谢谢
xxxfree
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- J185-VB一款SOT23封装P-Channel场效应MOS管
- 计算整数各位数字之和,利用java代码实现
- J185-T2B-VB一款SOT23封装P-Channel场效应MOS管
- map20231226Kalmanfilter.ipynb
- J185-T1B-VB一款SOT23封装P-Channel场效应MOS管
- ASME Y14.5-2018 尺寸与公差标注 中文版
- J185-T1B-A-VB一款SOT23封装P-Channel场效应MOS管
- J168-VB一款SOT23封装P-Channel场效应MOS管
- J166-VB一款SOT23封装P-Channel场效应MOS管
- i2c测试程序-linux-如何调试i2c.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功