mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-04 13:29:59 -05:00
add new API call pa_cvolume_snprint_dB()
This commit is contained in:
parent
be77bcd9ad
commit
619ed8a82d
4 changed files with 56 additions and 2 deletions
|
|
@ -103,6 +103,7 @@ pa_cvolume_max;
|
||||||
pa_cvolume_remap;
|
pa_cvolume_remap;
|
||||||
pa_cvolume_set;
|
pa_cvolume_set;
|
||||||
pa_cvolume_snprint;
|
pa_cvolume_snprint;
|
||||||
|
pa_cvolume_snprint_dB;
|
||||||
pa_cvolume_valid;
|
pa_cvolume_valid;
|
||||||
pa_ext_stream_restore_delete;
|
pa_ext_stream_restore_delete;
|
||||||
pa_ext_stream_restore_read;
|
pa_ext_stream_restore_read;
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,7 @@ double pa_sw_volume_to_linear(pa_volume_t v) {
|
||||||
|
|
||||||
char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c) {
|
char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c) {
|
||||||
unsigned channel;
|
unsigned channel;
|
||||||
int first = 1;
|
pa_bool_t first = TRUE;
|
||||||
char *e;
|
char *e;
|
||||||
|
|
||||||
pa_assert(s);
|
pa_assert(s);
|
||||||
|
|
@ -164,7 +164,38 @@ char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c) {
|
||||||
(c->values[channel]*100)/PA_VOLUME_NORM);
|
(c->values[channel]*100)/PA_VOLUME_NORM);
|
||||||
|
|
||||||
e = strchr(e, 0);
|
e = strchr(e, 0);
|
||||||
first = 0;
|
first = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *pa_cvolume_snprint_dB(char *s, size_t l, const pa_cvolume *c) {
|
||||||
|
unsigned channel;
|
||||||
|
pa_bool_t first = TRUE;
|
||||||
|
char *e;
|
||||||
|
|
||||||
|
pa_assert(s);
|
||||||
|
pa_assert(l > 0);
|
||||||
|
pa_assert(c);
|
||||||
|
|
||||||
|
pa_init_i18n();
|
||||||
|
|
||||||
|
if (!pa_cvolume_valid(c)) {
|
||||||
|
pa_snprintf(s, l, _("(invalid)"));
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(e = s) = 0;
|
||||||
|
|
||||||
|
for (channel = 0; channel < c->channels && l > 1; channel++) {
|
||||||
|
l -= pa_snprintf(e, l, "%s%u: %0.2f dB",
|
||||||
|
first ? "" : " ",
|
||||||
|
channel,
|
||||||
|
pa_sw_volume_to_dB(c->values[channel]));
|
||||||
|
|
||||||
|
e = strchr(e, 0);
|
||||||
|
first = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
|
|
|
||||||
|
|
@ -136,6 +136,16 @@ pa_cvolume* pa_cvolume_set(pa_cvolume *a, unsigned channels, pa_volume_t v);
|
||||||
/** Pretty print a volume structure */
|
/** Pretty print a volume structure */
|
||||||
char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c);
|
char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c);
|
||||||
|
|
||||||
|
/** Maximum length of the strings returned by
|
||||||
|
* pa_cvolume_snprint_dB(). Please note that this value can change with
|
||||||
|
* any release without warning and without being considered API or ABI
|
||||||
|
* breakage. You should not use this definition anywhere where it
|
||||||
|
* might become part of an ABI. \since 0.9.13 */
|
||||||
|
#define PA_CVOLUME_SNPRINT_DB_MAX 448
|
||||||
|
|
||||||
|
/** Pretty print a volume structure but show dB values. \since 0.9.13 */
|
||||||
|
char *pa_cvolume_snprint_dB(char *s, size_t l, const pa_cvolume *c);
|
||||||
|
|
||||||
/** Return the average volume of all channels */
|
/** Return the average volume of all channels */
|
||||||
pa_volume_t pa_cvolume_avg(const pa_cvolume *a) PA_GCC_PURE;
|
pa_volume_t pa_cvolume_avg(const pa_cvolume *a) PA_GCC_PURE;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
pa_volume_t v;
|
pa_volume_t v;
|
||||||
|
pa_cvolume cv;
|
||||||
|
|
||||||
for (v = PA_VOLUME_MUTED; v <= PA_VOLUME_NORM*2; v += 256) {
|
for (v = PA_VOLUME_MUTED; v <= PA_VOLUME_NORM*2; v += 256) {
|
||||||
|
|
||||||
|
|
@ -13,6 +14,17 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
printf("Volume: %3i; percent: %i%%; decibel %0.2f; linear = %0.2f; volume(decibel): %3i; volume(linear): %3i\n",
|
printf("Volume: %3i; percent: %i%%; decibel %0.2f; linear = %0.2f; volume(decibel): %3i; volume(linear): %3i\n",
|
||||||
v, (v*100)/PA_VOLUME_NORM, dB, f, pa_sw_volume_from_dB(dB), pa_sw_volume_from_linear(f));
|
v, (v*100)/PA_VOLUME_NORM, dB, f, pa_sw_volume_from_dB(dB), pa_sw_volume_from_linear(f));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (v = PA_VOLUME_MUTED; v <= PA_VOLUME_NORM*2; v += 256) {
|
||||||
|
char s[PA_CVOLUME_SNPRINT_MAX], t[PA_CVOLUME_SNPRINT_DB_MAX];
|
||||||
|
|
||||||
|
pa_cvolume_set(&cv, 2, v);
|
||||||
|
|
||||||
|
printf("Volume: %3i [%s] [%s]\n",
|
||||||
|
v,
|
||||||
|
pa_cvolume_snprint(s, sizeof(s), &cv),
|
||||||
|
pa_cvolume_snprint_dB(t, sizeof(t), &cv));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue