Pulse Audio Sink and Source Enumeration WIP;

This commit is contained in:
lwvmobile
2024-05-19 04:59:26 -04:00
parent f9add0b997
commit e3ecace5db
3 changed files with 275 additions and 1 deletions

View File

@@ -61,6 +61,7 @@
//OSS support
#include <sys/soundcard.h>
#include <pulse/pulseaudio.h> //PULSE AUDIO
#include <pulse/simple.h> //PULSE AUDIO
#include <pulse/error.h> //PULSE AUDIO
#include <pulse/introspect.h> //PULSE AUDIO
@@ -116,6 +117,15 @@ typedef struct {
}NOTCHFilter;
//end new filters
// Field list is here: http://0pointer.de/lennart/projects/pulseaudio/doxygen/structpa__sink__info.html
typedef struct pa_devicelist
{
uint8_t initialized;
char name[512];
uint32_t index;
char description[256];
} pa_devicelist_t;
//group csv import struct
typedef struct
{
@@ -1030,6 +1040,13 @@ void upsampleS (short invalue, short prev, short outbuf[6]); //upsample 8k to 48
void openAudioOutDevice (dsd_opts * opts, int speed);
void openAudioInDevice (dsd_opts * opts);
//pulse sources and sinks
void pa_state_cb(pa_context *c, void *userdata);
void pa_sinklist_cb(pa_context *c, const pa_sink_info *l, int eol, void *userdata);
void pa_sourcelist_cb(pa_context *c, const pa_source_info *l, int eol, void *userdata);
int pa_get_devicelist(pa_devicelist_t *input, pa_devicelist_t *output);
int pulse_list();
int getDibit (dsd_opts * opts, dsd_state * state);
int get_dibit_and_analog_signal (dsd_opts * opts, dsd_state * state, int * out_analog_signal);
int digitize (dsd_opts* opts, dsd_state* state, int symbol);