summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/omx/GraphicBufferSource.cpp
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2015-07-01 12:06:40 -0700
committerLajos Molnar <lajos@google.com>2015-07-01 12:08:07 -0700
commit49605e8ab171a2b1f474645d632d3982f5f7b8e6 (patch)
tree003d3960bddc796b438873a4d41c0c02b0cf6eee /media/libstagefright/omx/GraphicBufferSource.cpp
parent2065710591ebb59b76df8b34866d53d3ae022c2b (diff)
downloadframeworks_av-49605e8ab171a2b1f474645d632d3982f5f7b8e6.zip
frameworks_av-49605e8ab171a2b1f474645d632d3982f5f7b8e6.tar.gz
frameworks_av-49605e8ab171a2b1f474645d632d3982f5f7b8e6.tar.bz2
stagefright: fix deadlock and NPE in GraphicBufferSource
Bug: 22202388 Change-Id: I04f2f783ecc0e0c50adf16a666f6d7ab4221e285
Diffstat (limited to 'media/libstagefright/omx/GraphicBufferSource.cpp')
-rw-r--r--media/libstagefright/omx/GraphicBufferSource.cpp13
1 files changed, 4 insertions, 9 deletions
diff --git a/media/libstagefright/omx/GraphicBufferSource.cpp b/media/libstagefright/omx/GraphicBufferSource.cpp
index 19f0a37..a424819 100644
--- a/media/libstagefright/omx/GraphicBufferSource.cpp
+++ b/media/libstagefright/omx/GraphicBufferSource.cpp
@@ -111,6 +111,7 @@ GraphicBufferSource::GraphicBufferSource(
uint32_t bufferWidth,
uint32_t bufferHeight,
uint32_t bufferCount,
+ uint32_t consumerUsage,
const sp<IGraphicBufferConsumer> &consumer) :
mInitCheck(UNKNOWN_ERROR),
mNodeInstance(nodeInstance),
@@ -154,16 +155,10 @@ GraphicBufferSource::GraphicBufferSource(
BufferQueue::createBufferQueue(&mProducer, &mConsumer);
mConsumer->setConsumerName(name);
- // query consumer usage bits from encoder, but always add HW_VIDEO_ENCODER
+ // use consumer usage bits queried from encoder, but always add HW_VIDEO_ENCODER
// for backward compatibility.
- uint32_t usageBits;
- status_t err = mNodeInstance->getParameter(
- (OMX_INDEXTYPE)OMX_IndexParamConsumerUsageBits, &usageBits, sizeof(usageBits));
- if (err != OK) {
- usageBits = 0;
- }
- usageBits |= GRALLOC_USAGE_HW_VIDEO_ENCODER;
- mConsumer->setConsumerUsageBits(usageBits);
+ consumerUsage |= GRALLOC_USAGE_HW_VIDEO_ENCODER;
+ mConsumer->setConsumerUsageBits(consumerUsage);
mInitCheck = mConsumer->setMaxAcquiredBufferCount(bufferCount);
if (mInitCheck != NO_ERROR) {