Re: [PATCH 096/143] USB: gadget: add USB Audio Gadget driver

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

 



Hi Mike,

On Tuesday 16 June 2009 16:12:06 Mike Frysinger wrote:
> On Tuesday 16 June 2009 10:04:36 Laurent Pinchart wrote:
> > On Tuesday 16 June 2009 15:23:07 Bryan Wu wrote:
> > > On Tue, Jun 16, 2009 at 9:15 PM, Laurent
> > >
> > > Pinchart<laurent.pinchart@xxxxxxxxx> wrote:
> > > > On Tuesday 16 June 2009 07:23:31 Greg Kroah-Hartman wrote:
> > > >> Funtions added:
> > > >>  - setup all the USB audio class device descriptors
> > > >>  - handle class specific setup request
> > > >>  - receive data from USB host by ISO transfer
> > > >>  - play audio data by ALSA sound card
> > > >>  - open and setup playback PCM interface
> > > >>  - set default playback PCM parameters
> > > >>  - provide playback functions for USB audio driver
> > > >>  - provide PCM parameters set/get functions
> > > >>
> > > >> Test on:
> > > >>  - Host: Ubuntu 8.10, kernel 2.6.27
> > > >>  - Gadget: EZKIT-BF548 with ASoC AD1980 codec
> > > >>
> > > >> Todo:
> > > >>  - add real Mute control code
> > > >>  - add real Volume control code
> > > >>  - maybe find another way to replace dynamic buffer handling
> > > >>    with static buffer allocation
> > > >>  - test on Windows system
> > > >>  - provide control interface to handle mute/volume control
> > > >>  - provide capture interface in the future
> > > >>  - test on BF527, other USB device controler and other audio codec
> > > >
> > > > I've tested the driver on a TI DM355 platform and it doesn't work
> > > > correctly. I can get audio data to stream to the device, but buffer
> > > > underruns/overruns kill the experience.
> > > >
> > > > I've written another USB audio class gadget driver that doesn't
> > > > interface to the ALSA device directly but exposes an ALSA interface
> > > > to userspace. It requires a userspace application to transfer audio
> > > > data between the real audio device and this 'fake' USB audio device.
> > >
> > > I consider that method before. But it will ask the gadget device to do
> > > some audio data format conversion.
> > > for example, if audio data from host PC is 48000 sample rate, it should
> > > be converted to 441000 sample rate to playback when the gadget device
> > > only supports 441000.
> >
> > I suppose you mean 44100.
> >
> > Conversion should be handled by the userspace application on the device
> > side, not the gadget driver. Anyway, sample rate matching needs to be
> > performed on the device side unless you can lock the audio clock to the
> > SOF clock (synchronous endpoint) or to the data stream clock (adaptive
> > endpoint).
> >
> > > So the conversion will be done at host PC side instead of gadget device
> > > with my driver.
> >
> > How so ?
> >
> > Is the driver really ready to be merged ?
>
> i think the driver is mature enough for other people to start hacking on
> it.

It's a proof of concept. I hardly call that mature.

> and this is the classic "merge or let it sit out" issue.  having it in
> mainline gets more people coordinating on the driver.

Ok, but be warned that I'll submit a patch in a few days with a mostly 
completely rewritten USB audio class driver :-)

Jokes aside, how should that be handled ? The two drivers use a completely 
different model to access the sound device, and they will export symbols that 
will likely clash.

/me crosses his fingers to get an answer different than "first-come, first-
served".

I believe that accessing the audio device directly from the UAC driver is a 
bad idea. The driver should instead expose an interface to userspace 
applications to sink/source audio data. I'll post a driver that exposes an 
ALSA interface, but discussions on the alsa-devel mailing list (see 
http://mailman.alsa-project.org/pipermail/alsa-devel/2009-May/017354.html) 
showed that an alternative interface might be better.

Best regards,

Laurent Pinchart


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux