Compare commits
3 commits
80b3183143
...
1eb2e5bf3b
Author | SHA1 | Date | |
---|---|---|---|
|
1eb2e5bf3b | ||
|
14215fe64e | ||
|
70676065b0 |
4 changed files with 33 additions and 1 deletions
|
@ -21,6 +21,7 @@ license {
|
||||||
|
|
||||||
cc_library_shared {
|
cc_library_shared {
|
||||||
name: "libtinycompress",
|
name: "libtinycompress",
|
||||||
|
defaults: ["extended_compress_format_defaults"],
|
||||||
vendor: true,
|
vendor: true,
|
||||||
|
|
||||||
cflags: [
|
cflags: [
|
||||||
|
|
17
compress.c
17
compress.c
|
@ -619,6 +619,23 @@ int compress_wait(struct compress *compress, int timeout_ms)
|
||||||
return oops(compress, EIO, "poll signalled unhandled event");
|
return oops(compress, EIO, "poll signalled unhandled event");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int compress_set_codec_params(struct compress *compress,
|
||||||
|
struct snd_codec *codec) {
|
||||||
|
struct snd_compr_params params;
|
||||||
|
|
||||||
|
if (!is_compress_running(compress))
|
||||||
|
return oops(compress, ENODEV, "device not ready");
|
||||||
|
|
||||||
|
params.buffer.fragment_size = compress->config->fragment_size;
|
||||||
|
params.buffer.fragments = compress->config->fragments;
|
||||||
|
memcpy(¶ms.codec, codec, sizeof(params.codec));
|
||||||
|
|
||||||
|
if (compress->ops->ioctl(compress->data, SNDRV_COMPRESS_SET_PARAMS, ¶ms))
|
||||||
|
return oops(compress, errno, "cannot set device");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_EXTENDED_COMPRESS_FORMAT
|
#ifdef ENABLE_EXTENDED_COMPRESS_FORMAT
|
||||||
int compress_get_metadata(struct compress *compress,
|
int compress_get_metadata(struct compress *compress,
|
||||||
struct snd_compr_metadata *mdata) {
|
struct snd_compr_metadata *mdata) {
|
||||||
|
|
|
@ -84,7 +84,10 @@ static int compress_plug_set_params(struct compress_plug_data *plug_data,
|
||||||
struct compress_plugin *plugin = plug_data->plugin;
|
struct compress_plugin *plugin = plug_data->plugin;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if (plugin->state != COMPRESS_PLUG_STATE_OPEN)
|
if (plugin->state == COMPRESS_PLUG_STATE_RUNNING)
|
||||||
|
return plugin->ops->set_params(plugin, params);
|
||||||
|
else if (plugin->state != COMPRESS_PLUG_STATE_OPEN &&
|
||||||
|
plugin->state != COMPRESS_PLUG_STATE_SETUP)
|
||||||
return -EBADFD;
|
return -EBADFD;
|
||||||
|
|
||||||
if (params->buffer.fragment_size == 0 ||
|
if (params->buffer.fragment_size == 0 ||
|
||||||
|
|
|
@ -309,6 +309,17 @@ const char *compress_get_error(struct compress *compress);
|
||||||
/* utility functions */
|
/* utility functions */
|
||||||
unsigned int compress_get_alsa_rate(unsigned int rate);
|
unsigned int compress_get_alsa_rate(unsigned int rate);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* compress_set_codec_params: set codec config intended for next track
|
||||||
|
* if DSP has support to switch CODEC config during gapless playback
|
||||||
|
* This API is expected to be called after compress_next_track is called
|
||||||
|
* return 0 on success, negative on error
|
||||||
|
*
|
||||||
|
* @compress: compress stream for which metadata has to set
|
||||||
|
* @codec: codec configuration for next track
|
||||||
|
*/
|
||||||
|
int compress_set_codec_params(struct compress *compress, struct snd_codec *codec);
|
||||||
|
|
||||||
#ifdef ENABLE_EXTENDED_COMPRESS_FORMAT
|
#ifdef ENABLE_EXTENDED_COMPRESS_FORMAT
|
||||||
/* set metadata */
|
/* set metadata */
|
||||||
int compress_set_metadata(struct compress *compress,
|
int compress_set_metadata(struct compress *compress,
|
||||||
|
|
Loading…
Reference in a new issue