1
/***************************************************************************
2
copyright : (C) 2006 by mean
3
email : fixounet@free.fr
4
***************************************************************************/
7
#ifndef AUDIO_ENCODER_H
8
#define AUDIO_ENCODER_H
10
This structure defines an audio encoder
11
\param encoder Encoder attached to this descriptor
12
\param name The name of the codec
13
\param bitrate The bitrate in kb/s
14
\param configure Function to call to configure the codec
15
\param maxChannels The maximum # of channels this codec supports
16
\param param : An opaque structure that contains the codec specific configuration datas
18
#include "audioeng_buildfilters.h"
19
#include "audiofilter_channel_route.h"
21
typedef struct ADM_audioEncoderDescriptor
24
int (*configure)(ADM_audioEncoderDescriptor *descritor);
33
Base class for all audio encoder.It does the reverse of the bridge class and offers a proper GenericAudioStreamAPI
36
#define DITHER_SIZE 4800
37
#define DITHER_CHANNELS 6
38
void AUDMEncoder_initDither();
39
void dither16(float *start, uint32_t nb, uint8_t channels);
41
//_____________________________________________
42
class AUDMEncoder : public AVDMGenericAudioStream
46
uint32_t grab(uint8_t *outbuffer);
47
uint32_t grab(float *outbuffer) {ADM_assert(0);return 1;}
53
AUDMAudioFilter *_incoming;
54
uint8_t cleanup(void);
57
uint8_t refillBuffer(int minimum); // Mininum is in float
59
CHANNEL_TYPE ch_order[MAX_CHANNELS];
60
void reorderChannels(float *start, uint32_t nb);
62
uint32_t tmphead,tmptail;
65
uint32_t read(uint32_t len,uint8_t *buffer);
66
uint32_t read(uint32_t len,float *buffer) {ADM_assert(0);return 1;}
68
virtual ~AUDMEncoder();
69
AUDMEncoder(AUDMAudioFilter *in);
70
virtual uint8_t init(ADM_audioEncoderDescriptor *config)=0;
71
virtual uint8_t getPacket(uint8_t *dest, uint32_t *len, uint32_t *samples)=0;
72
virtual uint8_t packetPerFrame( void) {return 1;}
73
virtual uint8_t extraData(uint32_t *l,uint8_t **d) {*l=_extraSize;*d=_extraData;return 1;}
74
uint8_t goTo(uint32_t timeMS) {ADM_assert(0);return 1;}