21 #ifndef __JackAC3Encoder__
22 #define __JackAC3Encoder__
24 #include <aften/aften.h>
25 #include <aften/aften-types.h>
30 #define MAX_AC3_CHANNELS 6
32 #define SPDIF_HEADER_SIZE 8
33 #define SPDIF_FRAME_SIZE 6144
35 #define SAMPLE_MAX_16BIT 32768.0f
36 #define SAMPLE_MAX_24BIT 8388608.0f
44 unsigned int channels;
47 unsigned int sample_rate;
56 AftenContext fAftenContext;
60 unsigned char* fAC3Buffer;
61 unsigned char* fZeroBuffer;
65 jack_nframes_t fFramePos;
66 jack_nframes_t fSampleRate;
67 jack_nframes_t fByteRate;
69 void FillSpdifHeader(
unsigned char* buf,
int outsize);
70 int Output2Driver(
float** outputs, jack_nframes_t nframes);
72 void sample_move_dS_s16(jack_default_audio_sample_t* dst,
char *src, jack_nframes_t nsamples,
unsigned long src_skip);
73 void sample_move_dS_s16_24ph(jack_default_audio_sample_t* dst,
char *src, jack_nframes_t nsamples,
unsigned long src_skip);
81 bool Init(jack_nframes_t sample_rate) {
return false;}
83 void Process(
float** inputs,
float** outputs,
int nframes) {}
84 void GetChannelName(
const char* name,
const char* alias,
char* portname,
int channel) {}
89 bool Init(jack_nframes_t sample_rate);
91 void Process(
float** inputs,
float** outputs,
int nframes);
92 void GetChannelName(
const char* name,
const char* alias,
char* portname,
int channel);