From 399184a4cd728ea1421fb0bc1722274a29e38f4a Mon Sep 17 00:00:00 2001 From: Jesse Hall Date: Mon, 3 Mar 2014 15:42:54 -0800 Subject: Add sideband streams to BufferQueue and related classes Sideband streams are essentially a device-specific buffer queue that bypasses the BufferQueue system. They can be used for situations with hard real-time requirements like high-quality TV and video playback with A/V sync. A handle to the stream is provided by the source HAL, and attached to a BufferQueue. The sink HAL can read buffers via the stream handle rather than acquiring individual buffers from the BufferQueue. Change-Id: Ib3f262eddfc520f4bbe3d9b91753ed7dd09d3a9b --- libs/gui/BufferQueueProducer.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'libs/gui/BufferQueueProducer.cpp') diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp index 0e9de88a10..0ff7b80bc7 100644 --- a/libs/gui/BufferQueueProducer.cpp +++ b/libs/gui/BufferQueueProducer.cpp @@ -674,6 +674,7 @@ status_t BufferQueueProducer::disconnect(int api) { } mCore->mConnectedProducerToken = NULL; mCore->mConnectedApi = BufferQueueCore::NO_CONNECTED_API; + mCore->mSidebandStream.clear(); mCore->mDequeueCondition.broadcast(); listener = mCore->mConsumerListener; } else { @@ -697,6 +698,12 @@ status_t BufferQueueProducer::disconnect(int api) { return status; } +status_t BufferQueueProducer::setSidebandStream(const sp& stream) { + Mutex::Autolock _l(mCore->mMutex); + mCore->mSidebandStream = stream; + return NO_ERROR; +} + void BufferQueueProducer::binderDied(const wp& /* who */) { // If we're here, it means that a producer we were connected to died. // We're guaranteed that we are still connected to it because we remove -- cgit v1.2.3-59-g8ed1b