mirror of https://gitee.com/openkylin/linux.git
ASoC: q6asm-dai: add next track metadata support
This patch adds support to metadata required to do a gapless playback. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Tested-by: Vinod Koul <vkoul@kernel.org> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Vinod Koul <vkoul@kernel.org> Link: https://lore.kernel.org/r/20200727093806.17089-8-srinivas.kandagatla@linaro.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
983b8864f6
commit
135bd5ea19
|
@ -67,6 +67,8 @@ struct q6asm_dai_rtd {
|
|||
uint32_t stream_id;
|
||||
uint16_t session_id;
|
||||
enum stream_state state;
|
||||
uint32_t initial_samples_drop;
|
||||
uint32_t trailing_samples_drop;
|
||||
};
|
||||
|
||||
struct q6asm_dai_data {
|
||||
|
@ -865,6 +867,29 @@ static int q6asm_dai_compr_set_params(struct snd_soc_component *component,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int q6asm_dai_compr_set_metadata(struct snd_soc_component *component,
|
||||
struct snd_compr_stream *stream,
|
||||
struct snd_compr_metadata *metadata)
|
||||
{
|
||||
struct snd_compr_runtime *runtime = stream->runtime;
|
||||
struct q6asm_dai_rtd *prtd = runtime->private_data;
|
||||
int ret = 0;
|
||||
|
||||
switch (metadata->key) {
|
||||
case SNDRV_COMPRESS_ENCODER_PADDING:
|
||||
prtd->trailing_samples_drop = metadata->value[0];
|
||||
break;
|
||||
case SNDRV_COMPRESS_ENCODER_DELAY:
|
||||
prtd->initial_samples_drop = metadata->value[0];
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int q6asm_dai_compr_trigger(struct snd_soc_component *component,
|
||||
struct snd_compr_stream *stream, int cmd)
|
||||
{
|
||||
|
@ -981,6 +1006,7 @@ static struct snd_compress_ops q6asm_dai_compress_ops = {
|
|||
.open = q6asm_dai_compr_open,
|
||||
.free = q6asm_dai_compr_free,
|
||||
.set_params = q6asm_dai_compr_set_params,
|
||||
.set_metadata = q6asm_dai_compr_set_metadata,
|
||||
.pointer = q6asm_dai_compr_pointer,
|
||||
.trigger = q6asm_dai_compr_trigger,
|
||||
.get_caps = q6asm_dai_compr_get_caps,
|
||||
|
|
Loading…
Reference in New Issue