All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jaroslav Kysela <perex@perex.cz>
To: "Wischer, Timo (ADITG/ESB)" <twischer@de.adit-jv.com>
Cc: Takashi Iwai <tiwai@suse.de>,
	ALSA development <alsa-devel@alsa-project.org>
Subject: Re: [PATCH - JACK plugin 4/4] jack: Support snd_pcm_drain()
Date: Fri, 16 Mar 2018 16:11:15 +0100	[thread overview]
Message-ID: <07334145-d1f1-54b4-84d0-eacbea0a3987@perex.cz> (raw)
In-Reply-To: <B0FB33DC1499054591F62C0EF1E013D7684FDEA1@HI2EXCH01.adit-jv.com>

Dne 16.3.2018 v 15:44 Wischer, Timo (ADITG/ESB) napsal(a):
> Hello Jaroslav
> 
>> Do you handle the non-blocking mode correctly here? It seems that this
>> mode is completely ignored.
> 
> You are right. The non-blocking mode flag will be ignored here.
> But this case is also not covered by the IO plug API.
> snd_pcm_drop() is called immediately after the IO plugin drain callback returns [1].
> The return value of the drain callback will be ignored.

Yes, it seems like a flaw in the ioplug core code.

> Therefore the IO plug API has to be changed to support this.
> But I do not really see a use case for it.

But it changes the PCM API behaviour, so some apps might have trouble
with it, because it might cause the unexpected task blocking. The
correct behaviour is return with -EAGAIN and let application wait for
the end-of-data using the file descriptor event (or build-in
snd_pcm_wait() fcn which implements the poll() loop - see
snd_pcm_wait_nocheck()).

> If you want to drain you also want to wait/block your application until all frames were played.

But it does not imply that the drain should block. The app just notify
the device that the rest of the data should be played.

> If you think it is required to change anything in this patch
> we have to clarify when drop should be called and when not.
> What is the sequence which the user would expect?
> Does the user need to call drop after drain is done or would it be called by snd_pcm_wait/snd_pcm_drain when it is not returning -EAGAIN?
> 
> [1] http://git.alsa-project.org/?p=alsa-lib.git;a=blob;f=src/pcm/pcm_ioplug.c;h=8c0ed4836365afb53c0cbce796a5d39c2d05a3d7;hb=07a17bd5a50289e2fdb2714a4e39f38f41811558#l504
> 
> Best regards
> 
> Timo Wischer
> 
> Advanced Driver Information Technology GmbH
> Engineering Software Base (ADITG/ESB)
> Robert-Bosch-Str. 200
> 31139 Hildesheim
> Germany
> 
> Tel. +49 5121 49 6938
> Fax +49 5121 49 6999
> twischer@de.adit-jv.com
> 
> ADIT is a joint venture company of Robert Bosch GmbH/Robert Bosch Car Multimedia GmbH and DENSO Corporation
> Sitz: Hildesheim, Registergericht: Amtsgericht Hildesheim HRB 3438
> Geschäftsführung: Wilhelm Grabow, Ken Yaguchi
> 
> ________________________________________
> From: Jaroslav Kysela [perex@perex.cz]
> Sent: Thursday, March 01, 2018 2:42 PM
> To: Wischer, Timo (ADITG/ESB)
> Cc: ALSA development; Takashi Iwai
> Subject: Re: [alsa-devel] [PATCH - JACK plugin 4/4] jack: Support snd_pcm_drain()
> 
> Dne 1.3.2018 v 14:14 twischer@de.adit-jv.com napsal(a):
>> From: Timo Wischer <twischer@de.adit-jv.com>
>>
>> Block on drain till available samples played
> 
> Do you handle the non-blocking mode correctly here? It seems that this
> mode is completely ignored.
> 
>                                         Jaroslav
> 
> --
> Jaroslav Kysela <perex@perex.cz>
> Linux Sound Maintainer; ALSA Project; Red Hat, Inc.
> 


-- 
Jaroslav Kysela <perex@perex.cz>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

  reply	other threads:[~2018-03-16 15:11 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-24 11:53 [PATCH - JACK PCM plugin] jack: Do not Xrun the ALSA buffer twischer
2018-02-26  8:14 ` Wischer, Timo (ADITG/ESB)
2018-02-27  8:48   ` Takashi Iwai
2018-03-01 13:14     ` [PATCH - JACK PCM plugin] Xrun handling twischer
2018-03-01 13:14       ` [PATCH - JACK plugin 1/4] jack: Do not Xrun the ALSA buffer twischer
2018-03-01 15:24         ` Takashi Iwai
2018-03-02 16:21           ` twischer
2018-03-02 16:21             ` [PATCH - PCM 2/3] pcm: ioplug: Provide hw_avail helper function for plugins twischer
2018-03-02 16:21             ` [PATCH - PCM 3/3] pcm: Provide areas_copy function which handles buffer wrap around twischer
2018-03-02 16:21             ` [PATCH - JACK 1/1] jack: Do not Xrun the ALSA buffer twischer
2018-03-13  8:34               ` [PATCH - JACK plugin] " twischer
2018-03-13  8:34                 ` [PATCH - PCM 1/2] pcm: ioplug: Provide hw_avail helper function for plugins twischer
2018-03-13  8:34                 ` [PATCH - PCM 2/2] pcm: Provide areas_copy function which handles buffer wrap around twischer
2018-03-13  8:34                 ` [PATCH - JACK 1/1] jack: Do not Xrun the ALSA buffer twischer
2018-03-13 21:20                 ` [PATCH - JACK plugin] " Takashi Iwai
2018-03-15 15:09                   ` Wischer, Timo (ADITG/ESB)
2018-03-15 15:13                     ` Takashi Iwai
2018-03-01 13:14       ` [PATCH - JACK plugin 2/4] jack: Use internal snd_pcm_state to reduce amount of additional variables twischer
2018-03-01 15:26         ` Takashi Iwai
2018-03-15 12:56           ` [PATCH - JACK plugin] " twischer
2018-03-15 12:56             ` [PATCH - JACK 1/1] " twischer
2018-03-15 13:14               ` Takashi Iwai
2018-03-15 14:05                 ` Wischer, Timo (ADITG/ESB)
2018-03-15 14:20                   ` Takashi Iwai
2018-03-15 15:07                     ` Wischer, Timo (ADITG/ESB)
2018-03-15 15:49                       ` Takashi Iwai
2018-03-16 10:02                         ` [PATCH - IOPLUG] Update prepare and draining state correctly twischer
2018-03-16 10:02                           ` [PATCH - IOPLUG 1/1] pcm: ioplug: update Prepare " twischer
2018-03-16 10:08                             ` Takashi Iwai
2018-03-16 10:20                               ` [PATCH - IOPLUG 1/1] pcm: ioplug: update prepare " twischer
2018-03-16 10:30                                 ` Takashi Iwai
2018-03-01 13:14       ` [PATCH - JACK plugin 3/4] jack: Report Xruns to user application twischer
2018-03-16 14:23         ` twischer
2018-03-16 14:23           ` [PATCH - JACK 1/1] " twischer
2018-03-16 14:41             ` Takashi Iwai
2018-03-16 14:47               ` Wischer, Timo (ADITG/ESB)
2018-03-16 14:57                 ` Takashi Iwai
2018-03-01 13:14       ` [PATCH - JACK plugin 4/4] jack: Support snd_pcm_drain() twischer
2018-03-01 13:41         ` Jaroslav Kysela
2018-03-16 14:44           ` Wischer, Timo (ADITG/ESB)
2018-03-16 15:11             ` Jaroslav Kysela [this message]
2018-03-16 15:52               ` Wischer, Timo (ADITG/ESB)
2018-03-21 16:22                 ` Wischer, Timo (ADITG/ESB)
2018-03-21 16:34                   ` Takashi Iwai
2018-03-21 16:47                     ` Wischer, Timo (ADITG/ESB)
2018-03-21 16:52                       ` Takashi Iwai
2018-03-21 17:02                         ` Wischer, Timo (ADITG/ESB)
2018-03-21 17:07                           ` Takashi Iwai
2018-03-01 15:19       ` [PATCH - JACK PCM plugin] Xrun handling 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=07334145-d1f1-54b4-84d0-eacbea0a3987@perex.cz \
    --to=perex@perex.cz \
    --cc=alsa-devel@alsa-project.org \
    --cc=tiwai@suse.de \
    --cc=twischer@de.adit-jv.com \
    /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.