3 #include <pulse/volume.h>
4 #include <pulse/gccmacro.h>
6 int main(int argc
, char *argv
[]) {
12 for (v
= PA_VOLUME_MUTED
; v
<= PA_VOLUME_NORM
*2; v
+= 256) {
14 double dB
= pa_sw_volume_to_dB(v
);
15 double f
= pa_sw_volume_to_linear(v
);
17 printf("Volume: %3i; percent: %i%%; decibel %0.2f; linear = %0.2f; volume(decibel): %3i; volume(linear): %3i\n",
18 v
, (v
*100)/PA_VOLUME_NORM
, dB
, f
, pa_sw_volume_from_dB(dB
), pa_sw_volume_from_linear(f
));
21 for (v
= PA_VOLUME_MUTED
; v
<= PA_VOLUME_NORM
*2; v
+= 256) {
22 char s
[PA_CVOLUME_SNPRINT_MAX
], t
[PA_SW_CVOLUME_SNPRINT_DB_MAX
];
24 pa_cvolume_set(&cv
, 2, v
);
26 printf("Volume: %3i [%s] [%s]\n",
28 pa_cvolume_snprint(s
, sizeof(s
), &cv
),
29 pa_sw_cvolume_snprint_dB(t
, sizeof(t
), &cv
));
33 map
.channels
= cv
.channels
= 2;
34 map
.map
[0] = PA_CHANNEL_POSITION_LEFT
;
35 map
.map
[1] = PA_CHANNEL_POSITION_RIGHT
;
37 for (cv
.values
[0] = PA_VOLUME_MUTED
; cv
.values
[0] <= PA_VOLUME_NORM
*2; cv
.values
[0] += 4096)
38 for (cv
.values
[1] = PA_VOLUME_MUTED
; cv
.values
[1] <= PA_VOLUME_NORM
*2; cv
.values
[1] += 4096) {
39 char s
[PA_CVOLUME_SNPRINT_MAX
];
41 printf("Volume: [%s]; balance: %2.1f\n", pa_cvolume_snprint(s
, sizeof(s
), &cv
), pa_cvolume_get_balance(&cv
, &map
));
44 for (cv
.values
[0] = PA_VOLUME_MUTED
+4096; cv
.values
[0] <= PA_VOLUME_NORM
*2; cv
.values
[0] += 4096)
45 for (cv
.values
[1] = PA_VOLUME_MUTED
; cv
.values
[1] <= PA_VOLUME_NORM
*2; cv
.values
[1] += 4096)
46 for (b
= -1.0f
; b
<= 1.0f
; b
+= 0.2f
) {
47 char s
[PA_CVOLUME_SNPRINT_MAX
];
51 printf("Before: volume: [%s]; balance: %2.1f\n", pa_cvolume_snprint(s
, sizeof(s
), &cv
), pa_cvolume_get_balance(&cv
, &map
));
54 pa_cvolume_set_balance(&r
, &map
,b
);
56 k
= pa_cvolume_get_balance(&r
, &map
);
57 printf("After: volume: [%s]; balance: %2.1f (intended: %2.1f) %s\n", pa_cvolume_snprint(s
, sizeof(s
), &r
), k
, b
, k
< b
-.05 || k
> b
+.5 ? "MISMATCH" : "");