aboutsummaryrefslogtreecommitdiff
path: root/pavolctrld.c
diff options
context:
space:
mode:
authorTimmy Keller <tjk@tjkeller.xyz>2024-10-04 21:58:41 -0500
committerTimmy Keller <tjk@tjkeller.xyz>2024-10-04 21:58:41 -0500
commit9b0904a59af7e8c02cd2039a1cd18926bee51e72 (patch)
tree62851da62195d5a45b389722e721bb61205e9d4a /pavolctrld.c
parent411c2c65284efabf4d64c6a161bcddebbdc2534d (diff)
downloadpavolctld-9b0904a59af7e8c02cd2039a1cd18926bee51e72.tar.xz
pavolctld-9b0904a59af7e8c02cd2039a1cd18926bee51e72.zip
add command for volume control and change name to pavolctld
Diffstat (limited to 'pavolctrld.c')
-rw-r--r--pavolctrld.c105
1 files changed, 0 insertions, 105 deletions
diff --git a/pavolctrld.c b/pavolctrld.c
deleted file mode 100644
index dc56292..0000000
--- a/pavolctrld.c
+++ /dev/null
@@ -1,105 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <pulse/pulseaudio.h>
-
-//TODO pa_operation_unref(o);
-
-static int default_sink_index;
-
-
-static void sink_info_volume_callback(pa_context *c, const pa_sink_info *i, int eol, void *userdata) {
- pa_volume_t vol;
- if (eol) return;
-
- vol = pa_cvolume_avg(&i->volume);
- printf("v%d,%d,%.02f,%d\n", i->index, vol*100/PA_VOLUME_NORM, pa_sw_volume_to_dB(vol), i->mute);
- fflush(stdout);
-}
-
-static void sink_info_default_index_callback(pa_context *c, const pa_sink_info *i, int eol, void *userdata) {
- if (eol) return;
- default_sink_index = i->index;
-}
-
-static void sink_info_sink_desc_callback(pa_context *c, const pa_sink_info *i, int eol, void *userdata) {
- if (eol) return;
- printf("s%d,%s,%s\n", i->index, i->name, i->description);
- fflush(stdout);
-}
-
-static void server_info_default_sink_callback(pa_context *c, const pa_server_info *i, void *userdata) {
- pa_context_get_sink_info_by_name(c, i->default_sink_name, sink_info_default_index_callback, userdata);
- printf("f%d\n", default_sink_index);
- fflush(stdout);
-}
-
-static void subscription_callback(pa_context *c, pa_subscription_event_type_t t, uint32_t idx, void *userdata) {
- switch (t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) {
- case PA_SUBSCRIPTION_EVENT_SINK:
- // check if sink was removed
- if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {
- printf("x%d\n", idx);
- fflush(stdout);
- return;
- }
-
- // check if sink was added
- if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_NEW)
- pa_context_get_sink_info_by_index(c, idx, sink_info_sink_desc_callback, userdata);
-
- // output the volume
- pa_context_get_sink_info_by_index(c, idx, sink_info_volume_callback, userdata);
- break;
- case PA_SUBSCRIPTION_EVENT_SERVER:
- pa_context_get_server_info(c, server_info_default_sink_callback, userdata);
- break;
- }
-}
-
-static void context_state_callback(pa_context *c, void *userdata) {
- if (pa_context_get_state(c) == PA_CONTEXT_READY) {
- pa_context_set_subscribe_callback(c, subscription_callback, userdata);
-
- // output initial default sink
- pa_context_get_server_info(c, server_info_default_sink_callback, userdata);
-
- // output initial sink descriptions for each sink
- pa_context_get_sink_info_list(c, sink_info_sink_desc_callback, userdata);
-
- // output initial volume levels for each sink
- pa_context_get_sink_info_list(c, sink_info_volume_callback, userdata);
-
- // subscribe to sink & server events to listen to changes
- pa_context_subscribe(c, PA_SUBSCRIPTION_MASK_SINK|PA_SUBSCRIPTION_MASK_SERVER, NULL, NULL);
- }
-}
-
-int main() {
- pa_threaded_mainloop *mainloop = pa_threaded_mainloop_new();
- pa_mainloop_api *mainloop_api = pa_threaded_mainloop_get_api(mainloop);
- pa_context *context = pa_context_new(mainloop_api, "pavolctrld");
- char stdin_buffer[256];
-
- pa_context_connect(context, NULL, PA_CONTEXT_NOAUTOSPAWN, NULL);
-
- pa_context_set_state_callback(context, context_state_callback, NULL);
-
- // main loop
- pa_threaded_mainloop_start(mainloop);
-
- while(1) {
- if (fgets(stdin_buffer, sizeof(stdin_buffer), stdin) != NULL) {
- printf("You entered: %s", stdin_buffer);
- fflush(stdout);
- }
- }
-
- // clean up
- pa_context_disconnect(context);
- pa_context_unref(context);
- pa_threaded_mainloop_free(mainloop);
-
- return 0;
-}
-