1#ifndef SINE_SOURCE_H_
2
3#define SINE_SOURCE_H_
4
5#include <media/stagefright/MediaSource.h>
6#include <utils/Compat.h>
7
8namespace android {
9
10class MediaBufferGroup;
11
12struct SineSource : public MediaSource {
13    SineSource(int32_t sampleRate, int32_t numChannels);
14
15    virtual status_t start(MetaData *params);
16    virtual status_t stop();
17
18    virtual sp<MetaData> getFormat();
19
20    virtual status_t read(
21            MediaBuffer **out, const ReadOptions *options = NULL);
22
23protected:
24    virtual ~SineSource();
25
26private:
27    enum { kBufferSize = 8192 };
28    static const CONSTEXPR double kFrequency = 500.0;
29
30    bool mStarted;
31    int32_t mSampleRate;
32    int32_t mNumChannels;
33    size_t mPhase;
34
35    MediaBufferGroup *mGroup;
36};
37
38}  // namespace android
39
40#endif // SINE_SOURCE_H_
41