summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAlexy Joseph <alexyj@codeaurora.org>2015-09-10 00:04:30 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:11:07 -0700
commit5579f105aad0f2273764c3fd2b513011e4182992 (patch)
tree132dc86f7fa88c2b5e2e1bfefda396803b55f6bb /include
parent3e18aa8eca68cb86ace97c3d9ee41bca53e7ef6a (diff)
ALSA: compress: Add support to send codec specific data
Codec specific metadata is sent only for first stream in gapless playback. This causes incorrect configuration to be set for second stream and distortions are observed due to framedrops in adsp. Add support to send codec specific format during start of next stream in gapless using set_next_track_param. Change-Id: Ieec6b2afedec156e47873efcad9b3571160b0a29 Signed-off-by: Chaithanya Krishna Bacharaju <chaithan@codeaurora.org> Signed-off-by: Alexy Joseph <alexyj@codeaurora.org> Conflicts: include/sound/compress_driver.h
Diffstat (limited to 'include')
-rw-r--r--include/sound/compress_driver.h4
-rw-r--r--include/uapi/sound/compress_offload.h4
2 files changed, 8 insertions, 0 deletions
diff --git a/include/sound/compress_driver.h b/include/sound/compress_driver.h
index 0579142c5a7b..5311d98ccee1 100644
--- a/include/sound/compress_driver.h
+++ b/include/sound/compress_driver.h
@@ -96,6 +96,8 @@ struct snd_compr_stream {
* @get_params: retrieve the codec parameters, mandatory
* @set_metadata: Set the metadata values for a stream
* @get_metadata: retrieves the requested metadata values from stream
+ * @set_next_track_param: send codec specific data of subsequent track
+ * in gapless
* @trigger: Trigger operations like start, pause, resume, drain, stop.
* This callback is mandatory
* @pointer: Retrieve current h/w pointer information. Mandatory
@@ -118,6 +120,8 @@ struct snd_compr_ops {
struct snd_compr_metadata *metadata);
int (*get_metadata)(struct snd_compr_stream *stream,
struct snd_compr_metadata *metadata);
+ int (*set_next_track_param)(struct snd_compr_stream *stream,
+ union snd_codec_options *codec_options);
int (*trigger)(struct snd_compr_stream *stream, int cmd);
int (*pointer)(struct snd_compr_stream *stream,
struct snd_compr_tstamp *tstamp);
diff --git a/include/uapi/sound/compress_offload.h b/include/uapi/sound/compress_offload.h
index 8461cb89906b..a05b7ea11d2a 100644
--- a/include/uapi/sound/compress_offload.h
+++ b/include/uapi/sound/compress_offload.h
@@ -172,6 +172,8 @@ struct snd_compr_metadata {
* SNDRV_COMPRESS_STOP: stop a running stream, discarding ring buffer content
* and the buffers currently with DSP
* SNDRV_COMPRESS_DRAIN: Play till end of buffers and stop after that
+ * SNDRV_COMPRESS_SET_NEXT_TRACK_PARAM: send codec specific data for the next
+ * track in gapless
* SNDRV_COMPRESS_IOCTL_VERSION: Query the API version
*/
#define SNDRV_COMPRESS_IOCTL_VERSION _IOR('C', 0x00, int)
@@ -193,6 +195,8 @@ struct snd_compr_metadata {
#define SNDRV_COMPRESS_DRAIN _IO('C', 0x34)
#define SNDRV_COMPRESS_NEXT_TRACK _IO('C', 0x35)
#define SNDRV_COMPRESS_PARTIAL_DRAIN _IO('C', 0x36)
+#define SNDRV_COMPRESS_SET_NEXT_TRACK_PARAM\
+ _IOW('C', 0x80, union snd_codec_options)
/*
* TODO
* 1. add mmap support