diff options
author | Wei Jia <wjia@google.com> | 2014-11-11 16:33:20 -0800 |
---|---|---|
committer | Wei Jia <wjia@google.com> | 2014-11-14 14:23:52 -0800 |
commit | c6cfd70f24a11b946859485ce398a189c301a4e2 (patch) | |
tree | 47238c67d7cf5f6bfdf6845c64966e5e1692eb12 /media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h | |
parent | 12acd3f0374e7707ff50c04f8075883be71b128c (diff) | |
download | frameworks_av-c6cfd70f24a11b946859485ce398a189c301a4e2.zip frameworks_av-c6cfd70f24a11b946859485ce398a189c301a4e2.tar.gz frameworks_av-c6cfd70f24a11b946859485ce398a189c301a4e2.tar.bz2 |
NuPlayer: tunnel decoder with renderer for data buffer passing.
Bug: 18342383
Change-Id: I182928007814c146c01a86196c4fda1d46e74ea4
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h index dba3eee..c6ceb4e 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h @@ -30,11 +30,15 @@ struct MediaBuffer; struct NuPlayer::Decoder : public AHandler { Decoder(const sp<AMessage> ¬ify, + const sp<Source> &source, + const sp<Renderer> &renderer = NULL, const sp<NativeWindowWrapper> &nativeWindow = NULL); virtual void configure(const sp<AMessage> &format); virtual void init(); + virtual void setRenderer(const sp<Renderer> &renderer); + status_t getInputBuffers(Vector<sp<ABuffer> > *dstBuffers) const; virtual void signalFlush(const sp<AMessage> &format = NULL); virtual void signalUpdateFormat(const sp<AMessage> &format); @@ -45,8 +49,8 @@ struct NuPlayer::Decoder : public AHandler { enum { kWhatFillThisBuffer = 'flTB', - kWhatDrainThisBuffer = 'drTB', - kWhatOutputFormatChanged = 'fmtC', + kWhatRenderBufferTime = 'rnBT', + kWhatVideoSizeChanged = 'viSC', kWhatFlushCompleted = 'flsC', kWhatShutdownCompleted = 'shDC', kWhatEOS = 'eos ', @@ -59,10 +63,10 @@ protected: virtual void onMessageReceived(const sp<AMessage> &msg); -private: enum { kWhatCodecNotify = 'cdcN', kWhatConfigure = 'conf', + kWhatSetRenderer = 'setR', kWhatGetInputBuffers = 'gInB', kWhatInputBufferFilled = 'inpF', kWhatRenderBuffer = 'rndr', @@ -71,9 +75,13 @@ private: kWhatUpdateFormat = 'uFmt', }; +private: sp<AMessage> mNotify; sp<NativeWindowWrapper> mNativeWindow; + sp<Source> mSource; + sp<Renderer> mRenderer; + sp<AMessage> mInputFormat; sp<AMessage> mOutputFormat; sp<MediaCodec> mCodec; @@ -89,6 +97,8 @@ private: Vector<bool> mInputBufferIsDequeued; Vector<MediaBuffer *> mMediaBuffers; + int64_t mSkipRenderingUntilMediaTimeUs; + void handleError(int32_t err); bool handleAnInputBuffer(); bool handleAnOutputBuffer(); @@ -110,6 +120,7 @@ private: bool supportsSeamlessAudioFormatChange(const sp<AMessage> &targetFormat) const; void rememberCodecSpecificData(const sp<AMessage> &format); + bool isVideo(); DISALLOW_EVIL_CONSTRUCTORS(Decoder); }; |