GraphicBufferSource: Use 64bit consumer usage
Bug: 185896428
Change-Id: I7319e37766f636b86b831f9a2e784f9dde684935
Merged-In: I7319e37766f636b86b831f9a2e784f9dde684935
diff --git a/media/codec2/sfplugin/C2OMXNode.cpp b/media/codec2/sfplugin/C2OMXNode.cpp
index ed7d69c..92cfe31 100644
--- a/media/codec2/sfplugin/C2OMXNode.cpp
+++ b/media/codec2/sfplugin/C2OMXNode.cpp
@@ -230,6 +230,12 @@
err = OK;
break;
}
+ case OMX_IndexParamConsumerUsageBits64: {
+ OMX_U64 *usage = (OMX_U64 *)params;
+ *usage = mUsage;
+ err = OK;
+ break;
+ }
case OMX_IndexParamPortDefinition: {
if (size < sizeof(OMX_PARAM_PORTDEFINITIONTYPE)) {
return BAD_VALUE;
@@ -293,6 +299,13 @@
}
mUsage = *((OMX_U32 *)params);
return OK;
+
+ case OMX_IndexParamConsumerUsageBits64:
+ if (size != sizeof(OMX_U64)) {
+ return BAD_VALUE;
+ }
+ mUsage = *((OMX_U64 *)params);
+ return OK;
}
return ERROR_UNSUPPORTED;
}
diff --git a/media/codec2/sfplugin/CCodec.cpp b/media/codec2/sfplugin/CCodec.cpp
index 6295b06..8013f8e 100644
--- a/media/codec2/sfplugin/CCodec.cpp
+++ b/media/codec2/sfplugin/CCodec.cpp
@@ -206,12 +206,19 @@
mNode = new C2OMXNode(comp);
mOmxNode = new hardware::media::omx::V1_0::utils::TWOmxNode(mNode);
mNode->setFrameSize(mWidth, mHeight);
-
// Usage is queried during configure(), so setting it beforehand.
- OMX_U32 usage = mConfig.mUsage & 0xFFFFFFFF;
- (void)mNode->setParameter(
- (OMX_INDEXTYPE)OMX_IndexParamConsumerUsageBits,
- &usage, sizeof(usage));
+ // 64 bit set parameter is existing only in C2OMXNode.
+ OMX_U64 usage64 = mConfig.mUsage;
+ status_t res = mNode->setParameter(
+ (OMX_INDEXTYPE)OMX_IndexParamConsumerUsageBits64,
+ &usage64, sizeof(usage64));
+
+ if (res != OK) {
+ OMX_U32 usage = mConfig.mUsage & 0xFFFFFFFF;
+ (void)mNode->setParameter(
+ (OMX_INDEXTYPE)OMX_IndexParamConsumerUsageBits,
+ &usage, sizeof(usage));
+ }
return GetStatus(mSource->configure(
mOmxNode, static_cast<hardware::graphics::common::V1_0::Dataspace>(mDataSpace)));