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