diff options
author | Lajos Molnar <lajos@google.com> | 2015-07-01 12:06:40 -0700 |
---|---|---|
committer | Lajos Molnar <lajos@google.com> | 2015-07-01 12:08:07 -0700 |
commit | 49605e8ab171a2b1f474645d632d3982f5f7b8e6 (patch) | |
tree | 003d3960bddc796b438873a4d41c0c02b0cf6eee /media/libstagefright/omx/GraphicBufferSource.cpp | |
parent | 2065710591ebb59b76df8b34866d53d3ae022c2b (diff) | |
download | frameworks_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.cpp | 13 |
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) { |