- remove all gcc warnings
- esd compatible startup script or personality
- limit number of concurrent streams
-- decibel macros
** later ***
- xmlrpc/http
AM_CFLAGS=-D_GNU_SOURCE -I$(top_srcdir) $(PTHREAD_CFLAGS)
#AM_CFLAGS+= -DDLSEARCHDIR=\"$(pkglibdir)\"
-AM_LDADD=$(PTHREAD_LIBS)
-AM_LIBADD=$(PTHREAD_LIBS)
+AM_LDADD=$(PTHREAD_LIBS) -lm
+AM_LIBADD=$(PTHREAD_LIBS) -lm
polypincludedir=$(includedir)/polyp
module_sine_la_SOURCES = module-sine.c
module_sine_la_LDFLAGS = -module -avoid-version
-module_sine_la_LIBADD = $(AM_LIBADD) -lm
+module_sine_la_LIBADD = $(AM_LIBADD)
if !X_DISPLAY_MISSING
module_x11_bell_la_SOURCES = module-x11-bell.c
assert(sink->monitor_source);
pa_strbuf_printf(
s,
- " %c index: %u\n\tname: <%s>\n\tvolume: <0x%04x>\n\tlatency: <%u usec>\n\tmonitor_source: <%u>\n\tsample_spec: <%s>\n",
+ " %c index: %u\n\tname: <%s>\n\tvolume: <0x%04x> (%0.2fdB)\n\tlatency: <%u usec>\n\tmonitor_source: <%u>\n\tsample_spec: <%s>\n",
c->default_sink_name && !strcmp(sink->name, c->default_sink_name) ? '*' : ' ',
sink->index, sink->name,
(unsigned) sink->volume,
+ pa_volume_to_dB(sink->volume),
pa_sink_get_latency(sink),
sink->monitor_source->index,
ss);
pa_sample_spec_snprint(ss, sizeof(ss), &i->sample_spec);
assert(i->sink);
pa_strbuf_printf(
- s, " index: %u\n\tname: <%s>\n\tsink: <%u>\n\tvolume: <0x%04x>\n\tlatency: <%u usec>\n\tsample_spec: <%s>\n",
+ s, " index: %u\n\tname: <%s>\n\tsink: <%u>\n\tvolume: <0x%04x> (%0.2fdB)\n\tlatency: <%u usec>\n\tsample_spec: <%s>\n",
i->index,
i->name,
i->sink->index,
(unsigned) i->volume,
+ pa_volume_to_dB(i->volume),
pa_sink_input_get_latency(i),
ss);
#include <stdio.h>
#include <assert.h>
+#include <math.h>
#include "sample.h"
return (pa_volume_t) p;
}
+
+pa_volume_t pa_volume_from_dB(double f) {
+ if (f <= -200)
+ return PA_VOLUME_MUTED;
+
+ return (pa_volume_t) (pow(10, f/20)*PA_VOLUME_NORM);
+}
+
+double pa_volume_to_dB(pa_volume_t v) {
+ if (v == PA_VOLUME_MUTED)
+ return -200;
+
+ return 20*log10((double) v/PA_VOLUME_NORM);
+}
/** Multiply two volumes specifications, return the result. This uses PA_VOLUME_NORM as neutral element of multiplication. */
pa_volume_t pa_volume_multiply(pa_volume_t a, pa_volume_t b);
+/** Convert volume from decibel to linear level */
+pa_volume_t pa_volume_from_dB(double f);
+
+/** Convert volume from linear level to decibel */
+double pa_volume_to_dB(pa_volume_t v);
+
PA_C_DECL_END
#endif