diff options
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerSource.h')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerSource.h | 53 |
1 files changed, 50 insertions, 3 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerSource.h b/media/libmediaplayerservice/nuplayer/NuPlayerSource.h index 66aeff3..e50533a 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerSource.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayerSource.h @@ -20,15 +20,44 @@ #include "NuPlayer.h" +#include <media/stagefright/foundation/AMessage.h> + namespace android { struct ABuffer; +struct MetaData; + +struct NuPlayer::Source : public AHandler { + enum Flags { + FLAG_CAN_PAUSE = 1, + FLAG_CAN_SEEK_BACKWARD = 2, // the "10 sec back button" + FLAG_CAN_SEEK_FORWARD = 4, // the "10 sec forward button" + FLAG_CAN_SEEK = 8, // the "seek bar" + FLAG_DYNAMIC_DURATION = 16, + }; + + enum { + kWhatPrepared, + kWhatFlagsChanged, + kWhatVideoSizeChanged, + kWhatBufferingStart, + kWhatBufferingEnd, + kWhatSubtitleData, + kWhatQueueDecoderShutdown, + }; + + // The provides message is used to notify the player about various + // events. + Source(const sp<AMessage> ¬ify) + : mNotify(notify) { + } -struct NuPlayer::Source : public RefBase { - Source() {} + virtual void prepareAsync() = 0; virtual void start() = 0; virtual void stop() {} + virtual void pause() {} + virtual void resume() {} // Returns OK iff more data was available, // an error or ERROR_END_OF_STREAM if not. @@ -43,20 +72,38 @@ struct NuPlayer::Source : public RefBase { return INVALID_OPERATION; } + virtual status_t getTrackInfo(Parcel* reply) const { + return INVALID_OPERATION; + } + + virtual status_t selectTrack(size_t trackIndex, bool select) { + return INVALID_OPERATION; + } + virtual status_t seekTo(int64_t seekTimeUs) { return INVALID_OPERATION; } - virtual bool isSeekable() { + virtual bool isRealTime() const { return false; } protected: virtual ~Source() {} + virtual void onMessageReceived(const sp<AMessage> &msg); + virtual sp<MetaData> getFormatMeta(bool audio) { return NULL; } + sp<AMessage> dupNotify() const { return mNotify->dup(); } + + void notifyFlagsChanged(uint32_t flags); + void notifyVideoSizeChanged(int32_t width, int32_t height); + void notifyPrepared(status_t err = OK); + private: + sp<AMessage> mNotify; + DISALLOW_EVIL_CONSTRUCTORS(Source); }; |