Question

Je suis en train d'écrire un décodeur audio basé sur ffmpeg pour Android, où je dois décoder audio aac, mais en raison d'une raison, il renvoie toujours 0 octets décodés.

On dirait que je passe tout droit. Quelqu'un peut-il me dire ce qui a mal tourné dans mon case.I code copié à partir ffplay.c. Quelle est la fonction de avcodec_decode_audio3 raison retourne toujours zéro?

Voici le code de 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;
    }
Était-ce utile?

La solution

Je suis en mesure de résoudre mon problème, et non pas avec le code ci-dessus. Mais je réécris complètement mon code audio, qui ne dispose pas de fils ou d'un mécanisme d'attente. Je pense que le problème ne réside pas dans le code ci-dessus, mais il est dans la façon dont je passe les données à une fonction.

Autres conseils

Quand vous faites:

data_size = sizeof(is->audio_buf1);

Vous obtenez la taille d'un pointeur, au lieu de la taille du tampon pointé par est-> audio_buf1

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top