static uint32_t stamp;
-struct pa_null_sink {
+struct agl_null_sink {
char *name;
uint32_t module_index;
uint32_t sink_index;
};
-pa_null_sink *pa_utils_create_null_sink (struct userdata *u, const char *name)
+agl_null_sink *agl_utils_create_null_sink (struct userdata *u, const char *name)
{
pa_core *core;
pa_module *module;
- pa_null_sink *ns;
pa_sink *s, *sink;
+ agl_null_sink *ns;
uint32_t idx;
char args[256];
if (!name)
name = DEFAULT_NULL_SINK_NAME; /* default is "null.agl" */
- snprintf (args, sizeof(args), "sink_name=\"%s.%d\" channels=2", name, pa_utils_new_stamp ());
+ snprintf (args, sizeof(args), "sink_name=\"%s.%d\" channels=2", name, agl_utils_new_stamp ());
module = pa_module_load (core, "module-null-sink", args);
sink = NULL;
}
}
- ns = pa_xnew0 (pa_null_sink, 1);
+ ns = pa_xnew0 (agl_null_sink, 1);
ns->name = pa_xstrdup (name);
ns->module_index = module ? module->index : PA_IDXSET_INVALID;
ns->sink_index = sink ? sink->index : PA_IDXSET_INVALID;
return ns;
}
-void pa_utils_destroy_null_sink (struct userdata *u, pa_null_sink *ns)
+void agl_utils_destroy_null_sink (struct userdata *u, agl_null_sink *ns)
{
pa_core *core;
pa_module *module;
if (u && (core = u->core)) {
if ((module = pa_idxset_get_by_index (core->modules, ns->module_index))){
pa_log_info ("unloading null sink '%s'", ns->name);
- pa_module_unload (core, module, false);
+ pa_module_unload (module, false);
}
pa_xfree (ns->name);
}
}
-pa_sink *pa_utils_get_null_sink (struct userdata *u, struct pa_null_sink *ns)
+pa_sink *agl_utils_get_null_sink (struct userdata *u, struct agl_null_sink *ns)
{
pa_core *core;
pa_sink *sink;
return pa_idxset_get_by_index (core->sinks, ns->sink_index);
}
-pa_source *pa_utils_get_null_source (struct userdata *u, struct pa_null_sink *ns)
+pa_source *agl_utils_get_null_source (struct userdata *u, struct agl_null_sink *ns)
{
pa_sink *sink;
- sink = pa_utils_get_null_sink (u, ns);
+ sink = agl_utils_get_null_sink (u, ns);
return sink ? sink->monitor_source : NULL;
}
+void agl_utils_volume_ramp (struct userdata *u, struct agl_null_sink *ns, bool up)
+{
+ pa_core *core;
+ pa_sink *sink;
+ pa_sink_input *sinp;
+ uint32_t index;
+ pa_cvolume_ramp rampvol;
+ pa_volume_t newvol;
+ long time;
+
+ if (up) {
+ newvol = PA_VOLUME_NORM;
+ time = 5000;
+ } else {
+ newvol = PA_VOLUME_NORM *10/100;
+ time = 3000;
+ }
-const char *pa_utils_get_card_name (pa_card *card)
+ pa_assert (u);
+ pa_assert_se ((core = u->core));
+
+ sink = agl_utils_get_null_sink (u, ns);
+ PA_IDXSET_FOREACH(sinp, core->sink_inputs, index) {
+ if (sinp->sink && sinp->sink == sink)
+ break;
+ sinp = NULL;
+ }
+ if (!sinp) return;
+
+ pa_cvolume_ramp_set (&rampvol, sinp->volume.channels, PA_VOLUME_RAMP_TYPE_LINEAR,
+ time, newvol);
+ pa_sink_input_set_volume_ramp (sinp, &rampvol, true);
+}
+
+const char *agl_utils_get_card_name (pa_card *card)
{
return (card && card->name) ? card->name : "<unknown>";
}
-const char *pa_utils_get_card_bus (pa_card *card)
+const char *agl_utils_get_card_bus (pa_card *card)
{
const char *bus = NULL;
const char *name;
if (card && !(bus = pa_proplist_gets (card->proplist,PA_PROP_DEVICE_BUS))) {
- name = pa_utils_get_card_name (card);
+ name = agl_utils_get_card_name (card);
if (!strncmp (name, "alsa_card.", 10)) {
if (!strncmp (name + 10, "pci-", 4))
bus = "pci";
return (char *)bus;
}
-const char *pa_utils_get_sink_name (pa_sink *sink)
+const char *agl_utils_get_sink_name (pa_sink *sink)
{
return (sink && sink->name) ? sink->name : "<unknown>";
}
-const char *pa_utils_get_source_name (pa_source *source)
+const char *agl_utils_get_source_name (pa_source *source)
{
return (source && source->name) ? source->name : "<unknown>";
}
-const char *pa_utils_get_sink_input_name (pa_sink_input *sinp)
+const char *agl_utils_get_sink_input_name (pa_sink_input *sinp)
{
char *name = NULL;
return (const char *)name;
}
-const char *pa_utils_get_source_output_name (pa_source_output *sout)
+const char *agl_utils_get_source_output_name (pa_source_output *sout)
{
char *name = NULL;
return (const char *)name;
}
-pa_sink *pa_utils_get_primary_alsa_sink (struct userdata *u)
+pa_sink *agl_utils_get_primary_alsa_sink (struct userdata *u)
{
pa_core *core;
pa_sink *sink;
- int idx;
+ uint32_t idx;
pa_assert (u);
pa_assert_se ((core = u->core));
return NULL;
}
-void pa_utils_init_stamp (void)
+pa_sink *agl_utils_get_alsa_sink (struct userdata *u, const char *name)
+{
+ pa_core *core;
+ pa_sink *sink;
+ uint32_t idx;
+
+ pa_assert (u);
+ pa_assert_se ((core = u->core));
+
+ PA_IDXSET_FOREACH(sink, core->sinks, idx) {
+ if (sink->name && strstr (sink->name, "alsa_output")
+ && strstr (sink->name, name))
+ return sink;
+ }
+
+ return NULL;
+}
+
+void agl_utils_init_stamp (void)
{
stamp = 0;
}
-uint32_t pa_utils_new_stamp (void)
+uint32_t agl_utils_new_stamp (void)
{
return ++stamp;
}
-uint32_t pa_utils_get_stamp (void)
+uint32_t agl_utils_get_stamp (void)
{
return stamp;
}
-char *pa_utils_get_zone (pa_proplist *pl, pa_proplist *client_props)
+char *agl_utils_get_zone (pa_proplist *pl, pa_proplist *client_props)
{
const char *zone;
return (char *)zone;
}
-bool pa_utils_set_stream_routing_properties (pa_proplist *pl, int styp, void *target)
+bool agl_utils_set_stream_routing_properties (pa_proplist *pl, int styp, void *target)
{
const char *clnam; /* will become "agl_player" e.g. */
char clid[32]; /* will become "1" e.g. */
return true;
}
-bool pa_utils_unset_stream_routing_properties (pa_proplist *pl)
+bool agl_utils_unset_stream_routing_properties (pa_proplist *pl)
{
pa_assert (pl);