Android Faad靜態(tài)庫與aac解碼

build_android.sh
#!/bin/bash

export NDK_HOME=/android-ndk-r10e
export SYSROOT=$NDK_HOME/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK_HOME/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export CPU=arm
export PREFIX=$(pwd)/android/$CPU

CFLAGS="-fpic -DANDROID -fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -DANDROID -Wa,--noexecstack -MMD -MP "
CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi-
export CPPFLAGS="$CFLAGS"
export CFLAGS="$CFLAGS"
export CXXFLAGS="$CFLAGS"
export CXX="${CROSS_COMPILE}g++ --sysroot=${SYSROOT}"
export LDFLAGS="$LDFLAGS"
export CC="${CROSS_COMPILE}gcc --sysroot=${SYSROOT}"
export NM="${CROSS_COMPILE}nm"
export STRIP="${CROSS_COMPILE}strip"
export RANLIB="${CROSS_COMPILE}ranlib"
export AR="${CROSS_COMPILE}ar"
#export LIBS="-lm"

./configure --prefix=$PREFIX \
--without-mp4v2 \
--host=arm-linux

make clean
make
make install

解碼
#include <faad.h>
#include <neaacdec.h>
#include "playSdkMacro.h"
unsigned int adts_sample_rates[] = {96000,88200,64000,48000,44100,32000,24000,22050,16000,12000,11025,8000,7350,0,0,0};

int aac_Decode(char *src, char *dest, int srclen, int *dstlen)
{
    unsigned long samplerate;
    unsigned char channels;
    NeAACDecFrameInfo frameInfo;

    samplerate = adts_sample_rates[(src[2]&0x3c)>>2];
    channels =  ( (src[3]&0xc0)>>6 ) | ( (src[2]&0x1)<<2 );

    NeAACDecHandle m_aac_handle;
    NeAACDecConfigurationPtr config;

    m_aac_handle = NeAACDecOpen();//創(chuàng)建解碼器
    if(m_aac_handle)
    {
        config = NeAACDecGetCurrentConfiguration(m_aac_handle);
        config->defObjectType = LC;
        config->defSampleRate = samplerate;
        config->outputFormat = FAAD_FMT_16BIT;
        config->dontUpSampleImplicitSBR = 1;
        config->downMatrix = 0;
        config->useOldADTSFormat = 0;
        NeAACDecSetConfiguration(m_aac_handle, config);//配置解碼器
        NeAACDecInit(m_aac_handle, src, srclen,  &samplerate, &channels);//初始化faad解碼句柄
        //NeAACDecDecode(m_aac_handle, &frameInfo, src, srclen);//解碼
        NeAACDecDecode2(m_aac_handle, &frameInfo, src, srclen, (void **)&dest, dstlen);//解碼
        AIPU_LOGI("> error:%d samples:%d samplerate:%d channels:%d\n",frameInfo.error, frameInfo.samples, frameInfo.samplerate, frameInfo.channels);
        AIPU_LOGI("< srclen:%d dstlen:%d\n",srclen, dstlen);
    }

    return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容