2010-09-28 22 views
3

J'ai écrit un petit programme qui teste la bibliothèque ALSA sur une carte Linux embarquée. Le programme configure ALSA, joue un seul son et attend 1 minute avant de quitter.ALSA: Looping Sound Problème

Voici ce que j'observe: après la lecture du son, il y a une pause silencieuse et le son est à nouveau lu. Je suis 100% positif que le programme lui-même ne joue pas à nouveau. Pour approfondir la question, j'ai fait une autre expérience: avec un jeu sur le même plateau, j'ai joué un son différent. Cela a bien fonctionné. Ensuite, j'ai exécuté à nouveau mon programme Hello World. Cette fois en plus du son périodique, j'ai entendu d'autres restes du son joué par aplay.

Je suspecte qu'un tampon dans alsa-lib ou le pilote audio n'est pas effacé. Ou que je n'ai peut-être pas configuré correctement un paramètre logiciel. snd_pcm_dump recrache les informations suivantes:

stream  : PLAYBACK 
    access  : RW_INTERLEAVED 
    format  : S16_LE 
    subformat : STD 
    channels  : 1 
    rate   : 8000 
    exact rate : 8000 (8000/1) 
    msbits  : 16 
    buffer_size : 32768 
    period_size : 2048 
    period_time : 256000 
    tstamp_mode : NONE 
    period_step : 1 
    avail_min : 2048 
    period_event : 0 
    start_threshold : 1 
    stop_threshold : 32768 
    silence_threshold: 0 
    silence_size : 0 
    boundary  : 1073741824 

Je dois aussi mentionner que je ne vois rien de tout cela est que je lance sous Ubuntu.

+3

Mon expérience avec ALSA est une douleur due à des bugs dans son code. Je voudrais d'abord mettre à jour les libs à la dernière version, puis réessayez. –

+1

Mon expérience avec ALSA est la douleur – dreamlax

Répondre

1

J'ai rencontré des problèmes similaires sans utiliser alsa-lib. Mais avec alsa i et ubuntu ts soi. J'ai trouvé laborieusement à passer par les pilotes et les tester pour être la meilleure option aussi en utilisant quelque chose comme speaker-test -c2 -twav pour être d'une grande aide En ce qui concerne votre mise en œuvre de salsa, je ne vois rien à regarder. Mais j'ai peur sans plus d'info je ne peux pas être plus d'aide.