From: Jaroslav Kysela Date: Wed, 21 Jan 2026 10:53:46 +0000 (+0100) Subject: compress_ops: remove get_tstamp64 callback X-Git-Tag: v1.2.16~24 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=c380c4e3cf8a5d514d4c2531096560f22bd0b5a4;p=tinycompress.git compress_ops: remove get_tstamp64 callback It is not required to polute ops with two versions of similar callbacks when we introduced V2 ops. Handle the wrapping in the top level (compress_get_tstamp function). Closes: https://github.com/alsa-project/tinycompress/pull/31 Signed-off-by: Jaroslav Kysela --- diff --git a/include/tinycompress/compress_ops.h b/include/tinycompress/compress_ops.h index e816632..7eabeb3 100644 --- a/include/tinycompress/compress_ops.h +++ b/include/tinycompress/compress_ops.h @@ -25,8 +25,6 @@ struct compress_ops { int (*get_hpointer)(void *compress_data, unsigned int *avail, struct timespec *tstamp); int (*get_tstamp)(void *compress_data, - unsigned int *samples, unsigned int *sampling_rate); - int (*get_tstamp64)(void *compress_data, unsigned long long *samples, unsigned int *sampling_rate); int (*write)(void *compress_data, const void *buf, size_t size); int (*read)(void *compress_data, void *buf, size_t size); diff --git a/src/lib/compress.c b/src/lib/compress.c index 1ff3dfe..0c537ac 100644 --- a/src/lib/compress.c +++ b/src/lib/compress.c @@ -209,13 +209,19 @@ int compress_get_hpointer(struct compress *compress, int compress_get_tstamp(struct compress *compress, unsigned int *samples, unsigned int *sampling_rate) { - return compress->ops->get_tstamp(compress->data, samples, sampling_rate); + unsigned long long _samples; + int ret; + + ret = compress->ops->get_tstamp(compress->data, &_samples, sampling_rate); + if (ret >= 0) + *samples = (unsigned int)_samples; + return ret; } int compress_get_tstamp64(struct compress *compress, unsigned long long *samples, unsigned int *sampling_rate) { - return compress->ops->get_tstamp64(compress->data, samples, sampling_rate); + return compress->ops->get_tstamp(compress->data, samples, sampling_rate); } int compress_write(struct compress *compress, const void *buf, unsigned int size) diff --git a/src/lib/compress_hw.c b/src/lib/compress_hw.c index f576d04..6e372c5 100644 --- a/src/lib/compress_hw.c +++ b/src/lib/compress_hw.c @@ -271,15 +271,11 @@ static int compress_hw_get_hpointer(void *data, return 0; } -static int compress_hw_get_tstamp(void *data, - unsigned int *samples, unsigned int *sampling_rate) +static int compress_hw_get_tstamp_32(struct compress_hw_data *compress, + unsigned long long *samples, unsigned int *sampling_rate) { - struct compress_hw_data *compress = (struct compress_hw_data *)data; struct snd_compr_tstamp ktstamp; - if (!is_compress_hw_ready(compress)) - return oops(compress, ENODEV, "device not ready"); - if (ioctl(compress->fd, SNDRV_COMPRESS_TSTAMP, &ktstamp)) return oops(compress, errno, "cannot get tstamp"); @@ -288,15 +284,11 @@ static int compress_hw_get_tstamp(void *data, return 0; } -static int compress_hw_get_tstamp64(void *data, +static int compress_hw_get_tstamp_64(struct compress_hw_data *compress, unsigned long long *samples, unsigned int *sampling_rate) { - struct compress_hw_data *compress = (struct compress_hw_data *)data; struct snd_compr_tstamp64 ktstamp; - if (!is_compress_hw_ready(compress)) - return oops(compress, ENODEV, "device not ready"); - if (ioctl(compress->fd, SNDRV_COMPRESS_TSTAMP64, &ktstamp)) return oops(compress, errno, "cannot get tstamp64"); @@ -305,6 +297,20 @@ static int compress_hw_get_tstamp64(void *data, return 0; } +static int compress_hw_get_tstamp(void *data, + unsigned long long *samples, unsigned int *sampling_rate) +{ + struct compress_hw_data *compress = (struct compress_hw_data *)data; + + if (!is_compress_hw_ready(compress)) + return oops(compress, ENODEV, "device not ready"); + + if (get_compress_hw_version(compress) >= SNDRV_PROTOCOL_VERSION(0, 4, 0)) + return compress_hw_get_tstamp_64(compress, samples, sampling_rate); + else + return compress_hw_get_tstamp_32(compress, samples, sampling_rate); +} + static int compress_hw_write(void *data, const void *buf, size_t size) { struct compress_hw_data *compress = (struct compress_hw_data *)data; @@ -646,7 +652,6 @@ struct compress_ops compress_hw_ops = { .close = compress_hw_close, .get_hpointer = compress_hw_get_hpointer, .get_tstamp = compress_hw_get_tstamp, - .get_tstamp64 = compress_hw_get_tstamp64, .write = compress_hw_write, .read = compress_hw_read, .start = compress_hw_start,