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