summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorWei Jia <wjia@google.com>2015-05-07 18:08:27 -0700
committerWei Jia <wjia@google.com>2015-05-11 12:50:00 -0700
commitb6ea1292f8adae45d95c6f37d50c96534219b6d2 (patch)
tree6e7bb052c951853364226209bf4b3309ff542831 /include
parentd975e98aac096b8b0ed600f39c18630ba234ef7d (diff)
downloadframeworks_av-b6ea1292f8adae45d95c6f37d50c96534219b6d2.zip
frameworks_av-b6ea1292f8adae45d95c6f37d50c96534219b6d2.tar.gz
frameworks_av-b6ea1292f8adae45d95c6f37d50c96534219b6d2.tar.bz2
MediaSync: support changing surface on the fly.
Bug: 19666434 Change-Id: I5809df2d3bb0dd6b4a982f11d62c4b7a452ed6fb
Diffstat (limited to 'include')
-rw-r--r--include/media/stagefright/MediaSync.h12
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);