ffmpeg - avcodec_decode_audio3 всегда возвращает 0 с декодированием aac на андроиде - PullRequest
0 голосов
/ 18 марта 2011

Я пишу аудиодекодер на основе ffmpeg для Android, где мне нужно декодировать aac audio, но по какой-то причине он всегда возвращает 0 байтов.

Похоже, я все прошел правильно.Кто-нибудь может сказать мне, что пошло не так в моем случае. Я скопировал код из ffplay.c.По какой причине функция avcodec_decode_audio3 всегда возвращает ноль?

Вот код из ffplay.c:

AVPacket *pkt_temp = &is->audio_pkt_temp;
    AVPacket *pkt = &is->audio_pkt;
    AVCodecContext *dec= is->audio_st->codec;
    int n, len1, data_size;
    double pts;

          data_size = sizeof(is->audio_buf1);
        len1 = avcodec_decode_audio3(dec, (int16_t *)is->audio_buf1, &data_size, pkt_temp);
        if (len1 < 0) {
            pkt_temp->size = 0;
            break;
        } 

       if (data_size <= 0){
                   //This block always gets executed.
            continue;
    }

Ответы [ 2 ]

0 голосов
/ 05 октября 2011

Когда вы делаете:

data_size = sizeof(is->audio_buf1);

Вы получаете размер указателя вместо размера буфера, на который указывает is-> audio_buf1

0 голосов
/ 22 марта 2011

Я могу решить мою проблему, не используя приведенный выше код. Но я полностью переписал свой аудиокод, в котором нет ни потоков, ни механизма ожидания. Я подозреваю, что проблема не в приведенном выше коде, а в том, как я передаю данные в функцию.

...