pulseaudio integration

This commit is contained in:
2024-02-06 16:09:18 +01:00
parent eb570e90fd
commit 85c2e2a842
7 changed files with 888 additions and 456 deletions
+2 -1
View File
@@ -20,6 +20,7 @@
#include <stdint.h>
void paper_init(char* monitor, char* frag_path, uint16_t fps, char* layer_name, uint16_t width, uint16_t height);
void paper_init(char *monitor, char *frag_path, char *pa_src, uint16_t fps,
char *layer_name, uint16_t width, uint16_t height);
#endif
+72
View File
@@ -0,0 +1,72 @@
#ifndef _PULSEFFT_H
#define _PULSEFFT_H
#include <complex.h>
#include <errno.h>
#include <pthread.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <tgmath.h>
#include <unistd.h>
#include <pulse/error.h>
#include <pulse/pulseaudio.h>
#include <pulse/simple.h>
#include <fftw3.h>
typedef struct pa_fft {
pthread_t thread;
int cont;
// Pulseaudio
pa_simple *s;
char *dev;
unsigned int rate;
int error;
pa_sample_spec ss;
pa_channel_map map;
// Buffers
unsigned int samples;
double *pa_buff_l;
double *pa_buff_r;
size_t pa_buff_size;
unsigned int pa_samples;
double *fft_buff;
double *fft_buff_l;
double *fft_buff_r;
size_t fft_buff_size;
unsigned int fft_samples;
// Output buffers
float *pa_output;
size_t pa_output_size;
float *fft_output;
size_t fft_output_size;
// FFTW
fftw_complex *output_l;
fftw_complex *output_r;
size_t output_size;
unsigned int output_samples;
fftw_plan plan_l;
fftw_plan plan_r;
} pa_fft;
void separate_freq_bands(double *out, fftw_complex *in, int n, int *lcf,
int *hcf, float *k, double sensitivity,
int in_samples);
void *pa_fft_thread(void *arg);
void get_pulse_default_sink(pa_fft *pa_fft);
void init_pulse(pa_fft *pa_fft);
void init_buffers(pa_fft *pa_fft);
void init_fft(pa_fft *pa_fft);
void deinit_fft(pa_fft *pa_fft);
#endif // _PULSEFFT_H