All of lore.kernel.org
 help / color / mirror / Atom feed
From: Clemens Ladisch <clemens@ladisch.de>
To: o-takashi@sakamocchi.jp
Cc: tiwai@suse.de, alsa-devel@alsa-project.org,
	linux1394-devel@lists.sourceforge.net, ffado-devel@lists.sf.net,
	perex@perex.cz
Subject: Re: [PATCH 6/8] add PCM interface
Date: Mon, 03 Jun 2013 13:18:50 +0200	[thread overview]
Message-ID: <51AC7B9A.7040408@ladisch.de> (raw)
In-Reply-To: <1370102158-24389-7-git-send-email-o-takashi@sakamocchi.jp>

o-takashi@sakamocchi.jp wrote:
> + * Additionally, according to AudioFire Owner's Manual Version 2.2,
> + * the number of PCM channels for digital input has more restriction
> + *  depending on which digital interface is selected.
> + *  - S/PDIF coaxial and optical	: use input 1-2
> + *  - ADAT optical with 32.0-48.0 kHz	: use input 1-8
> + *  - ADAT optical with 88.2-96.0 kHz	: use input 1-4 (S/MUX format)
> + * If these restriction is applied, the number of channels in stream is decided
> + * according to above modes.
> + *
> + * Currently this module doesn't have rules for the latter.

Does the number of channels in the AMDTP stream change, or are those
channel still there, but filled with zeros?

> +pcm_init_hw_params(struct snd_efw *efw,
> +			struct snd_pcm_substream *substream)

> +		.info = SNDRV_PCM_INFO_MMAP |
> +			SNDRV_PCM_INFO_BATCH |
> +			SNDRV_PCM_INFO_INTERLEAVED |
> +			SNDRV_PCM_INFO_SYNC_START |
> +			SNDRV_PCM_INFO_FIFO_IN_FRAMES |
> +			/* for Open Sound System compatibility */
> +			SNDRV_PCM_INFO_MMAP_VALID |
> +			SNDRV_PCM_INFO_BLOCK_TRANSFER,

Set SNDRV_PCM_INFO_JOINT_DUPLEX to specify that the playback/capture
streams are somehow related (must use the same rate).

> +	/* format of PCM samples is 16bit or 24bit inner 32bit */
> +	err = snd_pcm_hw_constraint_step(substream->runtime, 0,
> +				SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 32);
> +	err = snd_pcm_hw_constraint_step(substream->runtime, 0,
> +				SNDRV_PCM_HW_PARAM_BUFFER_BYTES, 32);

This has nothing to do with the sample format.

The AMDTP code requires(?) buffers and periods to be aligned with
packets, so you need constraints for 8/16/32 *frames*.

> +	/*
> +	 * The same sampling rate must be used for transmit and receive stream
> +	 * as long as the streams include PCM samples
> +	 */
> +	if ((amdtp_stream_running(&efw->receive_stream) &&
> +	     amdtp_stream_pcm_running(&efw->receive_stream)) ||
> +	    (amdtp_stream_running(&efw->transmit_stream) &&
> +	     amdtp_stream_pcm_running(&efw->transmit_stream))) {
> +		err = snd_efw_command_get_sampling_rate(efw, &sampling_rate);
> +		if (err < 0)
> +			goto end;
> +		substream->runtime->hw.rate_min = sampling_rate;
> +		substream->runtime->hw.rate_max = sampling_rate;
> +	}

What is the purpose of the "Sampling Rate" mixer control?

> +pcm_pointer(struct snd_pcm_substream *substream)
> +{
> +	struct snd_efw *efw = substream->private_data;
> +
> +	if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
> +		return amdtp_stream_pcm_pointer(&efw->receive_stream);
> +	else
> +		return amdtp_stream_pcm_pointer(&efw->transmit_stream);
> +}

If the playback/capture callbacks have nothing in common, just use two
functions.


Regards,
Clemens

------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2

  reply	other threads:[~2013-06-03 11:18 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-01 15:55 [PATCH 0/8] [RFC] new driver for Echo Audio's Fireworks based devices o-takashi
2013-06-01 15:55 ` [PATCH 1/8] add main file of driver module o-takashi
2013-06-03 11:18   ` Clemens Ladisch
2013-06-01 15:55 ` [PATCH 2/8] add device specific command o-takashi
2013-06-03 11:18   ` Clemens Ladisch
2013-06-06 17:33     ` Takashi Sakamoto
2013-06-06 22:49       ` Takashi Sakamoto
2013-06-01 15:55 ` [PATCH 3/8] add control interfaces o-takashi
2013-06-01 15:55 ` [PATCH 4/8] add handling AMDTP stream o-takashi
2013-06-01 15:55 ` [PATCH 5/8] add MIDI interface o-takashi
2013-06-03 11:18   ` Clemens Ladisch
2013-06-01 15:55 ` [PATCH 6/8] add PCM interface o-takashi
2013-06-03 11:18   ` Clemens Ladisch [this message]
2013-06-01 15:55 ` [PATCH 7/8] add proc interface o-takashi
2013-06-01 15:55 ` [PATCH 8/8] modify Makefile and Kconfig to build this module o-takashi
2013-06-03 11:19   ` Clemens Ladisch
2013-06-03 11:18 ` [PATCH 0/8] [RFC] new driver for Echo Audio's Fireworks based devices Clemens Ladisch
2013-06-07 12:16   ` Takashi Sakamoto
2013-06-08  9:29     ` Clemens Ladisch

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=51AC7B9A.7040408@ladisch.de \
    --to=clemens@ladisch.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=ffado-devel@lists.sf.net \
    --cc=linux1394-devel@lists.sourceforge.net \
    --cc=o-takashi@sakamocchi.jp \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.de \
    /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.