刘品
学以致用---博主简介:专注语音、视频数字信号处理方面的研究以及算法在手机平台上面的移植和优化。涉及语音/音频编解码,语音增强,语音识别,语音音质客观评估,VOIP语音引擎 Qos算法模块和声音变速不变调和变调不变速等功能实现。熟悉ARM 各个系列的CPU,用ARMv4,ARMv5,ARMv6 and Cortex Neon 汇编优化相关算法代码,争取perforamance 最优。目前主要Windows mobile and Android platform上做相关speech/audio算法以及应用开发, HEVC 编解码器PC 和手机上的开发与应用。(交流Email:liupin.2008@gmail.com)

                                                        APE file 一些概念

APE代码解读系列(一)

APE代码解读系列(三)

 1. 先要了解APE compression level

     APE主要有5level, 分别是:

     CompressionLevel == 1000 ---- fast

     CompressionLevel == 2000 ---- normal

     CompressionLevel == 3000 ---- high

     CompressionLevel == 4000 ---- extra high

     CompressionLevel == 5000 ---- insane

     压缩级别越高,那得到的APE文件size就越小, 但意味着算法的复杂度就越高。level不一样,其采取的预测器个数和算法不一样。compression level 会作为参数加入APE file Header 中, 通过parser file header就能得到。

2. APE从出现到今,也有很多版本,不同的版本之间又有一些改进,有的算法上都不一样,APE为了向下兼容,所有要对APE是什么版本进行分析,不同的版本有不同的分支。

     版本号有:3860, 3860, 3910, 3950, 3980等,当从file header中parser出m_nVersion时,在分支时就对m_nVersion进行判断。如

     if (CommonHeader.nVersion >= 3980)
    {
        // current header format
        nRetVal = AnalyzeCurrent(pInfo);
    }
    else
    {
        // legacy support
        nRetVal = AnalyzeOld(pInfo);
    }

   这种现象在APE中很常见。

3. APE channel

    目前APE只支持MONO 和 2 channels, 不像FLAC会支持多个声道。

 

4. APE 中 frame 和 blocks的概念

    APE frame 由很多blocks组成,  一个Block由2~3Bytes组成,如是2-channel,a block will decode output 2sample--nRnL(4Bytes)

    APE frame往往很大,包括很多blocks, 目前我碰到的APE frame是包含constant block number---294912 Blocks, 也许APE frame就是值,这个我要进一步check.

    APE 一次decode往往是9216blocks, 也就是说一次APE会输出 36K PCM Data.

 

 

 

    

posted on 2009-11-27 15:32  liupin  阅读(2689)  评论(1编辑  收藏  举报

-->