int main(int argc, char *argv[]) { pid_t pID = fork(); if(pID == 0) { // child pa_devicelist_t pa_input_devicelist[16]; pa_devicelist_t pa_output_devicelist[16]; if (pa_get_devicelist(pa_input_devicelist, pa_output_devicelist) < 0) { fprintf(stderr, "failed to get device list\n"); return 1; } init_app_indicator(argc, argv); fill_app_indicator(pa_input_devicelist, pa_output_devicelist); gtk_main (); return 0; } else if(pID < 0) { fprintf(stderr, "Failed to fork\n"); exit(1); } else { return 0; } }
char * getpavolume(void) { uint8_t ctr; char * result; pa_devicelist_t pa_output_devicelist[16]; result = smprintf("vol: "); if (pa_get_devicelist(pa_output_devicelist) < 0) { return smprintf("ERR"); } for (ctr = 0; ctr < 16; ctr++) { if (! pa_output_devicelist[ctr].initialized) { continue; } if ( pa_output_devicelist[ctr].mute ) { char * tmp_res = result ; result = smprintf("%s mute", tmp_res) ; free(tmp_res); } else { char * tmp_res = result; result = smprintf("%s %d%%", tmp_res, (pa_cvolume_avg(&pa_output_devicelist[ctr].volume)*100)/PA_VOLUME_NORM); free(tmp_res); } } return result; }
/* * init pulseaudio api * args: * none * * asserts: * none * * returns: pointer to audio context data * or NULL if error */ audio_context_t *audio_init_pulseaudio() { audio_context_t *audio_ctx = calloc(1, sizeof(audio_context_t)); if(audio_ctx == NULL) { fprintf(stderr,"AUDIO: FATAL memory allocation failure (audio_init_pulseaudio): %s\n", strerror(errno)); exit(-1); } if (pa_get_devicelist(audio_ctx) < 0) { fprintf(stderr, "AUDIO: Pulseaudio failed to get audio device list from PULSE server\n"); free(audio_ctx); return NULL; } audio_ctx->api = AUDIO_PULSE; return audio_ctx; }
void ManglerPulse::getDeviceList(std::vector<ManglerAudioDevice*>& inputDevices, std::vector<ManglerAudioDevice*>& outputDevices) { int ctr; // This is where we'll store the input device list pa_devicelist_t pa_input_devicelist[16]; // This is where we'll store the output device list pa_devicelist_t pa_output_devicelist[16]; if (pa_get_devicelist(pa_input_devicelist, pa_output_devicelist) < 0) { fprintf(stderr, "pulse: failed to get device list; is pulseaudio running?\n"); return; } for (ctr = 0; ctr < 16; ctr++) { if (! pa_output_devicelist[ctr].initialized) { break; } outputDevices.push_back( new ManglerAudioDevice( pa_output_devicelist[ctr].index, pa_output_devicelist[ctr].name, pa_output_devicelist[ctr].description) ); } for (ctr = 0; ctr < 16; ctr++) { if (! pa_input_devicelist[ctr].initialized) { break; } inputDevices.push_back( new ManglerAudioDevice( pa_input_devicelist[ctr].index, pa_input_devicelist[ctr].name, pa_input_devicelist[ctr].description) ); } return; }
static void AudioDevices(std::vector<AudioDeviceInfo> &devices) { pa_get_devicelist(devices); }