git: 19ec522d6dc1 - main - sound: Export hardware and software buffer sample rate in sndstat nvlist

From: Christos Margiolis <christos_at_FreeBSD.org>
Date: Fri, 25 Apr 2025 16:56:38 UTC
The branch main has been updated by christos:

URL: https://cgit.FreeBSD.org/src/commit/?id=19ec522d6dc1d4616e07f5668339fc637856f547

commit 19ec522d6dc1d4616e07f5668339fc637856f547
Author:     Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2025-04-25 16:55:38 +0000
Commit:     Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2025-04-25 16:55:38 +0000

    sound: Export hardware and software buffer sample rate in sndstat nvlist
    
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D49983
---
 share/man/man4/sndstat.4    | 6 ++++++
 sys/dev/sound/pcm/sndstat.c | 4 ++++
 sys/sys/sndstat.h           | 2 ++
 3 files changed, 12 insertions(+)

diff --git a/share/man/man4/sndstat.4 b/share/man/man4/sndstat.4
index 8da705502920..8dad58c7d804 100644
--- a/share/man/man4/sndstat.4
+++ b/share/man/man4/sndstat.4
@@ -98,12 +98,14 @@ dsps (NVLIST ARRAY): 1
 			left_volume (NUMBER): 45
 			right_volume (NUMBER): 45
 			hwbuf_fmt (NUMBER): 0x200010
+			hwbuf_rate (NUMBER): 48000
 			hwbuf_size (NUMBER): 0
 			hwbuf_blksz (NUMBER): 0
 			hwbuf_blkcnt (NUMBER): 0
 			hwbuf_free (NUMBER): 0
 			hwbuf_ready (NUMBER): 0
 			swbuf_fmt (NUMBER): 0x201000
+			swbuf_rate (NUMBER): 48000
 			swbuf_size (NUMBER): 16384
 			swbuf_blksz (NUMBER): 2048
 			swbuf_blkcnt (NUMBER): 8
@@ -226,6 +228,8 @@ Left volume.
 Right volume.
 .It Dv hwbuf_format
 Hardware buffer format.
+.It Dv hwbuf_rate
+Hardware buffer sample rate;
 .It Dv hwbuf_size
 Hardware buffer size.
 .It Dv hwbuf_blksz
@@ -238,6 +242,8 @@ Free space in hardware buffer (in bytes).
 Number of bytes ready to be read/written from hardware buffer.
 .It Dv swbuf_format
 Software buffer format.
+.It Dv swbuf_rate
+Software buffer sample rate;
 .It Dv swbuf_size
 Software buffer size.
 .It Dv swbuf_blksz
diff --git a/sys/dev/sound/pcm/sndstat.c b/sys/dev/sound/pcm/sndstat.c
index cafd9aff4bdc..509a35c5a038 100644
--- a/sys/dev/sound/pcm/sndstat.c
+++ b/sys/dev/sound/pcm/sndstat.c
@@ -493,6 +493,8 @@ sndstat_build_sound4_nvlist(struct snddev_info *d, nvlist_t **dip)
 		    CHN_GETVOLUME(c, SND_VOL_C_PCM, SND_CHN_T_FR));
 		nvlist_add_number(cdi, SNDST_DSPS_SOUND4_CHAN_HWBUF_FORMAT,
 		    sndbuf_getfmt(c->bufhard));
+		nvlist_add_number(cdi, SNDST_DSPS_SOUND4_CHAN_HWBUF_RATE,
+		    sndbuf_getspd(c->bufhard));
 		nvlist_add_number(cdi, SNDST_DSPS_SOUND4_CHAN_HWBUF_SIZE,
 		    sndbuf_getsize(c->bufhard));
 		nvlist_add_number(cdi, SNDST_DSPS_SOUND4_CHAN_HWBUF_BLKSZ,
@@ -505,6 +507,8 @@ sndstat_build_sound4_nvlist(struct snddev_info *d, nvlist_t **dip)
 		    sndbuf_getready(c->bufhard));
 		nvlist_add_number(cdi, SNDST_DSPS_SOUND4_CHAN_SWBUF_FORMAT,
 		    sndbuf_getfmt(c->bufsoft));
+		nvlist_add_number(cdi, SNDST_DSPS_SOUND4_CHAN_SWBUF_RATE,
+		    sndbuf_getspd(c->bufsoft));
 		nvlist_add_number(cdi, SNDST_DSPS_SOUND4_CHAN_SWBUF_SIZE,
 		    sndbuf_getsize(c->bufsoft));
 		nvlist_add_number(cdi, SNDST_DSPS_SOUND4_CHAN_SWBUF_BLKSZ,
diff --git a/sys/sys/sndstat.h b/sys/sys/sndstat.h
index 6fd2e06ac483..a569f27f288f 100644
--- a/sys/sys/sndstat.h
+++ b/sys/sys/sndstat.h
@@ -94,12 +94,14 @@ struct sndstioc_nv_arg {
 #define SNDST_DSPS_SOUND4_CHAN_LEFTVOL		"left_volume"
 #define SNDST_DSPS_SOUND4_CHAN_RIGHTVOL		"right_volume"
 #define SNDST_DSPS_SOUND4_CHAN_HWBUF_FORMAT	"hwbuf_format"
+#define SNDST_DSPS_SOUND4_CHAN_HWBUF_RATE	"hwbuf_rate"
 #define SNDST_DSPS_SOUND4_CHAN_HWBUF_SIZE	"hwbuf_size"
 #define SNDST_DSPS_SOUND4_CHAN_HWBUF_BLKSZ	"hwbuf_blksz"
 #define SNDST_DSPS_SOUND4_CHAN_HWBUF_BLKCNT	"hwbuf_blkcnt"
 #define SNDST_DSPS_SOUND4_CHAN_HWBUF_FREE	"hwbuf_free"
 #define SNDST_DSPS_SOUND4_CHAN_HWBUF_READY	"hwbuf_ready"
 #define SNDST_DSPS_SOUND4_CHAN_SWBUF_FORMAT	"swbuf_format"
+#define SNDST_DSPS_SOUND4_CHAN_SWBUF_RATE	"swbuf_rate"
 #define SNDST_DSPS_SOUND4_CHAN_SWBUF_SIZE	"swbuf_size"
 #define SNDST_DSPS_SOUND4_CHAN_SWBUF_BLKSZ	"swbuf_blksz"
 #define SNDST_DSPS_SOUND4_CHAN_SWBUF_BLKCNT	"swbuf_blkcnt"