diff options
Diffstat (limited to 'compress.c')
-rw-r--r-- | compress.c | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -552,8 +552,13 @@ int compress_set_next_track_param(struct compress *compress, if (!is_compress_running(compress)) return oops(compress, ENODEV, "device not ready"); + if (codec_options == NULL) + return oops(compress, ENODEV, "codec_option NULL"); + +#ifdef SNDRV_COMPRESS_SET_NEXT_TRACK_PARAM if (ioctl(compress->fd, SNDRV_COMPRESS_SET_NEXT_TRACK_PARAM, codec_options)) return oops(compress, errno, "cannot set next track params\n"); +#endif return 0; } #endif @@ -617,6 +622,23 @@ int compress_wait(struct compress *compress, int timeout_ms) 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 int compress_get_metadata(struct compress *compress, struct snd_compr_metadata *mdata) { |