blob: b24f2eb4a4a6f392b05ce7ad5678d4375ae4b1cd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ANDROID_AUDIO_FAST_MIXER_H
#define ANDROID_AUDIO_FAST_MIXER_H
#include <utils/Thread.h>
extern "C" {
#include "../private/bionic_futex.h"
}
#include "StateQueue.h"
#include "FastMixerState.h"
namespace android {
typedef StateQueue<FastMixerState> FastMixerStateQueue;
class FastMixer : public Thread {
public:
FastMixer() : Thread(false /*canCallJava*/) { }
virtual ~FastMixer() { }
FastMixerStateQueue* sq() { return &mSQ; }
private:
virtual bool threadLoop();
FastMixerStateQueue mSQ;
}; // class FastMixer
// The FastMixerDumpState keeps a cache of FastMixer statistics that can be logged by dumpsys.
// Since used non-atomically, only POD types are permitted, and the contents can't be trusted.
// It has a different lifetime than the FastMixer, and so it can't be a member of FastMixer.
struct FastMixerDumpState {
FastMixerDumpState();
/*virtual*/ ~FastMixerDumpState();
void dump(int fd);
FastMixerState::Command mCommand; // current command
uint32_t mWriteSequence; // incremented before and after each write()
uint32_t mFramesWritten; // total number of frames written successfully
uint32_t mNumTracks; // total number of active fast tracks
uint32_t mWriteErrors; // total number of write() errors
uint32_t mUnderruns; // total number of underruns
uint32_t mOverruns; // total number of overruns
#ifdef FAST_MIXER_STATISTICS
// cycle times in seconds
float mMean;
float mMinimum;
float mMaximum;
float mStddev;
#endif
};
} // namespace android
#endif // ANDROID_AUDIO_FAST_MIXER_H
|