diff options
author | Wei Jia <wjia@google.com> | 2015-05-12 23:46:53 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-12 23:46:53 +0000 |
commit | 94183482a089690278fbe2346fa6946c9c7d97ef (patch) | |
tree | 8127c65f4280eca22817c9ecf71457308ca7796f /include | |
parent | 9586592ed94478af8ab2feb921459aa63a402970 (diff) | |
parent | b6ea1292f8adae45d95c6f37d50c96534219b6d2 (diff) | |
download | frameworks_av-94183482a089690278fbe2346fa6946c9c7d97ef.zip frameworks_av-94183482a089690278fbe2346fa6946c9c7d97ef.tar.gz frameworks_av-94183482a089690278fbe2346fa6946c9c7d97ef.tar.bz2 |
Merge "MediaSync: support changing surface on the fly." into mnc-dev
Diffstat (limited to 'include')
-rw-r--r-- | include/media/stagefright/MediaSync.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/include/media/stagefright/MediaSync.h b/include/media/stagefright/MediaSync.h index d1d634d..1eef211 100644 --- a/include/media/stagefright/MediaSync.h +++ b/include/media/stagefright/MediaSync.h @@ -169,7 +169,7 @@ private: class OutputListener : public BnProducerListener, public IBinder::DeathRecipient { public: - OutputListener(const sp<MediaSync> &sync); + OutputListener(const sp<MediaSync> &sync, const sp<IGraphicBufferProducer> &output); virtual ~OutputListener(); // From IProducerListener @@ -180,6 +180,7 @@ private: private: sp<MediaSync> mSync; + sp<IGraphicBufferProducer> mOutput; }; // mIsAbandoned is set to true when the input or output dies. @@ -192,6 +193,7 @@ private: size_t mNumOutstandingBuffers; sp<IGraphicBufferConsumer> mInput; sp<IGraphicBufferProducer> mOutput; + int mUsageFlagsFromOutput; sp<AudioTrack> mAudioTrack; uint32_t mNativeSampleRateInHz; @@ -207,6 +209,12 @@ private: // and that could cause problem if the producer of |mInput| only // supports pre-registered buffers. KeyedVector<uint64_t, sp<GraphicBuffer> > mBuffersFromInput; + + // Keep track of buffers sent to |mOutput|. When a new output surface comes + // in, those buffers will be returned to input and old output surface will + // be disconnected immediately. + KeyedVector<uint64_t, sp<GraphicBuffer> > mBuffersSentToOutput; + sp<ALooper> mLooper; float mPlaybackRate; @@ -241,7 +249,7 @@ private: // It gets called from an OutputListener. // During this callback, we detach the buffer from the output, and release // it to the input. A blocked onFrameAvailable call will be allowed to proceed. - void onBufferReleasedByOutput(); + void onBufferReleasedByOutput(sp<IGraphicBufferProducer> &output); // Return |buffer| back to the input. void returnBufferToInput_l(const sp<GraphicBuffer> &buffer, const sp<Fence> &fence); |