diff options
Diffstat (limited to 'libs/audioflinger/AudioMixer.h')
-rw-r--r-- | libs/audioflinger/AudioMixer.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/libs/audioflinger/AudioMixer.h b/libs/audioflinger/AudioMixer.h index 9aa92ed..e0438196 100644 --- a/libs/audioflinger/AudioMixer.h +++ b/libs/audioflinger/AudioMixer.h @@ -32,6 +32,13 @@ namespace android { #define LIKELY( exp ) (__builtin_expect( (exp) != 0, true )) #define UNLIKELY( exp ) (__builtin_expect( (exp) != 0, false )) +struct dither_t { + /* Dithering variables */ + int32_t errorL, errorR; + int32_t lipshitzL[4], lipshitzR[4]; + int32_t oldDither; +}; + // ---------------------------------------------------------------------------- class AudioMixer @@ -86,7 +93,7 @@ public: uint32_t trackNames() const { return mTrackNames; } - static void ditherAndClamp(int32_t* out, int32_t const *sums, size_t c); + static void ditherAndClamp(dither_t* dither, int32_t* out, const int32_t* sums, size_t c); private: enum { @@ -162,7 +169,10 @@ private: int32_t *outputTemp; int32_t *resampleTemp; int32_t reserved[2]; - track_t tracks[32]; __attribute__((aligned(32))); + track_t tracks[32]; + + dither_t dither; + __attribute__((aligned(32))); }; int mActiveTrack; @@ -174,6 +184,7 @@ private: void invalidateState(uint32_t mask); + static int32_t lipshitz(int32_t* state, int32_t input); static void track__genericResample(track_t* t, int32_t* out, size_t numFrames, int32_t* temp, AudioDSP& dsp); static void track__nop(track_t* t, int32_t* out, size_t numFrames, int32_t* temp, AudioDSP& dsp); static void volumeRampStereo(track_t* t, int32_t* out, size_t frameCount, int32_t* temp, AudioDSP& dsp); |