Non-interleaved multi-channel access, what's required? Oxygen driver...

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

 



Hi all,

   Hope this is the right place for this. I'm working on an app that requires non-interleaved access to 6 output channels, but alas the driver for the card that I'm using (Asus Xonar D1, AV100 / C-Media Oxygen chipset) doesn't support the noninterleaved access type, giving "incorrect access type" in response to this command:

if ((err = snd_pcm_hw_params_set_access(playback_handle, hw_params, SND_PCM_ACCESS_RW_NONINTERLEAVED)) < 0)
{
    fprintf(stderr, "cannot set access type (%s)\n", snd_strerror (err));
    return false;
}

   In a bout of optimism, I simply added the SNDRV_PCM_INFO_NONINTERLEAVED flag to the .info part of the snd_pcm_hardware struct that's defined for the card in oxygen_pcm.c and recompiled the kernel, not expecting it to really work.

   To my surprise, it does work! But, only for the "default" card and with two channels. If I try to use any of the multi-channel devices (e.g. front, surround51) then each channel appears to alternate round the buffers for all the channels.

   So... how do I find out if this is a limitation of the hardware? Can I do anything to the multi-channel part of the driver to make non-interleaved access work correctly? Or is there some clever use of the .asoundrc that can make it do what I need to?

Many thanks in advance for any help,
--
Oliver Stephenson
http://www.funkster.org/


_______________________________________
Sent using funkster.org webmail service




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

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

  Powered by Linux