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

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

 



On Tue, Jun 16, 2009 at 10:27 PM, Laurent
Pinchart<laurent.pinchart@xxxxxxxxx> wrote:
> Hi Bryan,
>
> On Tuesday 16 June 2009 16:17:28 Bryan Wu wrote:
>> On Tue, Jun 16, 2009 at 10:04 PM, Laurent Pinchart <
>>
>> laurent.pinchart@xxxxxxxxx> wrote:
>> > Hi Bryan,
>> >
>> > 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:
>> > > > Hi,
>> > > >
>> > > > On Tuesday 16 June 2009 07:23:31 Greg Kroah-Hartman wrote:
>> > > >> From: Bryan Wu <cooloney@xxxxxxxxxx>
>> > > >>
>> > > >> 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 ?
>>
>> We just get the audio sound card capability on the gadget device and let
>> host PC know that capability via USB Audio Class Descriptor.
>> So the host PC application or ALSA utils will convert any other audio data
>> format to the one which is supported by the gadget device.
>>
>> We don't need to let gadget device user space application do the
>> conversion.
>
> I'm afraid that won't work. The host and device clocks are not synchronized,
> so you'll experience buffer underruns or overruns.
>

That is OK on our Blackfin board. Since I don't have any boards, I'm
not sure about your problem. As soon as we get your code, we can do
some test on Blackfin board.

Thanks
-Bryan
--
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