diff options
author | Mark Farrugia <mark.farrugia@fiberdyne.com.au> | 2018-11-01 12:17:10 +1100 |
---|---|---|
committer | Mark Farrugia <mark.farrugia@fiberdyne.com.au> | 2018-11-01 14:57:07 +1100 |
commit | 52db7a23a234080d3a28dfe60191c239cc04613b (patch) | |
tree | a7b2332b51d6fee70f0f8cfec245fe4ca9e8d6dc /sound | |
parent | 0765c6c497379a9f850d15be3b3cbdaba59fe7fc (diff) |
Only expose streams mapped to audiopaths on configure() cb
When the configure() callback occurs for each audiopath, we only want
those streams that are mapped to the given audiopath to be exposed to
the audiopath. E.g. only streams mapped to loopback should be
propagated to loopback via configure() callback, rather than
all streams.
Signed-off-by: Mark Farrugia <mark.farrugia@fiberdyne.com.au>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/avirt.h | 48 |
1 files changed, 16 insertions, 32 deletions
diff --git a/sound/avirt.h b/sound/avirt.h index b077bbc..55db1eb 100644 --- a/sound/avirt.h +++ b/sound/avirt.h @@ -17,23 +17,24 @@ #define MAX_STREAMS 16 #define MAX_NAME_LEN 80 -#define DINFO(logname, fmt, args...) \ +#define DINFO(logname, fmt, args...) \ snd_printk(KERN_INFO "AVIRT: %s: " fmt "\n", logname, ##args) -#define DERROR(logname, fmt, args...) \ +#define DERROR(logname, fmt, args...) \ snd_printk(KERN_ERR "AVIRT: %s: " fmt "\n", logname, ##args) -#define DDEBUG(logname, fmt, args...) \ +#define DDEBUG(logname, fmt, args...) \ snd_printk(KERN_DEBUG "AVIRT: %s: " fmt "\n", logname, ##args) +struct snd_avirt_stream_array; /* Forward declaration */ + /** * AVIRT Audio Path configure function type * Each Audio Path registers this at snd_avirt_audiopath_register time. * It is then called by the core once AVIRT has been configured */ -typedef int (*snd_avirt_audiopath_configure)(struct snd_card *card, - struct config_group *stream_group, - unsigned int stream_count); +typedef int (*snd_avirt_audiopath_configure)( + struct snd_card *card, struct snd_avirt_stream_array *stream_array); /** * AVIRT Audio Path info @@ -49,7 +50,7 @@ struct snd_avirt_audiopath { void *context; }; -/* +/** * Audio stream configuration */ struct snd_avirt_stream { @@ -63,6 +64,14 @@ struct snd_avirt_stream { }; /** + * Audio stream group + */ +struct snd_avirt_stream_array { + struct snd_avirt_stream *streams[MAX_STREAMS]; + int count; +}; + +/** * snd_avirt_audiopath_register - register Audio Path with AVIRT * @audiopath: Audio Path to be registered * @return: 0 on success or error code otherwise @@ -77,31 +86,6 @@ int snd_avirt_audiopath_register(struct snd_avirt_audiopath *audiopath); int snd_avirt_audiopath_deregister(struct snd_avirt_audiopath *audiopath); /** - * snd_avirt_audiopath_get - retrieves the Audio Path by it's UID - * @uid: Unique ID for the Audio Path - * @return: Corresponding Audio Path - */ -struct snd_avirt_audiopath *snd_avirt_audiopath_get(const char *uid); - -/** - * snd_avirt_stream_count - get the stream count for the given direction - * @direction: The direction to get the stream count for - * @return: The stream count - */ -int snd_avirt_stream_count(unsigned int direction); - -/** - * snd_avirt_stream_from_config_item - Convert config_item to a snd_avirt_stream - * @item: The config_item to convert from - * @return: The item's snd_avirt_stream if successful, NULL otherwise - */ -static inline struct snd_avirt_stream * - snd_avirt_stream_from_config_item(struct config_item *item) -{ - return item ? container_of(item, struct snd_avirt_stream, item) : NULL; -} - -/** * snd_avirt_pcm_period_elapsed - PCM buffer complete callback * @substream: pointer to ALSA PCM substream * |