tinycompress: Add support for compress_set_codec_params API
Add support for compress_set_codec_params API which is used
to send codec parameters from clients directly.
CRs-Fixed: 2926417
Change-Id: I83f52378e288f15bccfc8a7798d33943a02d5e52
(cherry picked from commit 59ab62c9cd847563a68ef88b81eec9014413f23a)
diff --git a/compress.c b/compress.c
index ac2c73f..027d36d 100644
--- a/compress.c
+++ b/compress.c
@@ -619,6 +619,25 @@
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_ready(compress) || !compress->next_track)
+ 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));
+ memcpy(&compress->config->codec, codec, sizeof(struct snd_codec));
+
+ if (compress->ops->ioctl(compress->data, SNDRV_COMPRESS_SET_PARAMS, ¶ms))
+ return oops(compress, errno, "cannot set device");
+
+ compress->next_track = 0;
+ return 0;
+}
+
#ifdef ENABLE_EXTENDED_COMPRESS_FORMAT
int compress_get_metadata(struct compress *compress,
struct snd_compr_metadata *mdata) {