Tem certeza de que está recebendo dados PCM válidos? Que tipo de PCM você está recebendo?
PCM básico é usado em CDs de áudio e em arquivos WAV copiados de CDs; deve ser jogável por praticamente qualquer coisa. Especificamente, é de 16 bits (por amostra), 44,1 kHz (taxa de amostragem), estéreo (2 canais). Jogar este tipo de PCM é tão simples quanto cat file.pcm > /dev/audio
(ou /dev/dsp
ou outro dispositivo de áudio apropriado).
A homepage da libmad indica que a libmad pode usar como padrão a saída do PCM de 24 bits, e o software do player pode ficar confuso por ele se espera o PCM padrão de 16 bits. Se você ainda não o fez, verifique o uso de libmad do seu programa com o madlld
(tutorial de API de baixo nível do libmad ) para garantir que você está obtendo a saída correta da biblioteca.
Como os dados do PCM não incluem cabeçalhos como um arquivo WAV, talvez seja necessário especificar o formato PCM para que um programa carregue o arquivo corretamente. O Audacity deve ser capaz de lidar com qualquer formato PCM padrão.
Também é possível que você esteja recebendo uma saída PCM inválida de libmad
, devido a um bug na biblioteca ou devido ao uso indevido da biblioteca pelo seu código.