diff options
Diffstat (limited to 'media/libstagefright/omx')
-rw-r--r-- | media/libstagefright/omx/GraphicBufferSource.cpp | 14 | ||||
-rw-r--r-- | media/libstagefright/omx/SoftVideoEncoderOMXComponent.cpp | 11 |
2 files changed, 23 insertions, 2 deletions
diff --git a/media/libstagefright/omx/GraphicBufferSource.cpp b/media/libstagefright/omx/GraphicBufferSource.cpp index 31c6975..19f0a37 100644 --- a/media/libstagefright/omx/GraphicBufferSource.cpp +++ b/media/libstagefright/omx/GraphicBufferSource.cpp @@ -23,6 +23,7 @@ #include "GraphicBufferSource.h" #include <OMX_Core.h> +#include <OMX_IndexExt.h> #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/AMessage.h> @@ -152,7 +153,18 @@ GraphicBufferSource::GraphicBufferSource( BufferQueue::createBufferQueue(&mProducer, &mConsumer); mConsumer->setConsumerName(name); - mConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_VIDEO_ENCODER); + + // query consumer usage bits 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); + mInitCheck = mConsumer->setMaxAcquiredBufferCount(bufferCount); if (mInitCheck != NO_ERROR) { ALOGE("Unable to set BQ max acquired buffer count to %u: %d", diff --git a/media/libstagefright/omx/SoftVideoEncoderOMXComponent.cpp b/media/libstagefright/omx/SoftVideoEncoderOMXComponent.cpp index 9dd26fb..8ea7a6e 100644 --- a/media/libstagefright/omx/SoftVideoEncoderOMXComponent.cpp +++ b/media/libstagefright/omx/SoftVideoEncoderOMXComponent.cpp @@ -34,6 +34,8 @@ #include <ui/GraphicBuffer.h> #include <ui/GraphicBufferMapper.h> +#include <OMX_IndexExt.h> + namespace android { const static OMX_COLOR_FORMATTYPE kSupportedColorFormats[] = { @@ -293,7 +295,7 @@ OMX_ERRORTYPE SoftVideoEncoderOMXComponent::internalSetParameter( OMX_ERRORTYPE SoftVideoEncoderOMXComponent::internalGetParameter( OMX_INDEXTYPE index, OMX_PTR param) { - switch (index) { + switch ((int)index) { case OMX_IndexParamVideoErrorCorrection: { return OMX_ErrorNotImplemented; @@ -343,6 +345,13 @@ OMX_ERRORTYPE SoftVideoEncoderOMXComponent::internalGetParameter( return OMX_ErrorNone; } + case OMX_IndexParamConsumerUsageBits: + { + OMX_U32 *usageBits = (OMX_U32 *)param; + *usageBits = GRALLOC_USAGE_SW_READ_OFTEN; + return OMX_ErrorNone; + } + default: return SimpleSoftOMXComponent::internalGetParameter(index, param); } |