diff options
author | Andreas Huber <andih@google.com> | 2012-08-29 11:41:50 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2012-08-29 15:06:57 -0700 |
commit | d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480c (patch) | |
tree | 3c4c7a83313d169b13c79c9660afeb804d27b975 /media/libstagefright/wifi-display/source/RepeaterSource.h | |
parent | eb941f9a0c8474324732a99387cc6d8cb4ab01ef (diff) | |
download | frameworks_av-d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480c.zip frameworks_av-d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480c.tar.gz frameworks_av-d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480c.tar.bz2 |
Initial checkin of support for acting as a wifi display source
Change-Id: I08f17efa0c7d007e17408feb7d4fbef0a19f531a
Diffstat (limited to 'media/libstagefright/wifi-display/source/RepeaterSource.h')
-rw-r--r-- | media/libstagefright/wifi-display/source/RepeaterSource.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/media/libstagefright/wifi-display/source/RepeaterSource.h b/media/libstagefright/wifi-display/source/RepeaterSource.h new file mode 100644 index 0000000..31eb5cd --- /dev/null +++ b/media/libstagefright/wifi-display/source/RepeaterSource.h @@ -0,0 +1,55 @@ +#ifndef REPEATER_SOURCE_H_ + +#define REPEATER_SOURCE_H_ + +#include <media/stagefright/foundation/ABase.h> +#include <media/stagefright/foundation/AHandlerReflector.h> +#include <media/stagefright/MediaSource.h> + +namespace android { + +// This MediaSource delivers frames at a constant rate by repeating buffers +// if necessary. +struct RepeaterSource : public MediaSource { + RepeaterSource(const sp<MediaSource> &source, double rateHz); + + virtual status_t start(MetaData *params); + virtual status_t stop(); + virtual sp<MetaData> getFormat(); + + virtual status_t read( + MediaBuffer **buffer, const ReadOptions *options); + + void onMessageReceived(const sp<AMessage> &msg); + +protected: + virtual ~RepeaterSource(); + +private: + enum { + kWhatRead, + }; + + Mutex mLock; + Condition mCondition; + + sp<MediaSource> mSource; + double mRateHz; + + sp<ALooper> mLooper; + sp<AHandlerReflector<RepeaterSource> > mReflector; + + MediaBuffer *mBuffer; + status_t mResult; + + int64_t mStartTimeUs; + int32_t mFrameCount; + + void postRead(); + + DISALLOW_EVIL_CONSTRUCTORS(RepeaterSource); +}; + +} // namespace android + +#endif // REPEATER_SOURCE_H_ |