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/BufferQueue.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'libs/gui/BufferQueue.cpp') diff --git a/libs/gui/BufferQueue.cpp b/libs/gui/BufferQueue.cpp index af857fd3ea..8584dc9b3f 100644 --- a/libs/gui/BufferQueue.cpp +++ b/libs/gui/BufferQueue.cpp @@ -93,6 +93,10 @@ status_t BufferQueue::disconnect(int api) { return mProducer->disconnect(api); } +status_t BufferQueue::setSidebandStream(const sp& stream) { + return mProducer->setSidebandStream(stream); +} + status_t BufferQueue::acquireBuffer(BufferItem* buffer, nsecs_t presentWhen) { return mConsumer->acquireBuffer(buffer, presentWhen); } @@ -148,8 +152,19 @@ status_t BufferQueue::setTransformHint(uint32_t hint) { return mConsumer->setTransformHint(hint); } +sp BufferQueue::getSidebandStream() const { + return mConsumer->getSidebandStream(); +} + void BufferQueue::dump(String8& result, const char* prefix) const { mConsumer->dump(result, prefix); } +void BufferQueue::ProxyConsumerListener::onSidebandStreamChanged() { + sp listener(mConsumerListener.promote()); + if (listener != NULL) { + listener->onSidebandStreamChanged(); + } +} + }; // namespace android -- cgit v1.2.3-59-g8ed1b