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: Ic0a9286c4fd8d17df63d676d6ce14cd394dea791
Signed-off-by: Chaithanya Krishna Bacharaju <[email protected]>
Signed-off-by: Alexy Joseph <[email protected]>
Signed-off-by: Banajit Goswami <[email protected]>
Signed-off-by: Meng Wang <[email protected]>
This commit is contained in:
Meng Wang 2019-12-06 09:48:09 +08:00
commit 7913e574a9
4 changed files with 68 additions and 0 deletions

View file

@ -85,6 +85,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
@ -107,6 +109,10 @@ struct snd_compr_ops {
struct snd_compr_metadata *metadata);
int (*get_metadata)(struct snd_compr_stream *stream,
struct snd_compr_metadata *metadata);
#ifdef CONFIG_AUDIO_QGKI
int (*set_next_track_param)(struct snd_compr_stream *stream,
union snd_codec_options *codec_options);
#endif
int (*trigger)(struct snd_compr_stream *stream, int cmd);
int (*pointer)(struct snd_compr_stream *stream,
struct snd_compr_tstamp *tstamp);