diff options
Diffstat (limited to 'compress.c')
-rw-r--r-- | compress.c | 47 |
1 files changed, 47 insertions, 0 deletions
@@ -572,6 +572,19 @@ int compress_set_gapless_metadata(struct compress *compress, return 0; } +#ifdef ENABLE_EXTENDED_COMPRESS_FORMAT +int compress_set_next_track_param(struct compress *compress, + union snd_codec_options *codec_options) +{ + if (!is_compress_running(compress)) + return oops(compress, ENODEV, "device not ready"); + + if (ioctl(compress->fd, SNDRV_COMPRESS_SET_NEXT_TRACK_PARAM, codec_options)) + return oops(compress, errno, "cannot set next track params\n"); + return 0; +} +#endif + bool is_codec_supported(unsigned int card, unsigned int device, unsigned int flags, struct snd_codec *codec) { @@ -630,3 +643,37 @@ int compress_wait(struct compress *compress, int timeout_ms) return oops(compress, EIO, "poll signalled unhandled event"); } +#ifdef ENABLE_EXTENDED_COMPRESS_FORMAT +int compress_get_metadata(struct compress *compress, + struct snd_compr_metadata *mdata) { + int version; + if (!is_compress_ready(compress)) + return oops(compress, ENODEV, "device not ready"); + + version = get_compress_version(compress); + if (version <= 0) + return -1; + + if (ioctl(compress->fd, SNDRV_COMPRESS_GET_METADATA, mdata)) { + return oops(compress, errno, "can't get metadata for stream\n"); + } + return 0; +} + +int compress_set_metadata(struct compress *compress, + struct snd_compr_metadata *mdata) { + + int version; + if (!is_compress_ready(compress)) + return oops(compress, ENODEV, "device not ready"); + + version = get_compress_version(compress); + if (version <= 0) + return -1; + + if (ioctl(compress->fd, SNDRV_COMPRESS_SET_METADATA, mdata)) { + return oops(compress, errno, "can't set metadata for stream\n"); + } + return 0; +} +#endif |