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;
}
Exemple #3
0
/*
 * 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;
}
Exemple #4
0
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);
	}