All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Mack <zonque@gmail.com>
To: Andreas Koch <andreas@akdesigninc.com>
Cc: Jussi Laako <jussi@sonarnerd.net>, Takashi Iwai <tiwai@suse.de>,
	clemens@ladisch.de, alsa-devel@alsa-project.org,
	demian@auraliti.com, ray@auraliti.com
Subject: Support for DSD streams (was: Re: [PATCH 0/3] ALSA: snd-usb: Some small fixes to make Playback Design products work)
Date: Sat, 23 Mar 2013 12:50:46 +0100	[thread overview]
Message-ID: <514D9716.4000801@gmail.com> (raw)
In-Reply-To: <7.0.0.16.2.20130322082602.0605cbc0@akdesigninc.com>

Hi Andreas,

On 22.03.2013 17:05, Andreas Koch wrote:
> At 01:11 AM 3/22/2013, Daniel Mack wrote:
>> Hi Jussi,
>> Hi Andreas,
>>
>> On 21.03.2013 22:21, Jussi Laako wrote:
>>> On 03/18/2013 03:49 PM, Daniel Mack wrote:
>>>> Yes. If at all, we should add a SND_PCM_FORMAT_DSD, and a quirk for that
>>>> device. But given that there is no application for DSD in userspace
>>>> either, we probably don't need to care.
>>>
>>> Yes there is? At least my application. And I'd be happy to support any
>>> custom format created for the purpose... :)
>>
>> Ah, interesting. So what *are* you using right now for your transport in
>> userspace? Is your application abusing standard PCM interfaces that are
>> 'known' to be in fact DSD? How do other DACs expose their interfaces in
>> the Linux world, and which ones did you test your application with?
>>
>> If there's actual need for a new SND_PCM_FORMAT, it would be easy to
>> patch it through all the layers down to userspace.
>>
>>> I would propose to create custom 8-bit sample formats for DSD purposes,
>>> similar to the ASIO formats. Practically two main ones, byte with oldest
>>> bit in MSB and byte with oldest bit in LSB. And maybe the "DSD-wide" one
>>> which is 8-bit DSD sample.
>>
>> Andreas, which modes does the MPD-3 accept exactly on its two 'raw data'
>> interfaces? The only hint I have is that one of it is 8-bit and the
>> other is 16-bit, but given the lack of a proper test setup for this
>> format, I can't currently test anything.
> 
> The 8-bit raw format is for 2.8MHz DSD and the 16-bit format is for 
> 5.6MHz DSD. In both cases the driver sets the sample rate to 352.8kHz 
> on the DAC, but then sends either 8 bits or 16 bits depending on the 
> DSD rate. 

And prior to sending either 8 bits or 16 bits, currently the correct USB
alternate interface has to be set, right?

> Since 11.2MHz DSD is already on the horizon we may have to 
> change this to a single 8-bit raw interface and then vary the 
> underlying USB transfer sample rate between 1x, 2x, 4x 352.8kHz - 

Yes, especially given that if there's no common standard across
different devices, either the drivers or the applications have to
implement special handling code for this, and know which interface
supports what.

So for the ALSA layer, we should probably have a generic
SND_PCM_FORMAT_DSD and then rely on the sample rate setting mechanisms
to select the right DSD mode. Other solutions, like having a different
SND_PCM_FORMAT_DSD_{2_8,5_6,11_2}_MHZ would be hairy to implement, as
some devices need to get a sample rate update request, while others
don't etc ...

> that would be more logical and straight forward for the hardware 
> implementation. This is only supported through my own driver for the 
> Windows platform which uses the standard ASIO interface that supports 
> DSD at those rates. Since the Mac OS only supports PCM streams and 
> nothing else I brought together a bunch of DAC manufacturers and 
> playback software developers to standardize a method to "cannibalize" 
> the PCM stream for DSD data. The method is described in the attached 
> and is now supported by most manufacturers.

Very interesting read. For ALSA though, it's no problem to support that
in all layers and make the drivers tell applications about it. We just
have to decide for a sane way :)

> This also has been implemented on a few Linux platforms (Auraliti for 
> instance). Even though the DoP standard works really well so far, it 
> is a "bandaid" and should only be used if there is no other choice. 

Yes, understood. The thing is just that we shouldn't break exising
solutions that already rely on this "bandaid".



Daniel

  parent reply	other threads:[~2013-03-23 11:50 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-17 12:07 [PATCH 0/3] ALSA: snd-usb: Some small fixes to make Playback Design products work Daniel Mack
2013-03-17 12:07 ` [PATCH 1/3] ALSA: snd-usb: handle the bmFormats field as unsigned int Daniel Mack
2013-03-17 12:07 ` [PATCH 2/3] ALSA: snd-usb: handle raw data format of UAC2 devices Daniel Mack
2013-03-17 12:07 ` [PATCH 3/3] ALSA: snd-usb: add delay quirk for "Playback Design" products Daniel Mack
2013-03-18  9:07 ` [PATCH 0/3] ALSA: snd-usb: Some small fixes to make Playback Design products work Takashi Iwai
2013-03-18  9:15   ` Daniel Mack
2013-03-18  9:30     ` Takashi Iwai
2013-03-18 13:49       ` Daniel Mack
2013-03-19  2:51         ` Gabriel M. Beddingfield
2013-03-19  6:48           ` Takashi Iwai
2013-03-21 21:21         ` Jussi Laako
2013-03-22  8:11           ` Daniel Mack
2013-03-22 19:37             ` Jussi Laako
2013-03-23 11:31               ` Support for DSD streams (was: Re: [PATCH 0/3] ALSA: snd-usb: Some small fixes to make Playback Design products work) Daniel Mack
2013-03-23 19:53                 ` Support for DSD streams Jussi Laako
     [not found]             ` <7.0.0.16.2.20130322082602.0605cbc0@akdesigninc.com>
2013-03-23 11:50               ` Daniel Mack [this message]
     [not found]                 ` <7.0.0.16.2.20130323101939.0605d748@akdesigninc.com>
2013-03-23 18:43                   ` Daniel Mack
     [not found]                     ` <7.0.0.16.2.20130323182911.0605db20@akdesigninc.com>
2013-03-27  9:53                       ` Daniel Mack
2013-03-23 20:01               ` [PATCH 0/3] ALSA: snd-usb: Some small fixes to make Playback Design products work Jussi Laako
     [not found]                 ` <7.0.0.16.2.20130323183543.0605ddb0@akdesigninc.com>
2013-03-24 10:50                   ` Jussi Laako
2013-03-26 19:34                     ` Daniel Mack
2013-03-28  0:10                       ` Jussi Laako
2013-03-26 19:58                   ` Daniel Mack
     [not found]                     ` <7.0.0.16.2.20130326224120.13b063e0@akdesigninc.com>
2013-03-27  9:45                       ` Clemens Ladisch
2013-03-27  9:48                       ` Daniel Mack
     [not found]                         ` <7.0.0.16.2.20130327080219.13b06900@akdesigninc.com>
2013-03-27 18:22                           ` Daniel Mack
2013-03-27 23:48                           ` Jussi Laako
2013-03-28  0:00                     ` Jussi Laako
2013-03-27 19:02               ` Daniel Mack
     [not found]           ` <7.0.0.16.2.20130321181551.0605bc60@akdesigninc.com>
2013-03-22 10:15             ` Jussi Laako
2013-03-22 10:23               ` Takashi Iwai
2013-03-22 11:08                 ` Jussi Laako
2013-03-19  2:37   ` Gabriel M. Beddingfield
2013-03-19  6:49     ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=514D9716.4000801@gmail.com \
    --to=zonque@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=andreas@akdesigninc.com \
    --cc=clemens@ladisch.de \
    --cc=demian@auraliti.com \
    --cc=jussi@sonarnerd.net \
    --cc=ray@auraliti.com \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.