plughw behaviour not consistent with hw

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello list,

I'm working on an application that requires a period time of 10ms.  The
hardware at the other end of the bus is a ulaw codec running at 8kHz.
 The application runs at 16kHz S16_LE and I was hoping to use the
plughw device to do sample rate conversion and ulaw encode/decode.
 This way the application doesn't need to change to accommodate this
ulaw codec.  However, it's not working and I don't know how to go about
debugging.  I'm hoping I can get some pointers here.

The problem is best illustrated by this output, first using plughw:
alsa_read: 10
alsa_read: 20
alsa_read: 0
alsa_read: 20
alsa_read: 0
alsa_read: 20
alsa_read: 0
alsa_read: 20
alsa_read: 0
alsa_read: 20

It would appear that plughw gives the correct period time on the first
call, but then subsequently buffers 2 periods before returning.  
Using hw with matching sample rate, sample format, and number of
samples:
alsa_read: 10
alsa_read: 10
alsa_read: 10
alsa_read: 10
alsa_read: 10
alsa_r
ead: 10
alsa_read: 10
alsa_read: 10
alsa_read: 10
alsa_read: 10

This code snippet generated the above output:

for (i = 0; i < 10; ++i) {
        gettimeofday(&time1, NULL);
	err = snd_pcm_readi (capture_handle, buf, NSMP); 
        if (err != NSMP) {
                printf ("read from audio interface failed "
                        " (%s)\n", snd_strerror (err));
                exit (1);
        }
        gettimeofday(&time2, NULL);
        printf("alsa_read: %d\n", getTimeDiff(time1, time2));
}

I have tried using the patch from here (without the environment
variable switch):

http://mailman.alsa-project.org/pipermail/alsa-devel/2008-October/01170
3.html

to print out the configuration of plughw's plugin chain, but it
generates no output.  I've verified the md5sum of the library after
compilation and it matches the one I compiled.  And I ran ldconfig
after replacing libasound.so.  So I don't know what's going on there.
 I definitely call snd_pcm_hw_params() when setting up the capture
device.  This is using alsa-lib-1.0.25.

Does anyone know why plughw might be acting the way it is and how I can
get it to deliver 10ms periods?  Equally appreciated would be any tips
on how to debug this problem.

Thanks,
Stef

_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel




[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux