From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Alexander E. Patrakov" Subject: Re: PulseAudio and SNDRV_PCM_INFO_BATCH Date: Mon, 22 Jun 2015 17:10:58 +0500 Message-ID: <5587FB52.9070401@gmail.com> References: <557E86DD.8020709@metafoo.de> <557EBEAA.70004@metafoo.de> <557EDE22.7080808@metafoo.de> <5587AE77.1020709@metafoo.de> <5587D845.4040309@ladisch.de> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-la0-f51.google.com (mail-la0-f51.google.com [209.85.215.51]) by alsa0.perex.cz (Postfix) with ESMTP id 6B7E3261B19 for ; Mon, 22 Jun 2015 14:09:11 +0200 (CEST) Received: by lagx9 with SMTP id x9so20448224lag.1 for ; Mon, 22 Jun 2015 05:09:09 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Raymond Yau , Clemens Ladisch Cc: ALSA Development Mailing List , Lars-Peter Clausen , Takashi Iwai , Tanu Kaskinen , Arun Raghavan , David Henningsson List-Id: alsa-devel@alsa-project.org 22.06.2015 16:54, Raymond Yau wrote: >>>> Are all soc audio driver use cyclic dma ? >>> >>> I'm not sure I understand the question. All audio drivers use some >>> kind of cyclic DMA. >> >> The ALSA API requires the driver to provide a cyclic sample buffer (or >> something that behaves like one). >> >> However, not all hardware works this way. USB and FireWire require the >> driver to continually queue new packets, whose size and timing are >> determined by the bus clock and are not directly related to the ALSA >> ring buffer. These drivers use double buffering; the actual DMA happens >> from those packets, not from the ring buffer. >> > > If those queued packets/urb cannot be rewind, snd_pcm_rewindable should > return zero for those driver Not really. As I understand it, the kernel periodically converts a piece of the ring buffer (located in RAM) into an URB, and it gets sent through the USB bus. Parts of the buffer that are not yet converted to URB are perfectly rewindable. In other words, for USB devices, the kernel already implements the "low-latency background thread that makes unrewindable devices rewindable" idea that I discussed (as a strawman proposal) here for userspace: http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/080868.html -- Alexander E. Patrakov