alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* [RFC] Channel mapping API (take 2)
@ 2012-09-04 15:47 Takashi Iwai
  2012-09-05  6:00 ` Tanu Kaskinen
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Takashi Iwai @ 2012-09-04 15:47 UTC (permalink / raw)
  To: alsa-devel

Hi,

my proposal for channel mapping API seems accepted fairly well through
discussions at Plumbers, so I continued to work on it and uploaded the
updated version.

The kernel part is found in sound-unstable tree topic/tlv-chmap branch
  git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-unstable.git

and the alsa-lib part is found in github tree topic/chmap branch
  git://git.github.com/tiwai/alsa-lib.git

The updated parts are:

- SNDRV_CHMAP_NA was newly added, indicating the channel is not
  available or silent.

- The channel position value is masked in lower 16bit.
  The upper bits are used for more channel attributes as bit flags.

  #define SNDRV_CHMAP_POSITION_MASK	0xffff

  The phase inverted channel has this bit:
  #define SNDRV_CHMAP_PHASE_INVERSE	(0x01 << 16)

  And the driver-specific non-standard channel position has this:
  #define SNDRV_CHMAP_DRIVER_SPEC	(0x02 << 16)

- The alsa-lib API functions use snd_pcm_chmap_query_t and
  snd_pcm_chmap_t instead of ambiguous integer arrays.

================================================================
/** the channel map header */
typedef struct snd_pcm_chmap {
	unsigned int channels;
	unsigned int pos[0];
} snd_pcm_chmap_t;

/** the header of array items returned from snd_pcm_query_chmaps() */
typedef struct snd_pcm_chmap_query {
	enum snd_pcm_chmap_type type;
	snd_pcm_chmap_t map;
} snd_pcm_chmap_query_t;


snd_pcm_chmap_query_t **snd_pcm_query_chmaps(snd_pcm_t *pcm);
void snd_pcm_free_chmaps(snd_pcm_chmap_query_t **maps);
snd_pcm_chmap_t *snd_pcm_get_chmap(snd_pcm_t *pcm);
int snd_pcm_set_chmap(snd_pcm_t *pcm, const snd_pcm_chmap_t *map);
================================================================

The rest aren't so much changed.  Only slight bug fixes.

A big remaining question is whether the current kernel-side
implementation is OK.  We may add some PCM ops pointer instead of the
current style using the direct control tlv/read/write override.
But the kernel-side API can be changed even later, so I don't worry
about it so much for now, as long as we can keep the ABI definition.


thanks,

Takashi

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2012-09-07  9:43 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-04 15:47 [RFC] Channel mapping API (take 2) Takashi Iwai
2012-09-05  6:00 ` Tanu Kaskinen
2012-09-05  6:17   ` Takashi Iwai
2012-09-05  6:38     ` Tanu Kaskinen
2012-09-05  6:49 ` David Henningsson
2012-09-05  6:59   ` Takashi Iwai
2012-09-05  8:32 ` David Henningsson
2012-09-05 10:34   ` Takashi Iwai
2012-09-06 11:47 ` Raymond Yau
2012-09-06 11:56   ` Takashi Iwai
2012-09-07  9:16 ` Tanu Kaskinen
2012-09-07  9:43   ` Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).