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);