diff options
Diffstat (limited to 'services/audioflinger/AudioMixer.h')
| -rw-r--r-- | services/audioflinger/AudioMixer.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/services/audioflinger/AudioMixer.h b/services/audioflinger/AudioMixer.h index b210212..856450c 100644 --- a/services/audioflinger/AudioMixer.h +++ b/services/audioflinger/AudioMixer.h @@ -31,7 +31,8 @@ namespace android { class AudioMixer { public: - AudioMixer(size_t frameCount, uint32_t sampleRate); + AudioMixer(size_t frameCount, uint32_t sampleRate, + uint32_t maxNumTracks = MAX_NUM_TRACKS); /*virtual*/ ~AudioMixer(); // non-virtual saves a v-table, restore if sub-classed @@ -70,9 +71,14 @@ public: // For all APIs with "name": TRACK0 <= name < TRACK0 + MAX_NUM_TRACKS + + // Allocate a track name. Returns new track name if successful, -1 on failure. int getTrackName(); + + // Free an allocated track by name void deleteTrackName(int name); + // Enable or disable an allocated track by name void enable(int name); void disable(int name); @@ -184,11 +190,17 @@ private: int32_t *outputTemp; int32_t *resampleTemp; int32_t reserved[2]; + // FIXME allocate dynamically to save some memory when maxNumTracks < MAX_NUM_TRACKS track_t tracks[MAX_NUM_TRACKS]; __attribute__((aligned(32))); }; // bitmask of allocated track names, where bit 0 corresponds to TRACK0 etc. uint32_t mTrackNames; + + // bitmask of configured track names; ~0 if maxNumTracks == MAX_NUM_TRACKS, + // but will have fewer bits set if maxNumTracks < MAX_NUM_TRACKS + const uint32_t mConfiguredNames; + const uint32_t mSampleRate; state_t mState __attribute__((aligned(32))); |
