summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/omx
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2015-06-25 17:04:09 -0700
committerLajos Molnar <lajos@google.com>2015-06-26 17:09:42 -0700
commitc93a13669ce1b5a9e6527b4c86c9d8f5e92be828 (patch)
tree5fb41cc9ed232bdf147470e50d6411bfe435f2d4 /media/libstagefright/omx
parent064b2bf712788d30928b9a8bafecd0f3308d7aa4 (diff)
downloadframeworks_av-c93a13669ce1b5a9e6527b4c86c9d8f5e92be828.zip
frameworks_av-c93a13669ce1b5a9e6527b4c86c9d8f5e92be828.tar.gz
frameworks_av-c93a13669ce1b5a9e6527b4c86c9d8f5e92be828.tar.bz2
stagefright: ask for flex-YUV camera buffers for software encoders
Bug: 13222807 Change-Id: I854b73a63cf9239311729598241725d84e8513aa
Diffstat (limited to 'media/libstagefright/omx')
-rw-r--r--media/libstagefright/omx/GraphicBufferSource.cpp14
-rw-r--r--media/libstagefright/omx/SoftVideoEncoderOMXComponent.cpp11
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);
}