/ / Problema com o AudioTrack do Android 2.3 (obter tempo limite esgotado - a CPU está atrelada?) - android, streaming, CPU, AAC, Audiotrack

Android 2.3 AudioTrack questão (getbuffer expirou - é cpu atrelada?) - Android, streaming, cpu, aac, audiotrack

Estou escrevendo um aplicativo de streaming de áudio que armazena em bufferPedaços de arquivo AAC, decodifica esses pedaços em matrizes de bytes do PCM e grava os dados de áudio do PCM no AudioTrack. Ocasionalmente, recebo o seguinte erro quando tento pular para uma música diferente, chamo AudioTrack.pause () ou AudioTrack.flush ():

obtainbuffer timed out -- is cpu pegged?

E então o que acontece é que uma fração de segundo deo áudio continua sendo reproduzido. Eu tentei ler um conjunto de arquivos AAC do sdcard e obtive o mesmo resultado. O comportamento que estou esperando é que o áudio pare imediatamente. Alguém sabe por que isso acontece? Gostaria de saber se é um problema de latência de áudio com o Android 2.3.

editar: o áudio AAC contém um cabeçalho ADTS. O cabeçalho + a carga útil do áudio constituem o que estou chamando de ADTSFrame. Eles são alimentados ao decodificador um quadro por vez. A matriz de bytes PCM resultante que é retornada da camada C para a camada Java é alimentada pela API AudioTrack do Android.

editar 2: eu tenho meu nexus 7 (sistema operacional Android 4.1) hoje. Carregou o mesmo aplicativo no dispositivo. Não tive nenhum desses problemas.

Respostas:

0 para resposta № 1

é altamente possível sobre a taxa de amostragem. um de seus dispositivos pode suportar a taxa de amostragem usada, enquanto o outro não. Por favor verifique isto. Eu tive o mesmo problema, era sobre taxa de amostragem. use 44.1kHz (44100) e tente novamente por favor.