Decodificación de Mp3 a PCM de JLayer Mono

Actualmente estoy trabajando en la decodificación de mp3 con javalayer 1.1.

Así que quiero recibir los datos PCM sin procesar de mis 44100 Hz, 16 bits, Mp3s. Funciona perfectamente bien con mp3 estéreo, pero tengo problemas extraños con mp3 mono.

Aquí un código.

InputStream data = c.getResources().openRawResource(resId);
Bitstream bitstream = new Bitstream(data);
Decoder decoder = new Decoder();
while(thereIsData) {
  Head frameHeader = bitstream.readFrame();
  SampleBuffer buffer = (SampleBuffer) decoder.decodeFrame(frameHeader, bitstream);
  short[] pcmBuffer = buffer.getBuffer();

  // Do some stuff with pcm (For example creating a wav file )

  bitstream.closeFrame();
}

buffer.getChannelCount () == 1, buffer.getFrequency () == 41000

Entonces ... El problema es. Si creo un WaveFile de 16 bits, canal mono de 44100 Hz y lo puse en Audacity para ver las ondas. El sonido es periódicamente 0, como: (200 ms de sonido) ... (200 ms NoSound) ... (200 ms de sonido) ... (200 ms NoSound)

Esto también se aplica a los datos de pcm antes de escribir en .wav ... (Yeahi syso todo eso)

Así que uno puede pensar, bueno, tiene que haber cero cuadros o algo. allí ... Así que corté todos los cuadros con solo 0 valores. Esto da como resultado roturas de cero ligeramente más cortas en el archivo wav. Significa para mí, debe haber marcos de cero parcial. Así que corté TODOS los valores cero de los datos de pcm ... Y por extraño que parezca, esto funcionó. El archivo suena bien.

Pero esta no puede ser la solución. Todavía no sé por qué hay estos valores de cero falso. Y necesito silencio en mi mp3 también.

Apreciaría cada sugerencia de explicación. Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta