All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Cc: alsa-devel@alsa-project.org
Subject: Re: [PATCH] ALSA: sb: remove needless evaluation in implementation for copy callback
Date: Tue, 23 May 2017 15:49:59 +0200	[thread overview]
Message-ID: <s5h8tlnznqw.wl-tiwai@suse.de> (raw)
In-Reply-To: <20170523134042.1056-1-o-takashi@sakamocchi.jp>

On Tue, 23 May 2017 15:40:42 +0200,
Takashi Sakamoto wrote:
> 
> In design of ALSA pcm core, 'struct snd_pcm_ops.copy' is expected to
> copy PCM frames, according to frame alignment on intermediate buffer for
> userspace and dedicated buffer for data transmission. In this callback,
> value of 'channel' argument depends on the frame alignment, which drivers
> registers to runtime of PCM substream. When target devices can handle
> non-interleaved buffer, this value has positive value, otherwise negative.
> 
> ALSA driver for PCM component of EMU8000 chip is programmed with local
> macro to switch the frame alignment. The 'copy' operation in
> non-interleaved side has evaluation of the 'channel' argument (actually
> it's 'voice' argument). This is useless.
> 
> This commit remove the evaluation.
> 
> Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>

Passing -1 to the channel was valid even for non-interleaved access.
It was meant to apply to all channels.

The call with channel = -1 itself might have been dropped meanwhile,
so removing it may be OK now.  But the description is confusing as if
it were incorrectly implemented.


Takashi


> ---
>  sound/isa/sb/emu8000_pcm.c | 28 ++++------------------------
>  1 file changed, 4 insertions(+), 24 deletions(-)
> 
> diff --git a/sound/isa/sb/emu8000_pcm.c b/sound/isa/sb/emu8000_pcm.c
> index 32f234f494e5..bab796d75dbd 100644
> --- a/sound/isa/sb/emu8000_pcm.c
> +++ b/sound/isa/sb/emu8000_pcm.c
> @@ -450,20 +450,8 @@ static int emu8k_pcm_copy(struct snd_pcm_substream *subs,
>  	struct snd_emu8000 *emu = rec->emu;
>  
>  	snd_emu8000_write_wait(emu, 1);
> -	if (voice == -1) {
> -		unsigned short *buf = src;
> -		int i, err;
> -		count /= rec->voices;
> -		for (i = 0; i < rec->voices; i++) {
> -			err = emu8k_transfer_block(emu, pos + rec->loop_start[i], buf, count);
> -			if (err < 0)
> -				return err;
> -			buf += count;
> -		}
> -		return 0;
> -	} else {
> -		return emu8k_transfer_block(emu, pos + rec->loop_start[voice], src, count);
> -	}
> +	return emu8k_transfer_block(emu, pos + rec->loop_start[voice], src,
> +				    count);
>  }
>  
>  /* make a channel block silence */
> @@ -487,17 +475,9 @@ static int emu8k_pcm_silence(struct snd_pcm_substream *subs,
>  	struct snd_emu8000 *emu = rec->emu;
>  
>  	snd_emu8000_write_wait(emu, 1);
> -	if (voice == -1 && rec->voices == 1)
> +	if (rec->voices == 1)
>  		voice = 0;
> -	if (voice == -1) {
> -		int err;
> -		err = emu8k_silence_block(emu, pos + rec->loop_start[0], count / 2);
> -		if (err < 0)
> -			return err;
> -		return emu8k_silence_block(emu, pos + rec->loop_start[1], count / 2);
> -	} else {
> -		return emu8k_silence_block(emu, pos + rec->loop_start[voice], count);
> -	}
> +	return emu8k_silence_block(emu, pos + rec->loop_start[voice], count);
>  }
>  
>  #else /* interleave */
> -- 
> 2.11.0
> 

  reply	other threads:[~2017-05-23 13:50 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-23 13:40 [PATCH] ALSA: sb: remove needless evaluation in implementation for copy callback Takashi Sakamoto
2017-05-23 13:49 ` Takashi Iwai [this message]
2017-05-24 15:01   ` Takashi Sakamoto
2017-05-24 16:28     ` Takashi Iwai
2017-05-25 16:50       ` 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=s5h8tlnznqw.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=o-takashi@sakamocchi.jp \
    /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.