2015-01-20 14 views
2

Я пытаюсь декодировать AAC-кодированный файл, используя libfdk_aac. Файл состоит из потока необработанных пакетов AAC-LC ADTS, которые были сгенерированы с использованием libfdk_aac. Я уверен, что данные хорошо сформированы, потому что я могу воспроизвести файл с помощью VLC и Window Media Player.libfdk_aac не читает в буфер

Вот мои настройки:

UCHAR* inputBuffer = new UCHAR[ 2048 ] ; 
UINT bufSize[] = { 0 } ; 

INT_PCM* outputBuffer = new INT_PCM[ 4096 ] ; 
int outputbufSize = 8192 ; 
UINT flags = 0 ; 

//Set up the Audio Specific Config 
UCHAR* asc = new UCHAR[ 2 ] ; 
asc[ 0 ] = (UCHAR) 0x11 ; 
asc[ 1 ] = (UCHAR) 0x90 ; 
UINT ascSize[] = { 2 } ; 

HANDLE_DECODER decoder = aacDecoder_Open(TT_MP4_ADTS, 1) ; 
AAC_DECODER_ERROR aacError = aacDecoder_ConfigRaw(decoder, &asc, ascSize) ; 
if(aacError) 
{ 
    printf("Configure error\n") ; 
    exit(-1) ; 
} 

int dataAvailable = 1 ; 
do 
{ 
    //Reads the file and gets the next ADTS packet with one AAC frame 
    unsigned int adtsPacketSize ; 
    dataAvailable = readMPEGFile(filePtr, inputBuffer, &adtsPacketSize) ; 
    bufSize[ 0 ] = adtsPacketSize ; 

    aacError = aacDecoder_Fill(decoder, &inputBuffer, bufSize, &bytesValid) ; 
    //Check to see if bytesValid == 0 
    //If bytesValid > 0, keep calling aacDecoder_Fill() 

    //If bytesValid == 0, decode audio 
    aacError = aacDecoder_DecodeFrame(decoder, outputBuffer, outputBufSize, flags) ; 

    //If no error, write raw PCM data to file. 
}while(dataAvailable) ; 

Проблема заключается в том, что aacDecoder_DecodeFrame продолжает возвращаться с AAC_DEC_NOT_ENOUGH_BITS. Вызовы aacDecoder_GetFreeBytes() показывают, что внутренний буфер не получает никаких входных данных. Любые идеи о том, почему это происходит?

ответ

-1
  1. Если у вашей даты есть ADTS, вам не нужно устанавливать конфигурацию ES через aacDecoder_ConfigRaw.
  2. Проверьте размер OUTPUTBUFFER, этот размер может быть считан из ADTS, он равен frame size * channel counts
  3. Try записать выходной буфер в файл и использовать инструмент PCM для синтаксического анализа (e.g. Adobe Audition)

 Смежные вопросы

  • Нет связанных вопросов^_^