FFMPEG - AVCODEC_DECODE_AUDIO3 siempre devuelve 0 con AAC Decoding en Android
-
27-10-2019 - |
Pregunta
Estoy escribiendo un decodificador de audio basado en FFMPEG para Android, donde tengo que decodificar AAC Audio, pero por alguna razón siempre devuelve 0 bytes decodificados.
Parece que paso todo bien. ¿Alguien puede decirme qué salió mal en mi caso? Copié código de ffplay.c. ¿Cuál es la razón por la cual la función AVCODEC_DECODE_AUDIO3 siempre devuelve cero?
Aquí está el código 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;
}
Solución
Puedo resolver mi problema, no con el código anterior. Pero reescribí completamente mi código de audio, que no tiene ningún hilo o mecanismo de espera. Sospecho que el problema no se encuentra en el código anterior, pero es en la forma en que paso los datos a una función.
Otros consejos
Cuando tu lo hagas:
data_size = sizeof(is->audio_buf1);
Obtiene el tamaño de un puntero, en lugar del tamaño del búfer apuntado por IS-> Audio_Buf1